Ⅰ. 요구사항 확인
Chapter 01. 소프트웨어 개발방법론
1. 소프트웨어 개발방법론
2. 비용산정, 일정관리 모형
Chapter 02. 현행 시스템 분석
1. 현행 시스템 파악
2. 개발 기술 환경 정의
Software Development Life Cycle
소프트웨어 생명주기란 시스템 엔지니어링, 정보 시스템, 또는 소프트웨어 공학에서 정보 시스템을 계획, 개발, 시험, 채용하는 과정을 뜻하는 용어이다. 즉, 개발부터 유지보수까지의 프로세스를 체계화한 모델이다.
요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
소프트웨어를 하나의 생명체로 간주, 개발의 전 과정을 형상화한 방법론
구조적 방법론
기능을 기준으로 나누어 개발한 후 통합하는 방식의 프로세스 중심 하향식 방법론
나씨-슈나이더만 Nassi-Shneiderman 차트(논리 중심 도형식 표현)
정보공학 방법론
개발 주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
객체지향 방법론
단위 '객체'로 시스템을 설계하는 방법론
객체, 클래스, 메시지 이용
컴포넌트 기반 방법론
sw를 구성하는 컴포넌트를 조립해 작성하는 방법론
개발 기간이 단축되고 확장성과 재사용성이 좋다.
애자일 방법론
사람이 중심이 되어 변화에 빠르게 적응해 시스템을 개발할 수 있는 방법론
sw개발이 모바일 환경으로 변화되며 등장. 잦은 배포의 중요성이 강조됨
1) XP(extreme programming)
1~3주의 반복되는 개발 주기
용기, 단순, 커뮤니케이션, 피드백, 존중
짝 코딩, 공동 소유, small release, TDD(테스트 기반 개발:테스트를 먼저 수행한 후 코드를 작성), 리팩토링
2) 스크럼Scrum
정해진 시간, 정해진 장소에서 짧은 시간동안 개발하는 프로젝트 관리 방법론
백로그, 스프린트, 스크럼 미팅, 스크럼 마스터, 회고, 번다운 차트
3) 린Lean
칸반 보드를 사용해 낭비 요소를 제거하는 방법로
낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화
유동적 범위 설정
팀 단위 업무 수행
반복 주기 단위로 sw 개발
팀 평가
문서 < 코드
1) 델파이 기법
전문가의 경험적 지식을 통한 문제 해결, 미래예측
= 전문가 합의법
2)전문가 판단
1) Loc
코드 라인 수의 낙관치, 중간치, 비관치를 계산, 예측치를 기준으로 비용 산정
예측치 = 낙관치+4중간치+비관치 / 6
2) Man Month
MM = Loc/프로그래머의 월간 생산성
기간 = MM/프로그래머 수
그냥 계산하면 된다!
3) COCOMO
보헴이 제안함.
Man Month로 비용을 산정하지만 프로그램 규모로 나뉜다.
4) Putnam
개발 단계별 인력 분포를 가정
생명주기 예측 모형
시간에 따른 함수: Rayleigh-Norden 곡선의 노력 분포도
5) FP기능점수
기능을 증가시키는 인자별로 가중치 부여
경험 기반 가중치: 단순, 보통, 복잡
FP = 총 기능점수 * [ 0.65 + (0.1*총 영향도) ]
주 공정법 CPM(critical path method)
여러 작업의 수행 순서가 얽혀 있을 때 계산
제약사항을 배제한 채 노드와 노드 간의 연결인 액티비티 표기
PERT(Program Evaluation and Review Technique)
비관치, 중간치, 낙관치의 3점 추정방식으로 계산
일의 순서를 계획적으로 정리하기 위한 수렴 기법
중요 연쇄 프로젝트 관리 CCPM(critical chain project management)
자원 제약 사항을 고려해 일정을 작성
1단계: 구성, 기능, 인터페이스 - 기간 업무, 지원 업무, 기능, 데이터 종류 형식 주기
2단계: 아키텍처, 소프트웨어 구성 - 최상위 수준에서 기술 요소 파악, 라이선스 제품명 등 파악
3단계: 하드웨어 및 네트워크 구성 - 하드웨어와 네트워크 장비 등 파악
아키텍처가 표현해야 하는 내용과 관계를 제공하는 아키텍처 기술 표준
소프트웨어 아키텍처 4+1 뷰
: 고객의 요구사항을 정리한 시나리오를 4개의 관점에서 바라보는 접근 방식
: 요구사항 충족을 증명하기 위해 유스케이스 사용
: 논리 뷰, 구현 뷰, 프로세스 뷰, 배포 뷰 + 유스케이스 뷰
논리 뷰: 설계자, 개발자 관점. 기능적 요구사항
구현 뷰: 정적 SW 모듈의 구성, 컴포넌트 구조 및 의존성, 부가 정보 정의
프로세스 뷰: 개발자, 시스템 통합자 관점. 비기능적인 속성인 자원 효율, 병행 실행, 비동기, 이벤트 처리 등을 표현
배포 뷰: 물리적 아키텍처 배치를 매핑
유스케이스 뷰: 사용자, 설계자, 테스트 관점. 다른 뷰 검증에 사용