1. Programmer VS Engineer
- Programmer : 번역가와 같음. 디자이너가 고안한 프로그램을 코드로 만들어내는 사람
- Engineer : 주어진 문제를 해결할 수 있는 솔루션을 직접 디자인하고 개발할 수 있는 능력을 갖춘사람
2. Software Engineering
- 소프트웨어공학은 여러사람들이 함께 작업하기 위해서는 필요한 필수적인 소양임
- 수만줄의 프로그램과 수백줄의 프로그램을 개발할 때는 다른 방법을 적용하여 개발해야함
- 고층빌딩을 짓는 것과 애완견의 집을 만들 때, 접근 방법이 완전히 다른 것과 비슷함
- Software Engineering의 최종 Goal : 품질(Quality)와 생산성(Productivity)
3. Software Development Methodology의 지표
개발 방법론에는 일관성과 재현성이 매우 중요하며 이러한 방법론들은 표준화가 필요함.
- 1) 일관성/예측가능성 : 프로젝트의 결과를 어느정도 예측가능해야함 (방법론이 일관되게 좋아야함)
- (+ 예를들어 개발팀 A가 이 방법 써서 성공했는데, 개발팀 B가 이 방법 써서 실패하면 일관성이 나쁜것임)
- 2) 재현성 : 개발하는 시스템마다 높은 품질/생산성을 갖게 하는 것
- 3) 표준화 : 개발 방법론 및 프로세스의 표준화가 필요함 (ISO9001 / CMM 등)
4. Software Engineering Approach
- 품질과 생산성을 좌우하는 세가지 요소 : 인력, 프로세스, 기술
- 그러나 인력, 프로세스, 기술을 모두 프로젝트 매니저가 결정할 수가 없음.
5. 단계적 프로그래밍
- 개발프로세스를 소프트웨어 그 자체와 분리해야함.
- 즉, 냅다 앉아서 개발하는 것이 아니라 단계적으로 계획하고 개발해야함
- 계획/요구분석 → 설계 → 구현 → 테스팅(검증) → 유지보수 단계로 개발함
- Requirement : 무엇을 만들것인지, 어떤 기능들이 들어가야하는지 고민하는 단계
- Design : 아키텍처 혹은 디자인패턴과 구체적 구현방법(클래스, 함수 등)을 고안하는 단계
- Implementation : 실제로 코드를 구현하는 단계
- Verification : 구현된 소프트웨어가 실제로 잘 동작하는지 검증해보는 단계
- Maintenance : 소프트웨어를 유지하고 업데이트(보수)하는 단계
6. 각 단계에서 할 일과 산출물
- Requirement : 분석전략, 요구결정, 사례분석, 정적/동적 모델링 → 요구사항 명세서
- Design : 설계전략, 아키텍처 수립, 인터페이스/프로그램 설계, DB설계 → 설계명세서 (UML등)
- Implementation : 프로그래밍, 단위테스팅 → 소스코드
- Verification : 통합테스팅, 시스템테스팅, 인수테스팅 → 테스트 결과보고서
7. 그 외 필요한 (배울) 사항
- 품질 보증
- 프로젝트 관리 (프로젝트 사이클)
8. Reference
'소프트웨어공학' 카테고리의 다른 글
프로세스 (7) - 애자일 프로세스 모델 (2) - 스크럼 (Scrum) (0) | 2020.05.13 |
---|---|
프로세스 (6) - 애자일 프로세스 모델 (1) - 선언문(Manifesto) (0) | 2020.05.13 |
프로세스 (5) - 점진적 프로세스 모델 (2) - UP / RUP (0) | 2020.05.13 |
프로세스 (4) - 점진적 프로세스 모델 (1) - 증분 / 진화 / 나선형 (0) | 2020.05.13 |
프로세스 (3) - 선형적 프로세스 모델 - 폭포수 / V / 프로토타입 (0) | 2020.04.14 |
프로세스 (2) - 프로세스의 각 단계 (0) | 2020.04.14 |
프로세스 (1) - 프로세스란 무엇인가? (0) | 2020.04.14 |