1. 소프트웨어 개발 방법론
1). 소프트웨어 생명 주기(SDLC: Software Development Life Cycle) 모델
1. 개념
- 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
- 운용~유지보수를 걸쳐 생애를 마칠 때까지 어떤 순서를 밟는지에 대한 작업 프로세스 모델화
2. 모델 프로세스
1. 요구사항 분석
2. 설계
3. 구현
4. 테스트
5. 유지보수
3. 모델 종류
- 폭포수 모델(Waterfall Model): 각 단계 별 확실히 마무리 후 다음 단계로
- Prototyping Model: 고객이 요구한 주요 기능을 프로토타입으로 구현, 피드백 반영 후 소프트웨어 만드는 모델
- Sprial Model(나선형 모델): 위험 최소화 위해 점진적으로 완벽한 시스템 개발
- Iteration model(반복적 모델): 구축대상을 병렬적으로 개발 후 통합 / 반복적으로 개발하여 점증 완성
2). 소프트웨어 개발 방법론(Software Development Methdology)
1. 개념
- 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차
- 소프트웨어 = 하나의 생명체
2. 개발 방법론 종류
- Structured Development: 분할과 정복 접근 방식 / 하향식
- Information Engineering Development: 정보시스템 개발 / 대형 프로젝트 수행용
- Object-Oriented Development
- CBD(Component Based Development): 소프트웨어를 구성하는 컴포넌트를 조립해 하나의 새 응용 프로그램 / 확장성 높음
- Agile Development: 절차 < 사람
- Product Line Development: 특정 제품에 적용하고 싶은 공통된 기능을 정의 / 임베디드 소프트웨어에 용이
3. 애자일(Agile)
- 신속 적응적 경량 개발 방법론
- 모바일 환경으로 개발 트렌드 변경
- 문서 및 절차 위주 전통적 방법론은 신속한 대응 불가
- 애자일 방법론의 유형
XP:
- 용기, 단순성, 의사소통, 피드백, 존중
- 짝 프로그래밍
- 공동 코드 소유
- 지속적 통합
- 계획 세우기
- 작은 릴리즈
- 메타포어
- 간단한 디자인
- TDD(Test Driven Development)
- Refactoring
-40-Hour Work
- On Site Customer
- Coding Standard
SCRUM:
- Backlog: 제품과 프로젝트에 대한 요구사항
- Sprint
- Scrum Meeting
- Scrum Master
- Sprint Retrospective
- Burn Down Chart
LEAN:
- JIT(Just In Time)
- Kanban 보드 사용
3). 객체 지향 분석 방법론
1. 구성요소
- Class
- Object
- Method
- Message
- Instance
- Property
2. 객체 지향 기법
- Encapsulation: 결합도가 낮아지고 재사용에 용이 / 변경 발생 시 오류의 파급 효과가 적음 / 필요 인터페이스만을 밖으로 드러냄
- Inheritance
- Polymorphism: 오버로딩 / 오버라이딩
- Abstraction
- Information Hiding
- Relationship: 연관성 / 집단화 / 분류화 / 일반화 / 특수화
3. 객체 지향 설계 원칙(SOLID)
- SRP: Single Responsibility Principle
- OCP: Open Close Principle
- LSP: Liskov Substitution Principle
- ISP: Interface Segregation Principle
- DIP: Dependency Inversion Principle
4. 객체 지향 분석 방법론 종류
1. 야콥슨 - OOSE(Object Oriented Software Engineering): 유스케이스
2. 럼바우 - OMIT(Object Modeling Technology): 객체 모델링 -> 동적 모델링 -> 기능 모델링
3. 부치 - OOD(Object Oriented Design): 설계 문서화 강조
4. 코드-요든 - E-R 다이어그램 이용
2. 프로젝트 관리
1). 프로젝트 관리
1. 개념
- 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적 활동
- 개발 계획 세우고 분석, 설계, 구현 등 작업을 통제하며 소프트웨어 생명 주기 전 과정에 걸쳐 진행
- 수행할 작업의 범위, 필요한 자원, 수행 업무, 비용, 추진 일정 등 관리
2. 관리 대상
3. 프로젝트 관리 3대 요소 : People, Problem, Process
2). 비용산정 모형
1. 개념
- 소프트웨어 규모 파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 것
2. 비용산정 모형 분류
- 하향식 산정방법: 전문자 판단 / 델파이 기법
- 상향식 산정방법: LoC(Line of Code) / Man Month / COCOMO / 푸트남 / FP(기능점수) 모형
3. LoC(Line of Code) 모형
- 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고, 이를 이용하여 비용을 산정하는 방식
예측치 = (낙관치 + 4*중간치 + 비관치) / 6
낙관치 = 가장 적게 측정된 코드 라인 수
중간치 = 측정된 모든 코드 라인 수의 평균
비관치 = 가장 많이 측정된 코드 라인 수
4. Man Month 모형
- 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용 산정
Man Month = LoC / 프로그래머의 월간 생산성
프로젝트 기간 = Man Month / 프로젝트 인력
5. COCOMO (COnstructive COst MOdel)
- 보헴(Boehm)이 제안한 모형 / 프로그램 규모에 따라 비용을 산정
- 비용산정 결과는 Man Month로 산정
- 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 소프트웨어 개발비 견적에 널리 통용
Organic Mode (조직형): 5만(50KDSI) 이하 / 중소규모의 소프트웨어 / 일괄 자료 처리나 과학 기술 계산용
Semi-Detached Model (반 분리형): 30만(300KDSI) 이하 / 트랜잭션 처리 시스템, DB 관리 시스템, 컴파일러, 인터프리터와 같은 Util 개발
Embedded Mode: 초대형 규모
6. Putnam(푸트남) 모형
- 개발 주기 단계별 요구할 인력의 분포 가정
- 생명주기 예측 모형
- Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
7. 기능점수(FP: Function Point) 모형
- 요구 기능을 증가시키는 인자별로 가중치를 부여
- 경험을 바탕으로 단순, 보통, 복잡한 정도에 따라 가중치 부여
FP = 총 기능점수 X (0.65 + (0.1 X 총 영향도))
3). 일정관리 모델
1. 개념
- 일정기한 내 적절하게 완료될 수 있도록 관리하는 모델
2. 모델 종류
- CPM(Critical Path Method) 주 공정법: Node와 Node간 연결을 통해 공정을 계산하기 위한 Activity 표기법
Critical Path(임계경로): 시작~종료 가장 긴 시간의 경로
- PERT(Program Evaluation and Review Technique): 비관치, 중간치, 낙과치 추정방식
- CCPM(Critical Chain Project Management)
4). 위험 관리
1. 개념: 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동
2. 종류
알려진 위험 / 예측 가능한 위험(과거경험으로부터) / 예측 불가능한 위험
3. 위험 대응 전략
Avoidance: 가능성을 원천적으로 제거
Transference: 전가
Mitigation: 완화
Acceptance: 수용