설명

이해

  • 소프트웨어 개발 생명 주기와 소프트웨어 개발 방법론의 비교

    • 소프트웨어 개발 생명 주기(SDLC): 상황에 따라 적절한 수단을 선택한다. (전체 과정)
    • 소프트웨어 개발 방법론: 구체적인 활용 방법을 선택한다. (어떻게)

    지하철과 지도

    • 집에 가는 방법이 뭐가 있더라? 버스? 택시? 자전거?
    • 차가 많이 막혀서 오래 걸리니 지하철을 타야겠다.
    • 지하철역을 어떻게 가야할까? 지도를 보고 찾아 가야겠다.

구조적 개발 방법론

  • 구조적 분석 (무엇을 찾는 과정)

    • 사용자의 요구를 파악하여 문서로 정리하는 단계
    • 자료흐름도, 자료사전, 소단위 명세서를 작성하는 순서로 진행한다.
    • 전통적 개발 방법 (1979. Tom DeMarco) 구조적 개발
    • 자료흐름도: 소프트웨어 내부의 프로세스, 자료 저장소, 자료의 흐름을 나타내는 그래프.
    • 자료사전: 자료흐름도에서 사용된 모든 자료를 모은 것.
    • 소단위 명세서: 자료흐름도에서 작성한 프로세서의 작업과정을 자세히 기술한 것.
  • 구조적 설계 (어떻게)

    • 소프트웨어가 요구사항을 기술적으로 어떻게 구현할 것인지 초점을 둠.
    • 전체 소프트웨어의 뼈대를 나타내는 구조도를 작성한 후 프로그램 설계, 자료설계, 사용자 인터페이스 설계로 나누어 수행
    • 구조도 작성: 각 소프트웨어 모듈은 사각형, 모듈의 호출관계는 화살표로 표시하여 계층적 트리 모양으로 작성한다.
    • 프로그램 설계: 프로그램 모듈별로 알고리즘(정확성, 효율성, 적합성)을 설계하는 것.
    • 자료설계: 자료를 저장할 파일이나 데이터베이스 구조를 설계하는 것.
    • 인터페이스 설계: 입력장치를 통해 시스템에 명령을 전달하고 시스템으로부터 응답을 받는 방법을 설계하는 것.
  • 구현

    • 설계 단계에서 작성한 내용을 바탕으로 코드를 작성하는 단계
  • 테스트

    • 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트

객체지향 개발 방법론

  • 객체지향분석(OOA): 사용자의 요구를 유스케이스 다이어그램으로 작성하는 요구추출과 추출된 요구를 분석하여 클래스 다이어그램과 시퀀스 다이어그램으로 작성하는 요구분석으로 나누어 작업

    • 요구추출: 액터 찾기, 시나리오 작성, 유스케이스 작성과정을 거침
    • 요구분석: 클래스/객체 찾기, 클래스/객체 사이의 상호작용 모형화, 클래스/객체 사이의 연관관계 찾기, 객체 속성 추가
  • 객체지향설계

    • 설정한 객체를 구체화하는 작업
    • 객체에 속한 속성이나 기능을 정의
    • 각 객체 사이의 메시지 전달 과정에서 빠진 객체와 기능을 보안해서 재정의
  • 구현

    • 설계한 클래스/객체 상호간의 메시지 전달 과정을 실제로 코딩하는 단계
    • 효과적인 구현을 위해 디자인 패턴과 리팩토링 방법을 제공
  • 테스트

    • 메소드 테스트, 클래스/객체 테스트, 객체집합 테스트, 시스템 테스트 + 웹 특성을 고려한 테스트