절차

소프트웨어 유지보수는 분석, 설계, 구현, 테스트 순으로 진행된다.

소프트웨어 품질관리

소프트웨어 제품품질(Product) 평가 / ISO-IEC 9126

제품품질은 여섯 가지 기준으로 측정한다. 신뢰성은 수명주기 중 고장이 날 때까지의 평균 기간(MTBF)으로, 사용 용이성은 사용자가 얼마나 편리하게 사용할 수 있는지로, 효율성은 비용 대비 효과와 성능으로, 유지보수성은 고장이 난 후 평균 수리 기간(MTTR)으로, 이식성은 다른 프로그램과의 호환 가능 여부로 측정한다.

소프트웨어 프로세스 품질(개발 과정 중 품질)

**SPICE(Software Process Improvement and Capability Determination)**는 1995년에 등장한 프로세스 성숙도 모델로, 0단계부터 5단계까지 여섯 단계로 나뉜다. 0단계 불안정(Incomplete)은 작업 산출물이나 결과를 기대하기 어려운 수준이고, 1단계 비정형적 실행(Performed)은 계획에 따라 꾸준히 산출되기보다 일시적으로 결과물이 산출되는 수준이다. 2단계 관리(Managed)는 정해진 절차와 계획에 따라 결과가 산출되는 수준이고, 3단계 확립(Established)은 표준으로 정해진 프로세스에 따라 결과가 산출되는 수준이며, 4단계 예측(Predictable)은 표준 프로세스가 일관된 통제 아래 수행되어 정량적으로 성과를 측정할 수 있는 수준이고, 5단계 최적화(Optimizing)는 현재는 물론 미래의 프로세스에 적용해도 목표를 만족시키며 지속적으로 개선할 수 있는 수준이다.

**CMM(Capability Maturity Model)**은 소프트웨어 개발과 관련된 프로세스 품질을 평가하고 개선하기 위해 개발된 모델로, 다섯 단계로 성숙도를 구분한다. 초기(Initial) 단계는 프로세스가 비공식적이며 주로 개인의 역량에 의존하는 수준이고, 반복적(Managed) 단계는 기본적인 프로젝트 관리 프로세스가 수립되어 진행 상황을 관리할 기초가 마련된 수준이다. 정형화(Defined) 단계는 조직의 프로세스가 표준화되고 문서화되는 수준이고, 정량적 관리(Quantitatively Managed) 단계는 프로세스 성과를 측정하고 데이터 기반으로 관리하는 수준이며, 최적화(Optimizing) 단계는 프로세스의 효율성을 극대화하고 새로운 기술이나 방법론을 도입해 지속적으로 개선하는 수준이다.

소프트웨어 공학의 발전 동향

최근 소프트웨어 공학은 여러 방향으로 발전하고 있다. 웹 엔지니어링은 웹 기반 소프트웨어와 일반 소프트웨어의 차이를 다루고, 관점 지향 프로그래밍(AOP)은 횡단 관심사를 분리해 다루는 접근을 제시한다. 컴포넌트 기반 소프트웨어 개발은 교체가 필요한 부분만 갈아 끼우면 바로 동작하는 모델을 지향하며, 소프트웨어 아키텍처는 시스템을 구성하는 요소들과 그 사이의 상호관계로 구체화되는 시스템의 근본적인 구조이자, 시스템을 설계하고 발전시키기 위한 지침과 원리를 의미한다.