절차

분석 -> 설계 -> 구현 -> 테스트

소프트웨어 품질관리

소프트웨어 제품품질(Product)평가/ISO_IEC9126

  • 가능성<측정기준>
  • 신뢰성: 수명주기 중 고장이 날 때 까지의 평균기간(MTBF)
  • 사용 용이성: 사용자가 얼마나 편리하게 사용할 수 있는가
  • 효율성: 비용 대비 효과, 성능
  • 유지보수성: 고장이 난 후 평균 수리 기간이 얼마나 걸리는지(MTBF)
  • 이식성: 다른 프로그램에서 호환이 가능한지

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

  • SPICE(Software Process Improvement and Capability Determination) 1995.
    • 5단계: 최적화(Optimizing) 현재는 물론 미래 프로세스에 적용해도 목표를 만족시키며 지속적으로 개선할 수 있는 수준
    • 4단계: 예측(Predictable) 표준 프로세스가 일관된 통제에 따라 수행되면 정량적으로 성과를 측정할 수 있는 수준
    • 3단계: 확립(Established) 표준으로 정해진 프로세스에 따라 결과가 산출되는 수준
    • 2단계: 관리(Managed) 정해진 절차 및 계획에 따라 결과가 산출되는 수준
    • 1단계: 비정형적실행(Performed) 계획에 따라 꾸준히 결과물이 산출되는 것이 아니라 일시적으로 산출되는 수준
    • 0단계: 불안정(Incomplete) 작업 산출물이나 결과를 기대하기 어려운 수준
  • CMM(Capability Maturity Model): 소프트웨어 개발과 관련된 프로세스 품질을 평가하고 개선하기 위해 개발된 모델
    • 초기(Initial): 프로세스가 비공식적이며, 주로 개인의 역량에 의존한다.
    • 반복적(Managed): 기본적인 프로젝트 관리 프로세스가 수립되고, 프로젝트 진행 상황을 관리할 수 있는 기초가 마련된다.
    • 정정형(Defined): 조직의 프로세스가 표준화되고 문서화된다.
    • 정량적 관리(Quantitatively Managed): 프로세스의 성과를 측정하고, 데이터 기반으로 관리한다.
    • 최적화(Optimizing): 지속적인 개선이 이루어지는 단, 프로세스의 효율성을 극대화하고 새로운 기술이나 방법론을 도입하여 프로세스를 최적화한다.

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

  • 웹 엔지니어링: 웹 기반 소프트웨어와 일반 소프트웨어의 차이
  • 관점 지향 프로그래밍(AOP)
  • 컴포넌트 기반 소프트웨어 개발: 교체가 필요한 부분을 갈아 끼우면 바로 동작하는 모델
  • 소프트웨어 아키텍처: 소프트웨어 시스템의 구성요소들과 그들 사이의 상호관계로서 구체화되는 시스템의 근본적인 구조이며 또한 시스템을 설계하고 발전시키기 위한 지침과 원리를 의미한다.