학교 수업 정리/소프트웨어공학

[소공 수업 정리] 기말 시험 범위

hjr067 2024. 12. 7. 15:32

OO Development Process Using UML

  1. Inception (준비)
    • 기존의 시스템을 update하거나 새로운 시스템 개발을 위한 business case를 구축
    • STEP
      • Problem statement
      • Use case diagram
        • Actor와 Use case를 추출하여 Use case diagram 작성
      • Flow of events
        • 각 Use case 항목 마다 Flow of events 작성
        • 주요사항
        • 예외사항
  2. Elaboration
    • 목표는 Problem domain 분석, architecture foundation 구축, 프로젝트에서 가장 위험 많은 부분 강조, 프로젝트를 성공적으로 수행할 수 있는 초기 버전 구축
    • 이 단계를 성공했을 시 얻게 되는 것:
      • 프로젝트의 핵심 아키텍처 확정시키기
      • system의 주요 기능과 요구사항 명확
      • 위험요소가 제거되거나, 관리 가능한 수준으로 낮아짐
      • 개발팀이 개발 단계에서 진행할 작업 명확
    • ELABORATION에는:
      • Initial Class Diagram
      • Sequence Diagram
      • Refine the Class Diagram
      • Decide Software Architecture
      • Iteration Planning
    • STEP
      • Initial Class Diagram
        • class 도축
        • inital class diagram 작성
        • package diagram 작성
          • class 들을 grouping
      • Sequence Diagram
        • flow별로 sequence diagram 작성
        • collaboration diagram 작성 → 객체 사이의 응집력을 알 수 있음
      • Refine the Class Diagram
        • Class의 attribute, operation
          • sequence diagram의 object에서 class
          • sequence diagram의 message에서 atttibute와 operation
        • Class 사이의 relationship
          • collaboration diagram
          • component diagram
          • deployment diagram
  3. Construction (반복적 개발 프로세스(iteration planning)을 기반으로 sw를 단계적으로 구현하는 구체적인 개발 과정)
    • 목표는 sw를 iteration planning에 맞추어 단계적으로 개발
    • 각 반복 주기에서 작동 가능한 sw 를 만드는 것. 이를 통해 점진적으로 시스템의 기능을 확장, 개선 (즉, 한 번에 모든 것을 만드는 것이 아니라, 작고 관리 가능한 부분으로 나누어 구현)
    •  STEP
      • 구현할 class 및 relationship 파악 - 이번 반복 주기에서 구현할 클래스와 관계 선택
        • Ex) 쇼핑몰 시스템 개발 중 - 이번 iteration에서 사용자(user)와 상품(product)라는 클래스를 구현할 지 결정하는 단계이고, 클래스 사이의 관계(연관 관계, 상속 관계 등)도 함께 정의한다. (user -> 구매한다 -> product / product -> 포함된다 -> category)
      • Complete the design for the selected-classes and relationships (상세 설계)
        • Data types for attributes: 각 클래스가 어떤 속성을 가지고 있고, 그 속성의 데이터 타입이 무엇인지 정의
          • Ex. 이름(name): String, 나이(age): Integer, 이메일(email): String
        • Operation signatures: 클래스에서 사용할 method의 이름, 입력 parameter, 반환 타입을 정한다.
          • User Class:
            • login(String email, String password): boolean
            • logout(): void
        • Addition of other operations: 필요에 따라 추가적으로 구현할 메서드를 정의
          • Product Class:
            • calculateDiscount(): double
            • getCategory(): String
        • Addition of implementation level classes: 구현 단계 클래스 추가 - 디자인 단계에서는 고려하지 않았던 구체적인 구현을 위한 보조 클래스나 utility 클래스를 추가로 정의
          • Ex. DatabaseConnector 클래스: 데이터베이스와 통신하는 역할, Logger 클래스: 시스템 로그를 기록하는 역할
        • Specification of association/aggregation design decisions: 연관/집합 관계 설정 - 클래스 간 관계를 상세히 정의
          • Ex. User 클래스와 Product 클래스 간의 "구매" 관계를 명확히 정의
            • User는 여러 Product를 가질 수 있음 (1:N)
        • Specification of inheritance design decisions: 상속 관계 설계 결정 - 클래스 간의 상속 구조를 정의
          • User → AdminUser (관리자)
          • Product → DigitalProduct (디지털 상품), PhysicalProduct (실물 상품)
      • Create the code for the iteration: 반복 주기를 위한 코드 작성
      • Create/update the documentation for the iteration
      • Test the iteration
      • Integrate and test the iteration with any previous iterations (sw 만드는 작업 완료될 때까지 반복)
    • 이 과정을 반복적으로 진행하면서, 점점 더 많은 클래스와 기능을 추가하게 된다. 이를 통해 대규모 시스템을 한 번에 완성하려는 부담을 줄이고, 단계적으로 개선하며 완성도를 높일 수 있다.
  4. Transition (인도)
    • 목표는 소프트웨어를 user에게 delivery, 실제 환경에서 제대로 동작하는지 확인, sw를 안정화
    • 산출물
      • 실행 코드 → deployment (배포)
      • Quality Assurance(품질 보증) 결과: 모든 Test Case를 검토하여 sw가 올바르게 작동했는지 검증
      • Updated documentation: User Manual, System Documentation, Maintenance Documentation
      • Performance analysis (성과 분석)

A Case Study

Software Development Lift Cycle(SDLC) - 주요 4단계