본문 바로가기
  • (개인)정보보호/최신ICT 정보 공유 블로그

나의 서재/22. 소프트웨어 공학 기본원리47

19. 조직 프로세스 개선 1. 조직 프로세스 개선의 정의 -조직의 소프트웨어 품질을 향상시키기 위해 조직의 프로세스를 체계적이고 효율적으로 관리하는 기법 2. 조직 프로세스 개선 기법의 종류 구분 특징 설명 CMMi v1.3 단계적 -프로젝트 개선을 수행할 수 있는 길잡이 -Bottom up -Maturity Level 연속적 -조직의 목표에 따라 특정 프로세스 영역 개선 가이드 -Top Down -역량 수준 CMMi 2.0 -Categories Doing Managing Enabling Improving -4 개의 Process Category(PC)와 12 개의 Capability Area(CA)로 구성 -20개의 Practice Area(PA) -각 PA별 Practice Group(PG)을 충족 시 해당 레벨(Level).. 2022. 1. 23.
18. 소프트웨어 척도 1. 소프트웨어 척도의 개요 가. 소프트웨어 척도의 정의 소프트웨어의 품질 특성을 객관적으로 측정, 평가, 관리하는 소프트웨어 공학의 중요 기법 나. 소프트웨어 척도의 특징 -단순하고 이해가 용이한 척도 -직관적이고 설득력 있는 척도 -일관적이고 객관적인 척도 -품질과 생산성에 대한 정보 피드백 2. 소프트웨어 척도의 측정 프로세스 개념도 및 구성요소 가. 소프트웨어 척도의 측정 프로세스 개념도 나. 소프트웨어 척도의 측정 프로세스 구성요소 구성요소 설명 형성 -소프트웨어 특징을 적절히 표현 가능한 척도 개발 수집 -개발된 척도에 따라 소프트웨어 관련 데이터 수집 분석 -과거 데이터나 미리 수립된 해석 지침에 기초하여 분석 해석 -소프트웨어 품질이나 프로세스를 평가하기 위해 분석 결과 해석 피드백 -평가.. 2022. 1. 23.
17. CASE 도구 1. . CASE의 정의 -소프트웨어 공학 프로세스를 돕기 위해 컴퓨터를 이용하여 자동화를 지원하는 소프트웨어 2. CASE의 분류 구분 분류 설명 활동 지원 상위 CASE 도구 -소프트웨어 개발 주기의 전반부 활동 지원 도구 -계획, 분석, 설계 -ERD, DFD, 구조도, 의사결정도, 의사결정표, UML 다이어그램 생성 지원 하위 CASE 도구 -소프트웨어 개발 주기의 하반부 활동 지원 도구 -구현, 테스트, 유지보수, 재공학, 역공학 지원 기능 비즈니스 프로세스 모델링 -비즈니스 프로세스의 주요 구성요소들을 쉽게 이해할 수 있도록 프로세스 모델링 기능을 지원하는 도구 위험 분석 도구 -위험 식별과 분석을 지원하는 도구 프로젝트 관리 도구 -프로젝트 일정과 계획에 따라 세부 작업에 대한 지속적인 추적.. 2022. 1. 23.
16.1 소프트웨어 3R 1. 소프트웨어 3R의 개요 가. 소프트웨어 3R의 정의 -완성된 소프트웨어 프로그램을 기반으로 역공학, 재공학, 재사용을 통해 소프트웨어의 생산성을 극대화하는 기법 나. 소프트웨어 3R의 필요성 -소프트웨어 유지보수 효율성 향상 및 비용 절감 -소프트웨어 개발 생산성 향상 -소프트웨어 이해, 변경, 테스트 용이 -소프트웨어 변경 요구사항에 대한 신속한 대응 -소프트웨어 위기 극복 2. 소프트웨어 3R의 개념도 및 구성요소 가. 소프트웨어 3R의 개념도 나. 소프트웨어 3R의 구성요소 구분 특징 설명 재공학(Reengineering) -기존 시스템의 품질 향상 -기존 시스템의 새로운 버전 생성 -소프트웨어 수명 연장 -기존 시스템을 새로운 형태로 변경, 개조하여 개발 프로세스를 적용하는 기법 역공학(Re.. 2022. 1. 9.
16. 유지보수 1. 유지보수의 개요 가. 유지보수의 정의 -결함을 고치고, 성능이나 다른 특징들을 개선하며, 변화된 환경에 적응하기 위해 인도 후 소프트웨어 시스템이나 컴포넌트를 수정하는 프로세스 나. 유지보수의 특징 -유지보수 비용이 개발 비용의 대부분 차지 -오픈소스 개발 패러다임 : 타인이 작성한 코드 이해 수정 필수 -코스 이해 및 수정 작업 수행 -인도 전/후 발생되는 모든 변경 활동 -유지보수 대상은 자료, 프로그램, 문서, 시스템 등 포함 -환경 변화에 적응하며 소프트웨어 수명 연장 2. 유지보수의 개념도 및 종류 가. 유지보수의 개념도 구분 Correction Enhancement Proactive Preventive Perfective Reactive Corrective Adaptive 나. 유지보수의.. 2022. 1. 9.
15.3 동적 테스트 1. 동적 테스트의 개요 가. 동적 테스트의 정의 -프로그램 실행 후 실제 발생 오류 발견 및 문제 해결 기법 나. 동적 테스트의 특징 -오류 탐색 정확도 높음 -코드 전체 수행 어려움 -정적 테스트 기법과 병행하여 테스트 수행 -블랙박스 테스트와 화이트박스 테스트로 분류 2. 동적 테스트 케이스 설계 정의 사용자 요구를 만족하는지 입증하기 위해 혹은 프로그램 경로를 시험하기 위해 개발된 테스트 입력, 실행조건, 기대결과들의 집합 특징 -모든 테스트 데이터를 적용하여 테스트 수행 시 컴퓨터 자원과 시간 소모 -주어진 시간에 잠재된 오류를 발견할 가능성이 많은 최소의 테스트 데이터 설계 구분 블랙박스 테스트 화이트박스 테스트 내용 -명세기반/경험기반 테스트 -모듈 내부 구조를 고려하지 않고 시스템 기능이나.. 2022. 1. 3.
15.2 정적 테스트 1. 정적 테스트의 개요 가. 정적 테스트의 정의 -프로그램을 실행하지 않고 테스트하는 비실행 기반 테스트 나. 정적 테스트의 특징 -소프트웨어 개발 과정에서 생산되는 문서(코드, 설계서, 분석서, 계획서, 표준)에 대한 검토를 통해 오류 발견 -동적 테스트와 상호 보완적인 테스트 -개발 초기에 오류 발견/수정을 통한 소프트웨어 품질 개선, 생산량 향상, 비용 절감 가능 -오류를 야기하는 개발자의 부적절한 작업 프로세스 파악, 수정하여 미래 오류예방 가능 -오류가 적은 소프트웨어 개발하도록 개발자 훈련 가능 2. 정적 테스트의 원리 및 기법 가. 정적 테스트의 원리 전문성을 가진 검토자 다양한 전문분야의 지식을 갖춘 검토자를 팀으로 구성 SQA 그룹 대표 주도 품질 보증에 가장 직접적인 책임을 가지기 때.. 2021. 12. 19.
15.1 테스트 분류 구분 분류 설명 실행 정적 -프로그램을 실행하지 않고 테스트 수행 -워크스루, 기술적 검토, 인스팩션 동적 -프로그램을 실행하여 테스트 수행 -구현 단계 이후에 수행 -블랙박스, 화이트박스 테스트 -단위/통합/시스템/인수 테스트 관점 확인 -사용자 요구를 만족하기 위해 모든 프로세스가 만족되고 있음을 확인하는 테스트 -워크스루, 기술적 검토, 인스팩션 검증 -사용자 살제 요구를 만족하는지 검증하는 테스트 -시스템/인수 테스트 단계 단위 -단위 모듈에 대한 테스트 -모듈(컴포넌트) 테스트 -화이트박스 테스트 방법에 의해 설계된 테스트 데이터 이용 -드라이브, 스터브 활용 통합 -통합된 모듈 사이의 인터페이스나 상호작용을 테스트 -소프트웨어가 아키텍처 설계에 따라 올바르게 구현되었는지 확인 -화이트박스, 블.. 2021. 12. 19.
15. 테스트 1. 테스트의 개요 가. 테스트의 정의 -코드 실행 오류 검사 및 개발 프로세스 전반에 걸쳐 생산되는 문서를 검토하여 잠재 오류를 발견하는 기법 나. 테스트의 특징 -소프트웨어 잠재 오류 발견 -최소 시간과 최소 노력으로 오류 발견 -소프트웨어 품질을 높이기 위해 테스트 계획 수립 및 오류 발생 가능성이 높은 효율적, 효과적인 설계 필요 2. 테스트의 원리 가. 테스트의 원리 (발완초 집살정오) 테스트 원리 설명 테스트 방안 결함 존재 증명 -테스트은 결함 증명 -SW 완전성 증명 불가 -결함 발견에 초점 완벽한 테스트 불가 -모든 경우 테스팅 불가 -효율적 테스트 필요 -동등분할, 경계값 분석 등 효율적 테스트 수행 개발 초기 테스트 효율적 -조기 결함 발견 -수정 시 수정대상 대폭 감소 -결함 확산 .. 2021. 12. 19.
14.1 팬인(Fan-in) 및 팬아웃(Fan-out) 1. 팬인 및 팬아웃의 개요 가. 팬인 및 팬아웃의 정의 모듈을 계층적으로 분석하거나 시스템 복잡도를 측정 하기 위해 사용하는 기법 나. 팬인 및 팬아웃의 비교 구분 팬인 팬아웃 개념 -어떤 모듈을 호출하는 모듈 수 -어떤 모듈에 의해 호출되는 모듈 수 모듈 숫자 계산 -자신을 기준으로 모듈에 들어오면 팬인 -자신을 기준으로 모듈에서 나가면 팬 아웃 고려사항 -팬인이 높을 경우 재사용 설계 좋음 -단일 장애점(SFP) 발생 가능 -관리 및 테스트 비용 증가 -팬아웃이 높을 경우 불필요한 모듈 호출 증가 위험 -단순화 가능 여부 검토 필요 - 최적화를 위해 팬인은 높게, 팬아웃은 낮게 설계 고려 2. 팬인 및 팬아웃 계산 A B C D E F G 팬인 0 1 1 1 1 1 1 팬아웃 2 2 2 0 0 0 0 2021. 12. 18.
14. 모듈 설계 1. 모듈 설계의 개요 가. 모듈 설계의 정의 -소프트웨어 아키텍처를 구성하는 각 모듈 내부의 세부 처리 과정을 설계하는 기법 나. 모듈 설계의 특징 -(유형), 절차 지향 언어의 함수, 객체 지향 언어의 메소드 의미 -(모듈 설계), 컴포넌트 설계, 상세 설계, 절차 설계, 하위수준 설계 -(수행 순서), 데이터 설계, 소프트웨어 아키텍처 설계, 인터페이스 설계 후 수행 -(언어 독립), 구현 언어와 독립적이며 그래픽 혹은 텍스트 기반의 표기법 이용 2. 제어문의 유형 및 모듈 명세 도구 가. 제어문의 유형 유형 개념도 설명 순차 구조 -선택적 분기 없이 처음부터 끝까지 순서에 따라 실행되는 구조 반복 구조 -조건에 따라 실행 영역의 처음과 끝을 반복 실행하는 구조 -while, do-while 선택 .. 2021. 12. 18.
13.3 Template Method 패턴 가. 배경 -알고리즘의 기본 구조가 유사할 때 적용 나. 사용사례 -기본 구조는 슈퍼 클래스에 정의하고, 구체적인 구현은 서브 클래스에서 재정의 다. 샘플 코드 및 클래스 다이어그램 카페인 음료 public abstract class CaffeineBeverage { final void prepareRecipe( ) { boilWater( ); brew( ); pourInCup( ); addCondiments( ); } abstract void brew( ); abstract void addCondiments( ); void boilWater( ) { } void pourInCup( ) { } } 커피 차 public class Coffee extends CaffeineBeverage { public v.. 2021. 12. 15.
13.2 Adaptor 패턴 가. 배경 -기존 클래스를 외부의 표준 클래스로 대치하는 것이 필요할 때 적용 나. 사용사례 -내부 기존 클래스를 외부 표준 클래스로 대치하기 위해 많은 수정 필요 -최소한의 수정을 통해 기존 인터페이스와 대치 인터페이스가 동일 기능 제공 다. 샘플 코드 및 클래스 다이어그램 기존 인터페이스 대체 인터페이스 public interface TaxIF { public void findTax( ); } public class Tax implements TaxIF { public void findTax( ){ } } public class TaxTest { static TaxIF t; public static void main(String[ ] args) { t = new Tax( ); t.findTax( );.. 2021. 12. 14.
13.1 Singleton 패턴 가. 배경 -특정 클래스가 단지 하나의 객체만을 생성하는 것을 보장하고 외부 객체에게 해당 객체에 대한 용이한 접근을 제공할 필요가 있을 때 적용 나. 사용사례 -시스템 정보를 저장하는 레지스트리 설정 객체 -복수 작업 관리 쓰레드 풀 객체 -데이터베이스 연결 커넥션 풀 객체 -시스템 주요 제어 객체 다. 샘플 코드 및 클래스 다이어그램 public class OrderController { private static OrderController oc; private OrderController( ) { }; public static OrderController getOC( ) { if (oc == null) { oc = new OrderController( ) ; } return oc; } } 2021. 12. 14.
13. 설계 패턴 1. 설계 패턴의 개요 가. 설계 패턴의 정의 -객체 지향 시스템 개발 시 공통적으로 발생하는 문제를 해결하기 위하여 개발자의 경험을 정리한 기법 나. 설계 패턴의 특징 -검증된 설계 패턴을 재사용 -높은 생산성 -유지보수 용이 2. 설계 패턴의 분류 및 구성요소 가. 설계 패턴의 분류 생성 구조 행위 객체 생성을 위한 설계 패턴 클래스 사이의 구조에 대한 설계 패턴 클래스 사이의 상호 작용과 책임 분산을 다루는 설계 패턴 Factory Method Abstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Interpreter Template Method Chain of Resp.. 2021. 12. 14.
12. 객체지향 설계 방법 1. 객체지향 설계 방법의 개요 가. 객체지향 설계 방법의 정의 -분석 클래스 다이어그램으로부터 설계 클래스 다이어드램을 생성하는 기법 나. 객체지향 설계 방법의 특징 -분석과 설계의 구분이 명확하지 않고 분석활동에서 생성된 산출물을 정제하여 구체화 -분석은 도메인에 대한 이해 활동, 설계는 솔루션 결정 활동 -설계 클래스 다이어그램은 도메인에 존재하지 않는 다양한 솔루션 클래스(엔티티, 제어, 데이터 접근) 포함 -설계 클래스를 관련 그룹으로 묶어 패키지 다이어그램 작성 -클래스 사이의 관계나 속성 이름, 속성 타입, 메소드 스그니처에 대한 정보 파악 -설계 클래스 다이어그램의 품질을 높이기 위해 응집도와 결합도 고려 객체지향 분석 방법 객체지향 설계 방법 사용사례 다이어그램 활동 다이어그램 사용사례 .. 2021. 12. 12.
11. 구조적 설계 방법 1. 구조적 설계 방법의 개요 가. 구조적 설계 방법의 정의 -하향식 기능 중심으로 분해하는 소프트웨어 설계 방법 나. 구조적 설계 방법의 특징 -고전적 방법 -구조적 분석 방법을 적용하여 생성된 결과물인 DFD를 구조도로 변경 용이 구조적 분석 방법 구조적 설계 방법 DFD STD DD 구조도 2. 구조도의 정의 및 표기법 가. 구조도의 정의 -소프트웨어 아키텍처를 표현하기 위해 이용되는 다이어그램 나. 구조도의 표기법 구분 표기법 설명 모듈 -사각형 내부에 모듈 이름 작성 -구조도를 구성하는 기본 요소 -단순하고 독립적인 기능을 수행하는 프로그램 컴포넌트 -함수, 클래스, 패키지, 서브시스템 등 모듈 호출 -모듈 사이의 호출 -화살표 방향은 어떤 모듈이 어떤 모듈을 호출하는지 표시 데이터 -모듈 사이.. 2021. 12. 11.
10. 시스템 아키텍처 설계 1. 시스템 아키텍처 설계의 개요 가. 시스템 아키텍처 설계의 정의 -컴퓨터 시스템 개발을 위한 하부 구조를 수립하기 위해 하드웨어와 소프트웨어 컴포넌트들을 정의하고 이러한 컴포넌트들의 인터페이스를 정의하는 프로세스 나. 시스템 아키텍처 설계의 특징 -(개발 초기 분석 활동), 설계활동에서 수행하기보다 개발 초기 분석 활동에서 수행 -(설계 효율화 증가), 개발 초기 시스템 아키텍처 정의는 소프트웨어 아키텍처 설계, 데이터 설계, 인터페이스 설계 수행 시 효율성 증가 2. 시스템 아키텍처 설계의 종류 종류 특징 설명 중앙 집중형 아키텍처 -중앙 메인 프레임 컴퓨터 중심 -단순 구조 -중앙 컴퓨터를 중심으로 한정된 능력의 외부 단말장치를 연결하는 구조 클러스트 아키텍처 -같은 제조사 모델 -지근 거리에 서.. 2021. 12. 6.