1. 학습 목표

  • 소프트웨어 개발 방법론의 개념을 설명할 수 있다.
  • 소프트웨어 개발 생명주기의 개요를 설명할 수 있다.
  • 소프트웨어 개발 생명주기의 일반적 공정과정을 설명할 수 있다.

2. 학습 내용

소프트웨어 개발 방법론의 개요

소프트웨어 공학 패러다임

  • 패러다임 : 사물을 바라보는 관점, 기본틀, 접근방법, 스타일 등을 의미함
  • 소프트웨어 공학 패러다임 : 소프트웨어 개발 시 고려해야 하는 개발방법, 개발환경, 개발관리 등에 대한 이론적인 체계나 접근 방법

소프트웨어의 특징에 따라 적절한 소프트웨어 공학 패러다임을 적용하는 것이 필요함

  • 초창기의 소프트웨어 개발 시 기존 건축 공학의 방법론을 도입함
    • 개발 단계에 대한 명확성을 얻고 소프트웨어 프로젝트 관리를 용이하게 함

소프트웨어 개발 시 고려해야 하는 내용

소프트웨어 개발은 개발방법, 개발환경, 개발관리 등에 따라 다양한 모습을 나타냄

  • 소프트웨어 개발방법
    • 소프트웨어를 어떻게 만들 것인가를 결정하는 기술적인 요소를 제시
    • 프로젝트에 대한 계획과 추정, 요구사항 분석, 코딩 등 수행되어야 할 과제를 포함

  • 소프트웨어 개발 환경
    • 개발 방법론을 지원해 주기 위해 필요한

      CASE(Computer-Aided-Software-Engineering),

      DBMS(Database Management System) 등을 포함

  • 소프트웨어 개발관리
    • 소프트웨어 개발방법과 개발환경을 묶어 시스템을 효율적으로 적시에 개발할 수 있도록 공정 과정과 절차를 제시함

소프트웨어 개발 방법론

소프트웨어 개발, 유지보수 등에 필요한 여러가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것

많이 사용되고 있는 4가지 소프트웨어 공학 패러다임으로는

  • 폭포수 모형 (waterfall model)
  • 원형 모형 (prototyping model)
  • 나선형 모형 (spiral model)
  • 4세대 기법 (4th generation techniques)

등이 있다.

소프트웨어 공학이 다루는 일반적인 주제

분야의미사례
방법 (method)소프트웨어 제작에 사용하는 기법이나 절차• 구조적 분석, 설계 방법 • 객체지향 분석, 설계 방법
도구 (tool)자동화된 시스템• 설계 도구 • 프로그래밍 도구 • 테스트 도구
프로세스 (process)도구와 기법을 사용하여 작업하는 순서• unified process • eXtreme programming
패러다임 (paradigm)접근 방법, 스타일• 구조적 방법론 • 객체지향 방법론

소프트웨어 개발 생명주기

정의

요구사항 정의 → 소프트웨어 구현 → 유지보수

  • 소프트웨어 개발 단계와 각 단계별 주요 활동, 활동 결과에 대한 산출물로 표현할 수 있음
  • 소프트웨어 패러다임, 소프트웨어 수명주기, 소프트웨어 라이프사이클 등 다양한 명칭으로 불리기도 함

역할

  1. 프로젝트 비용산정과 개발계획을 수립할 수 있는 기본 골격이 됨
  1. 용어 및 기술의 표준화를 가능하게 함
  1. 문서화가 충실한 프로젝트 관리를 가능하게 함
  1. 여러 소프트웨어 간에 상호 일관성을 유지하게 함
  1. 프로젝트 진행 방향을 명확하게 파악하게 함

소프트웨어 개발 생명주기의 일반적 공정과정

타당성 검토 및 개발계획 → 요구사항 분석 → 설계 → 구현 → 테스트 및 유지보수

  • 타당성 검토 및 개발계획
    • 개발할 소프트웨어가 법적, 경제적, 기술적으로 실현 가능성이 있는지 조사함
    • 타당한 검토단계에서 실현 가능성이 있는 경우 시작함

  • 요구사항 분석
    • 사용자의 관점에서 시스템의 요구사항을 모으는 것
    • 업무 분석으로 불려짐
    • 고객의 요구가 나오게 된 원인, 배경, 환경 등에 대한 분석을 포함함

  • 설계
    • 요구사항 분석과정에서 모아진 요구사항을 설계도면에 옮기는 것
    • 서브시스템들로 이루어지는 시스템 구조를 결정하고, 서브시스템들을 하드웨어 및 소프트웨어 등의 구성요소들에게 할당함

  • 구현
    • 설계의 결과를 사용자가 이용할 수 있는 모습으로 변환하는 것
    • 시스템의 기능이 수행 가능한 모습으로 나타납
    • 프로그래밍 또는 코딩이라고 부름
    • 프로그래밍의 결과 : 컴퓨터 프로그램
    • 소프트웨어의 경우 설계가 제대로 이루어지면 시스템 구현은 상대적으로 단순하고, 기계적인 과정이 되어 효율적임

  • 테스트
    • 소프트웨어 제품의 오류를 발견하고, 수정하는 과정
    • 우수한 품질의 제품을 얻기 위해서는 제품이 개발되는 공정과정마다 품질 보증을 위한 절차를 따라야 함
    • 공식적인 검토회 등을 통하여 잘못된 것을 걸러내는 작업이 수행되어야만 함
    • 품질보증 활동의 중요한 일부분이며, 그 임무는 사용자 요구사항, 설계, 구현의 전 과정에 대한 최정점검을 포함함

  • 유지보수
    • 사용중 발생하는 여러 변경사항에 대해 적응하는 활동이며, 변화에 대비하는 과정