OO Development Process Using UML
- Inception (준비)
- 기존의 시스템을 update하거나 새로운 시스템 개발을 위한 business case를 구축
- STEP
- Problem statement
- Use case diagram
- Actor와 Use case를 추출하여 Use case diagram 작성
- Flow of events
- 각 Use case 항목 마다 Flow of events 작성
- 주요사항
- 예외사항
- 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
- Class의 attribute, operation
- Initial Class Diagram
- 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
- User Class:
- Addition of other operations: 필요에 따라 추가적으로 구현할 메서드를 정의
- Product Class:
- calculateDiscount(): double
- getCategory(): String
- Product Class:
- Addition of implementation level classes: 구현 단계 클래스 추가 - 디자인 단계에서는 고려하지 않았던 구체적인 구현을 위한 보조 클래스나 utility 클래스를 추가로 정의
- Ex. DatabaseConnector 클래스: 데이터베이스와 통신하는 역할, Logger 클래스: 시스템 로그를 기록하는 역할
- Specification of association/aggregation design decisions: 연관/집합 관계 설정 - 클래스 간 관계를 상세히 정의
- Ex. User 클래스와 Product 클래스 간의 "구매" 관계를 명확히 정의
- User는 여러 Product를 가질 수 있음 (1:N)
- Ex. User 클래스와 Product 클래스 간의 "구매" 관계를 명확히 정의
- Specification of inheritance design decisions: 상속 관계 설계 결정 - 클래스 간의 상속 구조를 정의
- User → AdminUser (관리자)
- Product → DigitalProduct (디지털 상품), PhysicalProduct (실물 상품)
- Data types for attributes: 각 클래스가 어떤 속성을 가지고 있고, 그 속성의 데이터 타입이 무엇인지 정의
- 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 만드는 작업 완료될 때까지 반복)
- 구현할 class 및 relationship 파악 - 이번 반복 주기에서 구현할 클래스와 관계 선택
- 이 과정을 반복적으로 진행하면서, 점점 더 많은 클래스와 기능을 추가하게 된다. 이를 통해 대규모 시스템을 한 번에 완성하려는 부담을 줄이고, 단계적으로 개선하며 완성도를 높일 수 있다.
- Transition (인도)
- 목표는 소프트웨어를 user에게 delivery, 실제 환경에서 제대로 동작하는지 확인, sw를 안정화
- 산출물
- 실행 코드 → deployment (배포)
- Quality Assurance(품질 보증) 결과: 모든 Test Case를 검토하여 sw가 올바르게 작동했는지 검증
- Updated documentation: User Manual, System Documentation, Maintenance Documentation
- Performance analysis (성과 분석)
A Case Study
'학교 수업 정리 > 소프트웨어공학' 카테고리의 다른 글
[소공 수업 정리] Software & System Modeling UML (0) | 2024.12.10 |
---|---|
[소공 수업 정리] Test Techniques black (2) | 2024.12.07 |
[소공 수업 정리] Test Techniques white (0) | 2024.12.05 |
소프트웨어공학 중간고사 정리 (1) (5) | 2024.10.16 |