[Software Engineering] CH5 : Software Requirements Elicitation Review

·2024년 5월 17일
0

Software Engineering

목록 보기
5/5

Key Takeaway Points

  • 도메인 모델링은 개발팀이 어플리케이션 도메인을 이해하는 데 도움을 주기 위한 개념화 과정이다.
  • 도메인 모델링은 5가지 단계로 이루어진다.
    1. 어플리케이션 도메인에 대한 정보 수집
    1. 브레인스토밍
    2. 브레인스토밍 결과 분류
    3. UML 클래스 다이어그램을 사용해 도메인 모델 시각화
    4. 도메인 모델에 대한 검사 및 검토 수행

1. What is Domain Modeling?

도메인 모델링은 개념화 과정이다. 중요한 도메인 개념, 속성 및 개념 간 관계를 식별하는 것을 목표로 한다. 결과는 도메인 모델이라고 하는 다이어그램으로 묘사한다. 개념화 과정에는 관찰, 분류, 추상화, 일반화 등이 포함된다.


2. Why Domain Modeling?

소프트웨어 엔지니어들은 서로 다른 배경과 경험을 가져 어플리케이션에 대한 인식도 다르다.

  • 도메인 모델의 구축은 인식의 차이를 확인하고, 해결하는데 도움을 준다.
  • 도메인에 대한 공통적인 인식을 정의하고 의사소통을 효율적으로 할 수 있다.
  • 개발팀이 고객/사용자에게 인식을 전달하고, 피드백을 구할 수 있다.

3. Object-Orientation and Class Diagram

3.1. Extensional and Intentional Definitions

개발자는 어플리케이션의 특정 인스턴스를 관찰하고, 도메인 모델이라 불리는 개념적 모델을 생성하기 위해 관찰한 인스턴스를 분류하고, 추상화하고, 일반화한다.

  • extensional definition은 개념의 인스턴스를 열거하여 개념을 정의한다.
    예를 들면, '개'에 대한 extensional definition은 옆집 개, 공원에서 산책하는 개 등으로 구성된다.
  • intentional definition은 개념의 인스턴스가 가지고 있는 attribute 및 operation을 지정함으로써 개념을 정의한다.
  • UML class diagram은 클래스와 클래스의 attribute와 operation, 클래스 간 관계를 설명하는 구조 다이어그램이다.

3.2. Class and Object

  • 클래스는 개념의 intentional definition인 유형이다. 클래스는 클래스의 인스턴스를 특정짓는 attribute와 operation을 캡슐화한다. 객체는 클래스의 인스턴스이다.

3.3. Object and Attribute

attributeobject
independent existenceXO
생성 방법입력 장치에서 데이터 입력입력이 아닌 생성자 호출
비고개체를 설명하고 특성화함

3.4. Association

association은 하나 이상의 클래스 간 관계이다. 한 클래스의 객체가 다른 클래스의 객체와 연관될 수 있다고 명시한다.
ex. 은행 시스템에서 고객은 계정을 소유한다. → 고객 클래스와 계정 클래스는 연관 관계이다.

3.6. Aggregation

aggregation은 두 클래스 간 이진 관계이다. 한 클래스의 개체는 다른 클래스의 개체의 일부임을 나타낸다.
ex. 책은 챕터로 구성되어있고, 챕터는 섹션으로 구성된다.
ex. 엔진은 자동차의 일부이다.

3.7. Inheritance

inheritance는 두 개념 또는 클래스 간 이진 관계로, 하나의 개념 또는 클래스는 다른 하나의 일반화(또는 전문화)이다.
ex. Account의 일반화/전문화

  • Account는 Checking Account, Saving Account의 일반화이고,
    Checking Account, Saving Account는 Account의 전문화이다.

3.8. Inheritance and Polymorphism

polymorphism은 한 가지가 다른 형태를 취할 수 있다는 것을 의미한다. 공통 인터페이스를 사용해 Saving Account, Checking Account 같은 다양한 유형의 계좌를 처리할 수 있고, 특정 계좌 유형에 상관없이 자금 예금/인출 같은 작업을 수행할 수 있다.

inheritance과 polymorphism은 비슷해보이지만 다르다.

  • inheritance는 한 클래스가 다른 클래스보다 일반화 또는 전문화되어 있다.
  • polymorphism은 한 객체가 여러 형태를 가진다.

inheritance는 클래스 간 계층 구조를 정의하고, 코드의 재사용을 촉진한다.
polymorphism은 객체가 여러 다른 형태를 가질 수 있음을 나타내고, 같은 인터페이스를 통해 다양한 객체를 처리할 수 있도록 한다.

3.9. Association Class

만약 학생이 여러 개의 강좌를 등록한다면, 각 강좌에 대한 성적이 나온다. 성적이 학생 클래스의 속성이라면, 한 학생이 여러 개의 강좌를 등록하는 것이 가능하기 때문에 학생 클래스는 여러 개의 성적 속성을 가져야 한다. 어떻게 모두 다른 강좌의 성적 속성을 차별화할 수 있을까? association class를 활용해 이를 해결할 수 있다.

association class는 association 인스턴스에 대한 속성과 동작을 정의하는 특수 클래스다.
학생과 강좌 사이의 등록 연관성을 위해 등록이라고 하는 연관 클래스를 정의한다. 등록에는 성적 및 학기 속성을 포함한다. 학생이 강좌를 3개 등록한다면, 인스턴스가 3개 생성된다.



6. Guidelines For Domain Modeling

모든 팀원들은 브레인스토밍과 분류를 개별적으로 하지 않고, 팀으로 수행해야 한다. 그래야 공통된 이해를 구축할 수 있다.

  • 브레인스토밍을 먼저하고, 분류를 해야 한다.
  • 각각의 브레인스토밍과 분류 세션은 한 시간에서 두 시간 정도 지속되어야 한다.
  • 각각의 브레인스토밍과 분류 세션은 효과적으로 조정되어야 한다.
  • 브레인스토밍과 분류 세션이 진행되는 동안 UML class diagram을 그려선 안된다.

7. Applying Agile Principles

  • 고객/사용자와 협력해서 어플리케이션 및 도메인을 이해한다.
    요구사항을 이해하는 것은 어플리케이션과 도메인을 얼마나 이해하는지에 달려있다.

  • 팀이 어플리케이션 도메인을 이해해야 하는 경우에만 도메인 모델링을 수행한다. 도메인 모델링은 단순하게 유지하고 점진적으로 확장한다.

  • 도메인 모델링은 actor-system interaction modeling, object interaction modeling, object state modeling, and/or activity modeling과 동시에 수행될 수 있다.
    모델링 시, 모든 도메인 지식을 다 알려고 하는 것은 시간이 너무 많이 걸릴뿐더러 후속 단계에서 누락된 부분을 발견할 수 있기 때문에 불필요하다. 이는 모델링 프로세스가 역추적을 포함하는 반복적 프로세스임을 의미한다.


0개의 댓글