동산로의 블로그
OOAD 본문
OOAD(Object Oriented Analysis and Design)의 방법론에 대해서 정리해보자.
Object-Oriented Analysis와 Object-Oriented Design 둘 다를 통칭하는 말 입니다. OOAD는 어떻게 객체지향프로그램을 통해서 어플리케이션, 시스템, 비즈니스를 분석하고 디자인을 할 수 있을 지에 대한 기술적인 접근입니다.
이 글에서는 RDD(Wirfs-Brock), OMT(Rumbaugh), Booch method, Jacbson(OOSE) 그리고 Coad/Yourdon의 방법론에 대해서 정리하겠습니다. 다만 미리 알아두셔야 할 점은 이 방법론들은 UML이 등장하기 전 혹은 등장할 때 쯤에 나온 개념들 입니다. 특히 그 중 3명 Rumbaugh, Jacobson, Booch이 이후에 UML1.0을 만들었기 때문에 UML과 상통합니다. 이 개념들은 현대 OOP에 잘 녹아 있습니다.
Wirfs-Brock : Responsibility-Driven Design(RDD)
핵심 요소 3가지가 있습니다.
책임(Responsibilities) : 객체가 알고 있는 것과 객채의 행위 이것을 책임이라 부릅니다.
Collaborators : 객체가 상호작용하는 대상입니다.
Role : 객체는 항상 같은 역할을 수행하는 것이 아니라 어떤 collaborator과 상호작용 하는지에 따라 역할이 다릅니다.
핵심요소를 사용해서 CRD 카드 (Class-Responsibility-Collaborator)을 작성합니다. 각각의 카드에는 Class name, Responsibilites, Collaborator가 포함됩니다.
디자인 가이드라인
- 행위에 집중
- 책임이 비슷한 것 끼리 그룹짓기
- 중앙 컨트롤 보다는 delegation을 사용
- 디자인은 외부에서 안으로, 즉 각각의 시스템의 외부 상호작용을 먼저 정의하고 내부를 채워갑니다.
Rumbaugh : Object Modeling Technique(OMT)
핵심 요소
object model : 클래스 다이어그램, association, 상속
dynamic model : 상태 기계와 상호작용
function model : data flow diagrams.
프로세스
분석->시스템디자인->객체 디자인 -> 적용(implementation)
Booch method
프로세스
컨셉잡기(conceptualization)->분석->디자인->진화(evolution)->유지보수(maintainance)
6가지 model/diagrams
class diagram, state transition diagrams, object diagrams, process diagrams, module diagrams, interaction diagram
class, object diagram은 정적이고 state diagram은 동적입니다.
Jacobson Methodology : Object-Oriended Software Engineering (OOSE)
OOSE에서 가장 중요한 점은 유스케이스(Use case)입니다. 이를 통해서 다음 프로세스를 적용합니다.
요구사항(requirements) : use case diagram과 problem domain object diagram을 생성
분석 : analysis diagram
디자인 : state transition diagram, interaction diagram
적용(implementation)
테스팅 모델
Coad/Yourdon
coad-yourdon은 DFD(Data Flow Diagram)을 어떻게 그려야 할 지에 대해서 정리하였다. (Gane-Sarson 도 있다. 서로 다른 표현법을 가지고 있다.).
E-R diagram (정보처리 기사 책에서는 ERD를 쓴다는데??? )
참고자료
https://www.wirfs-brock.com/Design.html
https://www.conceptdraw.com/examples/student-analysis-sample
https://iq.opengenus.org/rumbaugh-booch-and-jacobson-methodologies/
https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model
https://en.wikipedia.org/wiki/Object-oriented_analysis_and_design#Object-oriented_design
https://www.geeksforgeeks.org/booch-methodology-in-object-oriented-analysis-and-designooad/