19
2012 년년 N4tech ¼ 년년 년년년 이이이 2012.01.27( 이 )

Software engineering #5 design principles and architecture

Embed Size (px)

DESCRIPTION

Software engineering

Citation preview

Page 1: Software engineering #5 design principles and architecture

2012 년도 N4tech ¼ 분기 세미나

이오준2012.01.27( 금 )

Page 2: Software engineering #5 design principles and architecture

Schedule 소프트웨어 공학

1st weak - chapter 01. 소개

2nd weak - chapter 02. 프로세스

3rd weak - chapter 03. 계획

4th weak - chapter 04. 요구 분석

5th weak - chapter 05. 설계원리와 아키텍처

6th weak - chapter 06. 객체지향 설계

7th weak - chapter 07. 상세 설계와 UI 설계

8th weak - chapter 08. 코딩

9th weak - chapter 09. 테스팅

10th weak - chapter 10. 유지 보수

11th weak - chapter 11. 품질

12th weak - chapter 12. 첨단 소프트웨어 공학 기술

Page 3: Software engineering #5 design principles and architecture

설계원리와 아키텍처 – 모듈들을 정의하고 , 모듈 간 인터페이스를 기술

1) 모듈들을 정의하고 , 모듈간 인터페이스 정의 .

추상화 , 정보 은닉 , 모듈화 , 단계적 분할

2) 모듈 내부 알고리즘 고안 , 자료 설계 .

요구 분석 설계 코딩

요구 분석서 설계서

요구 분석서 요구 분석서 요구 분석서

Page 4: Software engineering #5 design principles and architecture

설계

Page 5: Software engineering #5 design principles and architecture

설계

설계 원리에 따라 , 가장 좋은 솔루션을 선택하는 작업 .

1) 컴포넌트의 발견

2) 설계 안의 선택

3) 아키텍처 구성

4) 비기능적 요구를 고려

5) 설계 도면 작성

설계

요구 분석 명세 설계 제약조건

설계 원리

아키텍처 설계 모듈 설계

인터페이스 설계

자료저장소 설계

사용자 인터페이스 설계

Page 6: Software engineering #5 design principles and architecture

문제 분석 설계

문제 도메인에 대한 모델 구축 솔루션 도메인에 대한 모델 구축

모델 결정시 선택폭이 제한적 모델 결정이 자유로움

이해를 위한 모델링 최적화를 위한 모델링

Page 7: Software engineering #5 design principles and architecture

설계 원리

Page 8: Software engineering #5 design principles and architecture

단순성 효율성 분할 , 계층화 추상화 모듈화

복잡한 여러 가지 요소를

교통 정리하여 단순화하거나

복잡함을 최소화한다 .

사용하는 자원이

적정하고 효과적이게

한다 .

다루기 쉬운 덩어리로 분리하여

계층화한다 .

자세한 부분에 좌우되지 않게

컴포넌트를 정의한다 .

각 모듈이 외부와의

결합이 낮고 내부 요소가 응집되도록

한다 .

Page 9: Software engineering #5 design principles and architecture

문제의 분할 – 문제를 다루기 쉬운 작은 조각으로 나누어 계층화 하는 것 .

추상화 – 모듈 내부 동작에 구애 받지 않고 외부 동작만을 나타내는 것 .

모듈화 – 시스템을 모듈들로 나누고 , 모듈 별로 구현할 수 있도록 하는 것 .

Page 10: Software engineering #5 design principles and architecture

모듈 간 결합도

자료 결합 – 모듈간 인터페이스가 자료 요소 만으로 이루어진 경우 .

스탬프 결합 – 모듈간 인터페이스로 자료 구조가 전달되는 경우 .

제어 결합 – 모듈간 인터페이스로 제어 요소가 전달되는 경우 .

공통 결합 – 모듈간에 공동의 자료 영역을 이용하는 경우 .

내용 결합 – 모듈간에 직접 참조 또는 수정하는 경우 .

결합도

감소

Page 11: Software engineering #5 design principles and architecture

모듈 응집도

기능적 응집 – 하나의 기능을 구현하는 모듈 .

순차적 응집 – 한 작업의 결과가 다른 작업의 입력이 되는 모듈 .

교환적 응집 – 동일한 입 / 출력을 사용하는 작업들이 모인 모듈 .

절차적 응집 – 순서에 따라 수행될 작업들이 모인 모듈 .

시간적 응집 – 한번만 수행되는 작업들이 모인 모듈 .

논리적 응집 – 유사한 성격을 갖는 처리 요소들이 모여있는 모듈 .

우연적 응집 – 아무 관련 없는 처리 요소들이 묶여있는 경우 .

응집도

증가

Page 12: Software engineering #5 design principles and architecture

소프트웨어 아키텍처

Page 13: Software engineering #5 design principles and architecture

아키텍처 관점

모듈

– 시스템을 시스템의 기능 중 일부를 구현한 단위 코드들의 집합으로 봄 .

컴포넌트와 커넥션

– 시스템을 컴포넌트라고 부르는 런타임 개체들의 집합으로 봄 .

배치

– 소프트웨어 구성 요소들과 실행되는 환경 요소들 사이의 관계를 봄 .

Page 14: Software engineering #5 design principles and architecture

아키텍처 스타일 – 저장소 구조

중앙 자료 저장소

서브 시스템

서브 시스템

서브 시스템 서브 시스템

서브 시스템

서브 시스템

Page 15: Software engineering #5 design principles and architecture

아키텍처 스타일 – MVC 구조

제어 서브 시스템

모델 서브 시스템

뷰 서브 시스템

Page 16: Software engineering #5 design principles and architecture

아키텍처 스타일 – 클라이언트 서버 구조

클라이언트

서버클라이언트

클라이언트

Page 17: Software engineering #5 design principles and architecture

아키텍처 스타일 – 계층 구조

계층 1

계층 2

계층 3

계층 4

계층 5

계층 6

계층 7

Page 18: Software engineering #5 design principles and architecture

아키텍처 스타일 – 파이프 필터 구조

필터 필터 필터 필터

Page 19: Software engineering #5 design principles and architecture

감사합니다 .

질문 & 답변