개발의변화
6. 소프트웨어공학 본문
1. 소프트웨어 개발 생명 주기(Software Development Life Cycle)
계획 -> 설계 -> 분석 -> 구현 -> 테스트 -> 유지보수
2. 소프트웨어 공학의 개발 과정에 대한 설명
계획 - 목표를 세우고 달성
요구사항 문서화 - 사용자의 요구사항을 명세서로 작성하는 과정
설계 - 요구사항을 반영하여 설계서를 작성하는 과정으로 변화에 쉽게 적응, 유지보수가 용이
구현 - 프로그램을 제작 및 구현하는 단계로 보통 본 과정에서 완벽히 제작
시험과 유지 미 보수 - 프로그램 구현 이후 품질 보증을 위하여 제품의 오류를 발견하고 수정,배포 -> 가ㅘㄴ리
폭포수 모델(waterfall model)
소프트웨어 개발을 단계적으로 체계적이며 순차적인 접근 방법을 사용하여 정의
개념 정립에서 구현까지 하향식 접근 방법 사용 -> 높은 추상화에서 낮은 추상화
고객이 원하는 요구사항을 초기에 기술하기 어렵고, 작동하는 시스템이 프로젝트 후반부에 가져야할 문제점
나선형 모델(spiral model)
점증적 모델의 일종 계획수릭 -> 위험분석 -> 개발 -> 평가
대규모 시스템의 소프트웨어를 개발
비선형적이며 반복적으로 개발이 진행하므로 소프트웨어 품질 중 강인성 높임
V모델 개발 작업과 검증 작업 사이의 관계를 명백히 드러내 놓은 폭포수 모델의 변형, 높은 신뢰성이 요구
내부논리파일, 외부입력, 외부조회
입출력의 개수, 기능의 개수, 기능의 복잡도에 따라 점수를 매겨 노력 추정
구조적 분석 순서
배경도 작성 -> 상위 자료 흐름도 작성 -> 하위 자료 흐름도 작성 -> 자료 사전 작성 -> 소단위 명세서 작성
1. 자료 흐름도: 가장 보편적으로 사용되는 시스템 모델링 도구
자료저장소 사각형 옆면이 없는, 처리(프로세스) 원
프로세스, 흐름, 자료 저장소, 자료출처
2. 자료 사전: 자료 흐름도에 있는 자료 흐름이나 자료저장소들의 의미를 서술
3. 소단위 명세서: 자료흐름도의 최하위 프로세스가 어떤 기능을 하는가를 기술한 것
객체 지향 개념
객체: 상태와 행위와 정체성이 있어야 한다.
클래스: 객체의 타입이다. 같은 클래스에 속하는 개개\의 객체를 그 클래스의 인스턴스
캡슐화: 연관된 여러 항목을 모아 그 둘레에 캡슐을 씌워 하나로 취급
객체 사이의 관계: 객체가 다른 객체의 서비스를 사용한다면 두 객체 사이에 연관이 있다고 한다.
상속: 상위 클래스가 갖는 속성과 연산을 그대로 물려받는 것
다형성: 같은 이름의 메시지를 다른 객체 또는 서브 클래스에 호출할 수 있는 특성
UP(Unified Process)
RUP: Rational Unified Process
도입(inception): 비즈니스 케이스를 구축하며 시스템이 당면 문제 알아냄
상세(elaboration): 프로젝트 계획, 시스템의 기능과 구조 정의
구축(construction); 기능이 반복 점진적인 방법으로 아키텍처 자리 잡는다.
이행(transition): 테스트 후 사용자에게 인돈된다.
생성: 추상 패토리, 빌더, 프로토타입, 싱글 톤
구조: 어댑터, 브릿지, composite,decorator,proxy
행위: chian of responsability, command, iterator, mediator, memento, flyweight, observer,state, strategy. visitor
옵저버 패턴: 한 객체의 상태 변경, 의존 관계에 있는 다른 객체들에게 이를 자동 통지
데코레이터 패턴: 기존에 구현된 클래스의 기능 확장을 위하여 상속의 대안으로 사용
UML
프로그램 설계를 표현하기 위해 사용하는 주로 그림으로 표시된 표기법, 객체지향 모델링 언어
블랙박스
- 프로그램의 논리을 고려치 않고 프로그램의 기능이나 인터페이스에 관한 외부 명세로부터 직접 시험하여 데이터 선정
- 기능 시험, 데이터 위주 시험, 입출력 위주 시험
- 동등분할, 경계값 분석, 원인결과
화이트박스
- 프로그램 내의 모든 논리적 구조 파악, 경로들의 복잡도를 계산하여 시험사례
- 기본 경로를 조사하기 위해 유도된 시험사례들은 시험 시에 프로그램의 모든 문장을 적어도 한 번 실행
기초 경로, 루프, 조건, 데이터 흐름
ISO 9000
ISO 12207
CMMI
ISO 15504
CMMI
레벨 0 (불완전) 적용되는 소프트웨어 개발 프로세스가 없는 상태
레벨 1 (초기) 기본적 프로세스가 존재
레벨 2 (관리) 방침에 의해 계획되고 실행되는 수행 프로세스
레벨 3 (정의) 조직을 위한 표준 프로세스가 존재
레벨 4 (정량적 관리) 소프트웨어 프로세스와 품질에 대한 특성 정보가 정량적으로 수집되어 프로젝트 계획 수립과 에측이 정량적 가능
레벨 5 (최적화) 정량화된 프로세스 특성 정보를 이용 -> 프로세스 개선 및 최적홯 ㅘㄹ동