소프트웨어 생명주기는 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차이다.
개발될 때 부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화.
- 요구사항분석
요구사항을 고려하여 새로운 제품의 요구와 조건을 결정하는 단계 - 설계
기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계 - 구현
실제 프로그램을 작성하는 단계 - 테스트
검사하고 평가하는 단계 - 유지보수
시스템이 인수되고 설치된 후 일어나는 모든 활동
- 폭포수모델(waterfall model)
- 각 단계를 확실히 마무리 지은후에 다음 단계로 넘어가는 모델
- 가장 오래된 모델
- 성공 사례가 많음
- 요구사항 변경이 어려움
- 산출물이 명확
- 프로토타이핑 모델
- 고객이 요구한 주요 기능을 프로토타입으로 구현하여 피드백 반영하여 만들어가는 모델
- 나선형 모델
- 시스템 개발 시 위험을 최소화 하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
- 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가
- 반복적 모델
- 구축 대상을 나누어 병렬적으로 개발 후 통합하거나 반복적으로 개발하여 점증 완성시키는 모델
- 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델
소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법이다.
전 과정을 형상화한 방법론이다.
- 구조적 방법론
- 정보공학 방법론
- 객체지향 방법론
- 컴포넌트 기방 방법론
- 애자일 방법론
- 제품 계열 방법론
절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 개발
대표적으로 XP, 린, 스크롬이 있다.
XP의 5가지 가치
용기, 단순성, 의사소통, 피드백, 존중
XP의 12가지 기본원리
짝 프로그래밍, 공동 코드 소유, 지속적인 통합, 계획 세우기, 작은 릴리즈, 메타포어, 간단한 디자인,
테스트 기반 개발, 리팩토링, 40시간 작업, 고객상주, 코드 표준
스크럼
백로그, 스프린트, 스크럼 미팅, 스크럼 마스터, 스프린트 회고, 번 다운 차트
소프트웨어 규모파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정
- 하향식 산정방법
경험이 많은 전문가에게 비용 산정을 의뢰, 여러 전문가와 조정자를 통해 산정 - 상향식 산정방법
세부적인 요구사항과 기능에 따라 필요한 비용을 계산
- LoC 모형
소프트웨어 각 기능의 원시 코드라인수의 낙관치, 중간치, 비관치를 측정하여 비용산정 - Man Month 모형
한 사람이 1개월 동안 할 수 있는 일의 양을 기준
Man Month = Loc/프로그래머의 월간 생산성
프로젝트 기간 = Man Month/프로젝트 인력 - COCOMO
보헴이 처음 제안, 프로그램의 규모에 따라 비용을 산정하는 방식
조직형 -> 반 분리형 -> 임베디드형 - 푸트남 모형
단계별로 요구할 인력의 분포를 가장하는 방식
Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다. - 기능점수
요구기능을 증가시키는 인자별로 가중치를 부여
일정 기한 내에 적절하게 완료 될 수 있도록 관리
주 공정법 = 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산
PERT = 일의 순서를 계획적으로 정리하기 위한 수렴 기법
중요 연쇄 프로젝트 관리 = 주 공정 연쇄법으로 제약사항을 고려하여 일정을 작성
임계경로 = 가장 오래 걸리는 시간
현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 제공 기능 및 연계 정보는 무엇이며
어떤 기술 요소를 사용하는지를 파악하는 활동
3단계 절차
구성/기능/인터페이스 파악 -> 아키텍처 및 소프트웨어 구성 파악 -> 하드웨어 및 네트워크 구성 파악
여러가지 소프트웨어 구성요소와 그 구성요소가 가진 특성중에서 외부에 드러나는 특성,
그리고 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체
고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법
- 유스케이스 뷰
유스케이스 또는 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는데 사용되는 뷰 - 논리 뷰
시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰 - 프로세스 뷰
시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 이벤트 처리등을 표현한 뷰 - 구현 뷰
개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰 - 배포 뷰
컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰
소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식
계층화 패턴 = 시스템을 계층으로 구분하여 구성
클라이언트-서버 패턴 = 하나의 서버와 다수의 클라이언트로 구성된 패턴
파이프-필터 패턴 = 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴
브로커 패턴 = 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용
소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
- 패턴의 이름
- 문제 및 배경
- 솔류션
- 사례
- 결과
- 샘플 코드
목적 - 생성,구조,행위
범위 - 클래스, 객체
생성 패턴
Builder / Prototype / Factory Method / Abstract Factory / Singleton
구조 패턴
Bridge / Decorator / Facade / Flyweight / Proxy / Composite / Adapter
행위 패턴
Mediator / Interpreter / Iterator / Template Method / Observer / State / Visitor / Command / Strategy / Memento / Chain of Responsibility
- 정보시스템 구성 현황
- 정보시스템 기능 구성도
- 인터페이스 현황
- 현행 시스템 아키텍처 구성도
- 소프트웨어 구성도
- 하드웨어 구성도
- 네트워크 구성도
운영체제
모든 하드웨어, 소프트웨어를 사용할 수 있도록 해주고, 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스를 담당하는 프로그램
네트워크
컴퓨터 장치들의 노드 간 연결을 사용해 서로에게 데이터를 교환할 수 있도록 하는 기술
데이터의 집합을 만들고, 저장 및 관리할 수있는 기능들을 제공하는 응용 프로그램
- 가용성
- 성능
- 상호 호환성
- 기술 지원
- 구축 비용
미들웨어는 분산 컴퓨팅 환경에서 응용프로그램과 프로그램이 운영되는 환경 간에
원만한 통신이 이루어질 수 있도록 제어해주는 소프트웨어
사용자의 요구가 반영된 시스템을 개발하기 위하여 사용자 요구사항에 대한 도분명확 하는 활동
기능적 요구사항 = 시스템이 제공하는 기능, 서비스에 대한 요구사항
비기능적 요구사항 = 시스템이 수행하는 기능 이외의 사항
요구사항 개발 단계와 요구사항 관리 단계로 나뉜다.
소프트웨어가 해결해야 할 문제를 이해하고, 고객으로부터 제시되는 추상적 요구에 대해 식별, 결정하는 단계
- 도출
- 분석
- 명세
- 확인
<도출 주요 기법>
인터뷰, 브레인스토밍, 델파이 기법, 롤 플레잉, 워크숍, 설문 조사
프로젝트 진행 과정에서 발생하는 요구 사항의 변경에 대해 일치성과 무결성을 제공하기 위해 하는 활동
분석한 요구사항이 개발하고자 하는 응용 소프트웨어에 미칠 영향에 대해서 검토하고 확인해야 한다.