소프트웨어 개발을 위해서는
여러 가지 활동이 선행되어야 한다.
크게 다음과 같이 네 가지 기본 활동이 필요하다.
- 명세화 specification
- 구현 coding
- 검증 verification
- 유지보수 maintenance
[명세화] - specification
소프트웨어는 고객 또는 계약자의 필요에 의해
생산이 의뢰되므로 생산 전 제품 작동 방식, 성능 요구 등이 합의된다.
즉 명세해야하는데 명세에는 소프트웨어가 작동해야 할
기능이나 성능뿐만 아니라, 제품의 원가, 위험 및 일정 등
제약 사항도 포함된다.
명세를 명확하게 정리해 둬야 개발 실패를 방지할 수 있다.
[구현] - coding
시스템의 명세를 주어진 여건에 맞게 설계하고
프로그래밍 언어로 변환하는 것이다.
주어진 설계에 대해 최선의 방법으로 구현하는 것이
이 단계의 최종 목표이다.
잘 작성된 코드는 검증과
유지보수에 드는 노력을 감소시킨다.
[검증] - verification
검증은 구현된 소프트웨어가
고객의 의도와 일치하는지 확인하는 작업이다.
프로그램을 실행시켜 예상되는 결과를 체크할 수도 있고
실행 전에 원시 코드를 인스펙션하여 요구 사항과
일치하는지 확인할 수 있다
[유지보수] - maintenance
개발된 이후 사용 단계에 결함이 있다면 수정하여야 한다.
또는 고객이나 시장의 요구 변화에 맞게
소프트웨어를 수정하는 경우도 있다.
이를 소프트웨어 유지보수라 하며 기존 시스템에서
진화하는 단계라 할 수 있다
소프트웨어는 공장에서 생산되는 것과는 달리
사람의 지적 활동에 의해 개발된다.
사람의 지적 활동이 생산 활동에 직접 관련되어 있기 때문에
하드웨어 개발 생산성에 비해 크게 떨어진다.
특히 2배의 인원을 투입하였다고 해서
소프트웨어 개발 생산성이 2배로 늘지 않고,
동일 한 생산능력을 가진 인원을 일정하게 유지하고
2배의 시간을 준다고 하여 결과가 배로 향상되지도 않는다.
또한 개발한 소프트웨어의 질과 양도
참여한 개인의 능력에 크 게 좌우된다.
이러한 인적 요인( human factor)이
소프트웨어 개발의 공학적 접근을 어렵게 한다.
소프트웨어 개발에도 공학적 접근이 이루어지며
다음과 같은 어려움을 정의했다.
[소프트웨어 개발의 어려움]
- 명세화의 어려움 : 고객의 의도를 처음부터 명세화하기 어려움
- 재사용의 어려움 : 소프트웨어별로 재사용할 부품을 만들기 어려움
- 예측의 어려움 : 외부요소의 영향이 많아 프로젝트 규모 예측이 어려움
- 유지보수의 어려움 : 다른사람이 개발한 소프트웨어를 이해하는게 어렵고 보수는 더 어려움
- 고품질의 어려움 : 소프트웨어는 유기적인 연결이 강해 모든 실행조합을 다 테스트할 수 없음
소프트웨어를 개발하는 중 부딪히는
여러 가지 어려움을 해결하려는 기술이
바로 소프 트웨어 공학이다.
이런 어려움은 단순히 프로그래밍 기술만으로
해결이 불가능 하며 다양한 공학적 원리와
방법이 동원되어야 해결할 수 있다
'개주 훈련일지 > 📚 코살대 교본 학습' 카테고리의 다른 글
| 소프트웨어 공학의 접근법 (0) | 2025.10.31 |
|---|---|
| 연산자 (0) | 2025.10.31 |
| 변수와 자료형 (0) | 2025.10.31 |
| 자바 프로그래밍의 기본 (0) | 2025.10.30 |
| 소프트웨어 공학 소개 (0) | 2025.10.27 |