소프트웨어 생명주기

Romy·2022년 4월 17일
0
post-thumbnail

💡 소프트웨어의 중요 조건 : 효율성, 정확성


1. 요구분석 (Requirement Analysis)


  • user의 요구사항을 바탕으로 해답이 될 수 있는 요건들을 정의
  • 목표 소프트웨어의 필수 및 선택 요건을 구분
  • 요구명세서 (Requirement Specification) 작성
  • 최선의 해결방법을 위해 충돌되는 문제점을 이해하는데 도움되는 과정

2. 시스템명세 (System spcification)


  • 시스템이 ‘무엇을 수행해야 되는가’를 정의
  • 기능적 명세(Functional Specification) 를 통해 정의
    • 소프트웨어의 기능 → I/O 에 대한 명세 포함
    • 유저와 구현자 간의 구체적인 합의사항 및 하나의 계약서
    • ex) Input과 Output은 무엇이며 형식은 무엇인가? 파일의 각 Record 양식은 무엇인가?

3. 설계 (design)


  • 시스템 명세 단계에서 정의된 기능을 수행할 방법을 설계

  • 전체적인 알고리즘을 설계

  • 무엇(what) ———> 어떻게(how) 구체적으로 계속적인 변환을 수행하는 과정

  • 설계 방법

    • 하향식 설계 (top-down design)
      • 단계별 세분화라고도 함
      • 하나의 큰 문제를 여러 개의 작은 문제로 분해하여 문제 전체 해결
    • 상향식 설계(bottom-up design) :
      • 기존에 개발되어 이용할 수 있는 것들을 재사용하여 전체 목적 달성
      • 객체 지향 설계 방법과 유사

4. 구현 (implementation)


  • 설계된 알고리즘을 특정 프로그래밍 언어로 변환 (= 코딩하는 것)
  • 프로그램 구현의 기본원칙
    • Structured Programming (구조적 프로그래밍)

      • 지정문, 조건문, 반복문을 이용하여 작성
      • 정확성 증명 쉬움, 프로그램의 유지보수 쉬움, 디버깅 쉬움
    • Modular Programming (객체 프로그래밍)
      - 여러 module로 나눠 계층 형태의 관계를 갖도록 구성
      - 외부에 영향을 주지 않고 module 구현을 효율적으로 구현하기 용이

      💡 module : 하나의 기능만을 수행하는 서브 프로그램. 하나의 진입점과 하나의 진출점 가짐


5. Test (test)


  • 목적 : 소프트웨어에 내재되어 있는 에러를 찾는 것
  • 테스트의 3단계
    1. 단위검사 (unit test) : 각 module별로 제공된 test data로 검사
    2. 통합검사 (integration test) : 몇 개의 요소들을 그룹으로 통합시켜 검사
    3. 시스템검사 (system test) : 시스템이 기능적 명세에 따라 정확하게 동작하는가 진단
  • 인수검사 (acceptance test)
    • 개발 완료된 소프트웨어를 인수하기 전 주문자 측에서 자체적으로 진행하는 검사
    • benchmark test : 경쟁적인 시스템과 성능 비교
    • beta test : 초기 버전의 소프트웨어를 사용하여 검출되지 않은 에러를 찾는 방법

💡 Test는 소프트웨어의 정확성을 확신하기 위한 것. 보장하기 위한 것 X


6. 유지보수 (maintenance)


  • 완성된 소프트웨어를 사용하기 시작한 이후 의 모든 활동
  • 유지보수가 필요한 경우
    • 추가 에러나 버그가 발견되어 수리가 필요한 경우
    • 실제 운영 환경이 변경되어 교정해야하는 경우
    • User의 추가 구현 요구사항이 발생한 경우
profile
👩‍💻 IT Engineering

0개의 댓글