본문 바로가기
CS/소프트웨어 공학 에센셜

객체지향 분석 기법

by k-mozzi 2021. 6. 12.
반응형
Preface

 

이번 주는 기말고사 기간이라 소프트웨어 공학 공부에 집중하지 못했다.

다음주 월요일 시험을 마지막으로 이번 학기가 종료됨에 따라 개발 공부에 박차를 가할 예정이다.

 

어제는 학습에 도움을 주는 친구와 함께 공부 및 블로그 업로딩의 방향성에 관한 이야기를 했다.

친구는 내가 지금껏 공부했던 내용들이 이후 더욱 정확한 정보로 대체될 수 있도록 항상 오픈 마인드를 유지해야 하며, 단지 기계적으로 내용을 암기하는 것이 아닌, '왜 그럴까?'라는 생각을 바탕으로 공부하는 자세가 필요하다고 거듭 충고했다.

 

개발 공부에 도전하기로 마음먹은 뒤, 처음으로 친구에게 이 이야기를 들었을 땐 "초등학교 입학 이후로 대학교 4학년을 바라보는 지금껏 줄곧 수능공부 식으로 공부했던 나에게 있어 'Why?'라는 질문을 바탕으로 공부를 전개한다는 것은 생각보다 어려운 일이 아닐까? 그런 공부 방식이 꼭 필요할까?"라는 생각이 들었다.

 

그러나 시간이 지나면 지날수록 내가 고수하던 공부 방식은 단지 특정 시험을 위한 하나의 도구에 그칠 뿐, 나를 그 이상 성장시킬 순 없을 것이라는 확신을 가질 수 있었다. 어쩌면 나는 변화가 두려워 스스로를 '암기'라는 익숙한 방에 가두어 놓은 것일지도 모른다.

 

틀에 박힌 사고방식을 버려야 성공할 수 있다는 말이 있듯, 나 역시 과거의 습관을 버리고 더욱 높게, 더욱 멀리 세상을 바라보고자 한다.

 

but, 기본 개념을 충분히 익혀야 다양한 고민을 할 수 있고 그에 따른 궁금증을 해결할 수 있기 때문에 빠른 시일 내에 기본서들을 이해하는 것이 필요하다!!


- entity는 '개체'로, object는 '객체'로 구분하자

 

- 객체지향 개발의 목적 : 데이터와 행위를 하나로 묶어 객체를 정의하고 추상화시키는 작업

 

- 객체 모델링 : 누구에게 이 일이 필요한가

 

- 동적 모델링 : 어떤 순서로 일이 진행되어야 하는가

 

- 기능 모델링 : 어떤 일이 수행되어야 하는가

 


1. 객체지향 분석 기법 개요

 

- 객체지향 개발 방법의 기본 개념

① 객체(object)

② 객체의 속성(attribute)

③ 동작(behaviour)

④ 클래스(class)

⑤ 객체 사이의 관계(relationshiip)

→ 개발의 전 과정에 걸쳐 동일한 방법론 및 표현 기법 적용 가능


2. 객체지향 분석 프로세스

 

- 행위자(actor) : 사용자를 동질성 있는 집단으로 분류한 것

 

- 캡슐화(encapsulation)의 효과

① 객체 내부 정보의 손상과 오용 방지

② 공개된 오퍼레이션을 정확히 알면 외부에서 해당 객체 사용 가능

③ 객체의 독립성이 구조적으로 보장

 

- 객체지향 분석 과정

① 각 행위자의 시스템을 사용 용도 및 목적에 따라 사용 사례(usecase) 정리

기능

② 각 유스케이스에 대한 시나리오 작성

동적

③ 유스케이스 시나리오를 통해 행위자와 시스템이 주고받는 정보 탐색

정보

 

△ 하향식 접근방법 (블랙박스)   

▽ 상향식 접근방법 (화이트박스)

 

④ 시스템 내부의 클래스를 찾아 그들의 관계, 속성 등을 클래스 다이어그램으로 표시

정보

⑤ 시스템 내부의 객체들이 상호작용하는 과정을 조사하여 시퀀스 다이어그램 작성

동적

⑥ 객체들 사이의 이벤트에 대한 논리적 처리과정을 액티비티 다이어그램 작성

기능


3. 정보 모델링 = 객체 모델링

 

- 시스템에서 요구되는 객체를 찾아내어 객체들의 특성 및 관계를 규명하는 것이다.

 

- 객체(object instance) : 객체 모델링의 기본 단위 → 엔티티

① 객체의 이름

② 속성값

 

- 클래스(class) : 유사한 객체들의 모임 → 엔티티 타입

① 클래스 이름

② 객체의 속성

③ 객체의 동작

 

[객체와 클래스]

 

- 클래스들 사이의 연관성은 관계(relationship)에 의해 표시된다.

→ 정보 모델링에선 마름모로 표시하지만, UML에선 관계 이름만으로 표시 가능

 

[클래스 사이의 관계]

 

- 연관 클래스(association class) : 관계가 새로운 속성이나 동작을 가지는 경우

→ 관계는 하나의 클래스로 정의되며 다른 클래스와 연관을 맺을 수 있음

 

[관계 속성(연관 클래스)]

 

- UML에서의 매핑 제약 조건과 참여 제약 조건 표기 방법

 

[매핑 수와 참여 제약 조건]

 

- 일반화(generalization)의 특성

① 분석 결과의 재사용을 가능하게 함

② 데이터의 무결성(integrity : 데이터의 정확성 및 일관성 유지) 향상

 

[클래스의 일반화]

 

- 다중상속(multiple inheritance) : 특정 클래스의 상위 클래스가 두 개 있는 경우

→ 모호성을 없애기 위해 요구사향 명세서 및 자료 사전에 기록해야 함

 

- 집단화(aggregation) : 여러 부속 객체들이 조립되어 하나의 객체가 구성되는 것

→ 클래스들 사이의 '부분-전체(part-whole)' 관계와 '부분(is-a-part-of)' 관계로 설명되는 연관성 표시

 

[다계층 집단화]


4. 동적 모델링

 

- 시간의 흐름에 따른 객체들과 그들 사이의 변화를 조사하는 것이다.

→ UML 기법은 동적 모델링에 시퀀스 다디어그램, 상태 변화도 사용

 

- 시퀀스 다이어그램(sequence diagram) : 시나리오를 바탕으로 사건 추적도를 확장하여 객체 모델링에서 밝혀진 클래스 간의 사건 흐름을 나타낸 것


5. 기능 모델링

 

- 입력 값으로부터 계산을 거쳐 어떤 결과가 나타나는지를 보여주는 것이다.

→ UML 기법은 기능 모델링에서 액티비티 다이어그램 사용

 

- 어떻게(how to) 유도되었는지의 구현 방법은 고려 X

 

 

 

 

 

참고 문헌 : 윤청, 소프트웨어 공학 에센셜(생능출판), 2019, p.226~240.

728x90
반응형

'CS > 소프트웨어 공학 에센셜' 카테고리의 다른 글

소프트웨어 설계 기법  (0) 2021.06.18
유스케이스와 UML  (0) 2021.06.15
정보 모델링  (0) 2021.06.05
동적 모델링  (0) 2021.06.03
기능 모델링  (0) 2021.06.02

댓글