30
객체지향 설계와 패턴 객체지향 설계와 패턴 Lecture #0: 강의 소개 Eun Man Choi [email protected]

객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

객체지향 설계와 패턴객체지향 설계와 패턴

Lecture #0: 강의 소개

Eun Man [email protected]

Page 2: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

교육 목표

l 강의 소개l 목표, 평가 방법, 일정 계획

l 설계란 무엇인가?

l 창의적인 설계

2

Page 3: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 소프트웨어 설계에 기본이 되는 설계 원리와 UML을 학습한다.

l 객체지향 설계에 쓰이는 중요한 패턴에 대하여 공부한다.

강의 목표

l 배운 설계 기법을 적용하는 능력을 기른다.

3

Page 4: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

강의 방법

l Part 1: 강의(100 분)l 10 분 지난 주 복습과 Q&Al 80 분 매주 강의 슬라이드를 사용하여 분석과 설계와 관련된 특정한 주

제를 설명하고 토론l 10 분 실습 문제 또는 과제 설명

l Part 2: 실습과 설계(100분)l Part 2: 실습과 설계(100분)l 요구분석, 설계에 관한 실습(전반부)l 설계 과제#1: 마이크로웨이브 설계(개인별)l 패턴에 관한 프로그래밍 실습(후반부)l 설계 과제#2: 자유 과제 설계(팀별)

4

Page 5: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

평가 방법

l 강의 출석 및 참여도: 10%l 3번의 지각은 1번의 결석l 1/5 이상 결석은 F

l 중간 및 기말 시험: 60%l 응용형l 추가 시험 없음

l 과제: 30%실습 과제l 실습 과제

l 설계 프로젝트

5

Page 6: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

교과서 및 참고서적

l 교과서:l 최은만, UML을 활용한 시스템 분석 설계, 생능출판

사, 2010.l 에릭 감마,리처드 헬름,랄프 존슨,존 블라시디스 공저,

GoF의 디자인 패턴, 피어슨 에듀케이션, 2007(번역본).

l Headfirst 디자인 패턴

l 참고서적:참고서적:l Larman C., Applying UML and Patterns: An

Introduction to Analysis and Design and Iterative Process, 3rd Edition, Prentice-Hall, 2004(번역본도있음).

l Martin Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.

l 데이비드 토머스 외, 이용원 공역, 실용주의 프로그래머를 위한 단위 테스트, 인사이트, 2004.

6

Page 7: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

강의 일정

l Lecture 1: 강의 소개, 설계란 무엇인가?l Lecture 2: 프로젝트 계획, 비즈니스 목표 설정, 타당성 분석 등l Lecture 3: 기능적 모델링(사용 사례)l Lecture 4: 구조적 모델링(클래스와 속성, 연관, 오퍼레이션)l Lecture 5: 동적 모델링(순서 다이어그램, 커뮤니케이션 다이어그램,

상태 다이어그램)l Lecture 6: 아키텍처 설계(설계 원리, 아키텍처 유형)l Lecture 7: 패턴의 소개l Lecture 8: 중간 시험

7

Page 8: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

강의 일정

l Lecture 9: 생성 패턴(1) – 팩토리, 싱글톤 패턴l Lecture 10: 생성 패턴(2) – 추상 팩토리, 프토토타입 패턴l Lecture 11: 구조 패턴(1) – 퍼싸드, 데코레이터 패턴l Lecture 12: 구현 패턴(2) – 컴포지트, 어뎁터, 프록시 패턴l Lecture 13: 행위 패턴(1) – 인터프리터, 반복자, 중재자 패턴l Lecture 14: 행위 패턴(2) – 옵서버, 상태, 책임 체인 패턴l Lecture 15: 소프트웨어 아키텍처 패턴 - 아키텍처 패턴이란?, 블랙보l Lecture 15: 소프트웨어 아키텍처 패턴 - 아키텍처 패턴이란?, 블랙보

드, 브로커, PAC, 마이크로커널 아키텍처 패턴, 리플렉션 아키텍처 패턴

l Lecture 16: 기말 시험

8

Page 9: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

실습

l 실습 과제l 방법의 설명 – 강의, 조교의 설명l Self 스터디 – 도구l 개인별 과제 – 방법의 적용, 문제 해결l 내용 – 프로그래밍, 설계 표현

l 설계 과제l UML 설계l UML 설계l 작업과 튜터링 중심l 개인별 설계 작업l 팀별 설계

9

Page 10: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

설계의 사전적 정의

l “건축, 토목, 기계 제작 따위에서 그 목적

에 따라 실제적인 계획을 세워 도면 따위

로 명시하는 일.” – 표준 국어대사전

10

Page 11: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

과학과 엔지니어링의 차이

과학왜? 지식

엔지니어링

설계

프로토타입Need

Specification과학/기술

11

Page 12: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

설계란?

l 설계에는 의도(conscious)가 있다.

l 설계의 중심에는 사람의 관심사(비용, 효율, 선호도 등)가 있다.

l 설계는 재료(material)와 함께 하는 것이다.

l 설계는 창의적(creative)이다.l 설계는 창의적(creative)이다.

l 설계는 의사 소통(communication)이다.

l 설계는 협동 작업(social activity)이며 협동에 의한 결과물을 만든다.- Bringing Design to Software by Terry Winograd

12

Page 13: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

설계란?

l (사용자)를 위하여 (기능)을 가진 (프로젝트)을 만들기 위하여 설계

l 프로젝트: 무선 MP3l 사용자: 음악 또는 라디오 청취자l 기능: 선이 꼬이는 것이 없음

l 기술: 아날로그/디지털 전자 공학, 무선 통신

13

Page 14: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

창의적 통찰(creative insight)

표면 아래 숨어 있는 진실을 발견표면 아래 숨어 있는 진실을 발견

문제의 정의재해석

문제의 정의재해석

새로운 아이디어의 탄생새로운 아이디어의 탄생

재해석새로운 개념의 도입, 재조직

벤치마킹

재해석새로운 개념의 도입, 재조직

벤치마킹

14

Page 15: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

창의적인 설계의 결과

1515

Page 16: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

창의적인 통찰

l 어떤 문제와 결핍이 있는지 해결

l 의도를 가지고 충분한 주의를 기울여라

l 문제를 재해석

l 새로운 개념을 만나게 하라.

l 정보를 조직화정보를 조직화

l 강점을 최대로 살려라.

l 성공 사례를 배워라.

- 신병철 지음, 통찰의 기술

16

Page 17: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

설계의 표현

17

Page 18: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

엔지니어링 설계 과정

l 필요를 인식l 문제가 무엇인가?

l 문제를 정의l 목표, 목적, 제한 사항

l 프로젝트를 계획l 작업 일정, 예산 계획l 작업의 순서

여러 가지 안을 고안l 여러 가지 안을 고안l 광범위한 제안

l 여러 가지 안을 평가l 성능 분석

l 최적 안을 결정l 설계를 구현

18

Page 19: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

소프트웨어 설계

l 상품이 될 대규모 소프트웨어를 개발하려면 수많은 추상적 표현이 필요

l 소프트웨어의 구조적 측면, 행위적 측면, 자료적 측면 등 여러 특성에대한 설계, 의사결정과 문서 작성이 필요

l 소프트웨어 설계를 잘 하려면추상적 표현을 이해하고l 추상적 표현을 이해하고

l 설계의도를 표현할 수 있어야l 좋은 설계(패턴)를 많이 알고 있어야

19

Page 20: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 좋은 소프트웨어 제작의 장애물

l 공장의 조립과정으로 생각하는 잘못된 인식

l 적절하지 않는 교육

l 한정된 도구

l 응용 분야와 설계 방법의 다양함

l 소비자와 제작자의 의사소통의 어려움

소프트웨어 제작

l 문제 자체와 작업의 복잡

l 품질을 관리하기 어려움

20

Page 21: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 프로그램이 좋다고 설계가 좋다고 할 수 있나?

l No

l 코드에 오류가 없더라도 설계가 좋지 않을 수 있음

l 고치기 어려움

l 검증하기 어려움

다시 사용하기 어려움

코드와 디자인

l 다시 사용하기 어려움

l 알아보기 어려움

l 사용하기 어려움

21

Page 22: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 모든 기능이 잘 구현되었나?(Correctness)

l 사용자가 실수하였을 때 시스템이 중단되지 않는가?(Robustness)l 계좌 개수의 오류l 잘못된 계좌 번호l 잘못된 금액(정수가 아닌)l 잘못된 명령(Stop, Quit)

좋은 품질을 위하여 고려할 사항

l 어떤 메소드가 무엇을 하는 것인지 분명하지 않음(Documentation)

22

Page 23: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 프로그램을 수정하고 추가, 제거하기 쉬운가?

l Flexibility

l 충분히 빠른가?

l Speed Efficiency

l 기억용량 요구를 만족하는가?

l Space Efficiency

좋은 품질을 위하여 고려할 사항

l Space Efficiency

l 다른 응용에 사용할 수 있는가?

l Reusability

23

Page 24: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 엔지니어링 작업의 핵심l 목표로 하는 생산물을 만들기 전에 경제적, 기술적, 법적 등 여러 측면을

고려하여 궁리한 해결책

l 설계 작업의 특징l 주어진 문제를 알고 있는 이론과 기술을 동원하여 해결하는 탐구 작업

l 모델이 중요

품질을 중요시하는 작업이며 프로덕트에 대한 전반적인 관점이 필요

설계 작업

l 품질을 중요시하는 작업이며 프로덕트에 대한 전반적인 관점이 필요l 프로덕트를 완성하기 위한 팀 작업의 일부

24

Page 25: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

소프트웨어에서의 설계

l 다른 엔지니어링 설계와 다름l 추상적 모델이 더욱 중요l 무형의 정보나 프로그램의 구조가 중요l 계속 변경하고 발전하므로 설계도 따라서 발전

l 컴퓨터와 관련된 설계l 하드웨어 설계 – 모듈화, 설계와 제조가 정확히 분리l 소프트웨어 설계 – 설계와 구현의 갭이 크므로 분리하기 어려움l 소프트웨어 설계 – 설계와 구현의 갭이 크므로 분리하기 어려움l Co-design

25

Page 26: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 구현을 모르면 설계하기 어려움

l 구현 기술에 따라 설계하는 방법이 달라짐

l C 언어 – 자료 흐름도, 모듈 구조도

l Java, C++ 언어 – UML

l Lisp, Prolog – 룰

l EJB – 컴포넌트

소프트웨어 설계의 특징

l 소프트웨어 설계l 프로덕트를 제작하는 여러 원리들을 잘 이해하고 이를 적용하여 비전을

잘 표현할 수 있어야

26

Page 27: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 좋은 설계 교육 방법은?

l 강의, 주입식(?)

l 토론식

l 협동 작업 위주

l 튜터링

l 멀티미디어

l 컴퓨터 기반 교육

좋은 설계 교육 방법

l 컴퓨터 기반 교육

l …

27

Page 28: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 현장에서 일어나는 복잡한 문제와 다수의 클라이언트, 모호한 요구등을 다루기 위한 교육 방법

l 건축 설계나 그래픽 설계, 패션 디자인 등에서도 스튜디오 스타일의 강좌를 운영

l 예비전문가들의 창의성과 기술 통합력을 교육

디자인 스튜디오

l 스튜디오 강좌는 프로젝트 문제에 대하여 아이디어를 내고, 논의하고 직접 해보고, 이를 비평하는 작업

28

Page 29: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

l 좋은 설계의 조각들을 이해하고 기억l 설계 작업의 숙어l 사례: 팀장: ”이번 프로그램은 홍길동씨가 만들어 보세요. 주식 값이 실시간으

로 바뀌는 내용을 화면에 띄워야 하니 이번 설계에는 옵서버 패턴을 써야겠어요…….”

홍: “네 제가 하겠습니다.”“그런데 옵서버 패턴이 뭔가요? 팀장님”

설계 패턴

“그런데 옵서버 패턴이 뭔가요? 팀장님”팀장: “그걸 모르나요? 그걸 설명하려면 일일이 프로그램 짜는 것 만큼

설명이 필요한데……”

l 좋은 설계 사례들을 보고 적용하는 기술을 익힘

29

Page 30: 객체지향설계와패턴 Lecture #0: 강의소개 - Dongguk · 2013-01-24 · GoF의디자인패턴, 피어슨에듀케이션, 2007(번역 본). lHeadfirst 디자인패턴 l참고서적:

Questions?Questions?