컴퓨터 소프트웨어 개발은 복잡한 과정을 필요로 할 수 있으며, 지난 시간동안 소프트웨어 개발 과정에서 사용되는
다음과 같은 다양한 작업들이 규명되었다.
- 문제 정의
- 요구사항 개발
- 구현 계획 수립
- 소프트웨어 아키텍처 또는 상위 수준 디자인
- 상세 설계
- 코드 작성 및 디버깅
- 단위 테스트
- 통합 테스트
- 통합
- 시스템 테스트
- 사후 보전(corrective maintenance)
위와 같은 소프트웨어 개발 작업 중 파란색 작업이 구현 작업이라 할 수 있다.
그리고 이것은 구현 작업을 상위 수준에서 표현한 것이다.
이러한 구현 작업에 필요한 작업들을 구체적으로 일부만 나열하면 아래와 같다.
- 구현을 성공적으로 수행하기 위한 기초 작업의 검증
- 코드를 테스트하기 위한 방법의 결정
- 클래스와 루틴의 설계 및 작성
- 변수와 명명된 상수(named constants)의 작성 및 명명(naming)
- 제어 구조 선택 및 명령문 블록의 구조화
- 코드에 대한 단위 테스트, 통합 테스트 및 디버깅
- 다른 팀원이 작성한 하위 수준 설계와 코드를 검토하고, 다른 팀원은 자신이 작성한 코드의 검토를 진행
- 주의 깊게 형식화 하고, 주석을 작성하여 코드 개선
- 개별적으로 작성된 소프트웨어 컴포넌트 통합
- 보다 빠르고 적은 자원을 사용하도록 코드 최적화
위에서 보듯 소프트웨어 개발에서 많은 작업을 차지하고 있는 구현 작업의 중요성을 알아보자.
이러한 중요성을 바탕으로 구현의 질적 수준이 소프트웨어 품질에 전반적인 영향을 준다는걸 알 수 있다.
다음과 같은 다양한 작업들이 규명되었다.
- 문제 정의
- 요구사항 개발
- 구현 계획 수립
- 소프트웨어 아키텍처 또는 상위 수준 디자인
- 상세 설계
- 코드 작성 및 디버깅
- 단위 테스트
- 통합 테스트
- 통합
- 시스템 테스트
- 사후 보전(corrective maintenance)
위와 같은 소프트웨어 개발 작업 중 파란색 작업이 구현 작업이라 할 수 있다.
그리고 이것은 구현 작업을 상위 수준에서 표현한 것이다.
이러한 구현 작업에 필요한 작업들을 구체적으로 일부만 나열하면 아래와 같다.
- 구현을 성공적으로 수행하기 위한 기초 작업의 검증
- 코드를 테스트하기 위한 방법의 결정
- 클래스와 루틴의 설계 및 작성
- 변수와 명명된 상수(named constants)의 작성 및 명명(naming)
- 제어 구조 선택 및 명령문 블록의 구조화
- 코드에 대한 단위 테스트, 통합 테스트 및 디버깅
- 다른 팀원이 작성한 하위 수준 설계와 코드를 검토하고, 다른 팀원은 자신이 작성한 코드의 검토를 진행
- 주의 깊게 형식화 하고, 주석을 작성하여 코드 개선
- 개별적으로 작성된 소프트웨어 컴포넌트 통합
- 보다 빠르고 적은 자원을 사용하도록 코드 최적화
위에서 보듯 소프트웨어 개발에서 많은 작업을 차지하고 있는 구현 작업의 중요성을 알아보자.
1. 구현은 소프트웨어 개발에서 큰 비중을 차지한다 - 구현은 프로젝트 전체 소요시간 중에서 30 ~ 80% 정도를
차지한다. 이 정도의 시간을 차지한다면 구현 작업은 프로젝트의 성공에 영향을 미치게 된다.
2. 구현은 소프트웨어 과정에서 중심적인 활동이다 - 구현은 소프트웨어 개발 과정에서 중간에 위치해 있다.
선행 작업으로는 요구 사항과 아키텍처가 있고, 후행 작업으로는 테스트가 있다.
3. 구현에 집중함으로써, 프로그래머 개인의 생산성을 극대화할 수 있다 - 프로그래머 개인의 생산성에 따라
효율적인 구현에 미치는 영향은 10 ~ 20% 정도 차이가 난다는 연구결과가 있다.
4. 구현의 결과물인 소스 코드만이 소프트웨어를 정확하게 설명한다 - 요구 사항 명세서와 설계 문서는 최신의
정보를 반영하지 못할 수도 있지만, 소스 코드는 항상 최신의 정보로 갱신된다.
5. 구현은 반드시 수행되는 유일한 활동이다 - 프로젝트에서 요구 사항 개발 및 아키텍처, 테스트 등은 진행하지 않고
넘어갈 수 있지만, 그 어떤 프로젝트라도 구현 단계를 뺄 수는 없다.
차지한다. 이 정도의 시간을 차지한다면 구현 작업은 프로젝트의 성공에 영향을 미치게 된다.
2. 구현은 소프트웨어 과정에서 중심적인 활동이다 - 구현은 소프트웨어 개발 과정에서 중간에 위치해 있다.
선행 작업으로는 요구 사항과 아키텍처가 있고, 후행 작업으로는 테스트가 있다.
3. 구현에 집중함으로써, 프로그래머 개인의 생산성을 극대화할 수 있다 - 프로그래머 개인의 생산성에 따라
효율적인 구현에 미치는 영향은 10 ~ 20% 정도 차이가 난다는 연구결과가 있다.
4. 구현의 결과물인 소스 코드만이 소프트웨어를 정확하게 설명한다 - 요구 사항 명세서와 설계 문서는 최신의
정보를 반영하지 못할 수도 있지만, 소스 코드는 항상 최신의 정보로 갱신된다.
5. 구현은 반드시 수행되는 유일한 활동이다 - 프로젝트에서 요구 사항 개발 및 아키텍처, 테스트 등은 진행하지 않고
넘어갈 수 있지만, 그 어떤 프로젝트라도 구현 단계를 뺄 수는 없다.
이러한 중요성을 바탕으로 구현의 질적 수준이 소프트웨어 품질에 전반적인 영향을 준다는걸 알 수 있다.
'Programing > 소프트웨어 공학' 카테고리의 다른 글
Agile(애자일) 개발방법론 (0) | 2009.07.31 |
---|---|
소프트웨어 개발의 이해를 돕기 위한 비유 (0) | 2009.05.19 |