<4D F736F F F696E74202D205B36C0E55D20BCB3B0E820B9D720B1B8C7F62E BC8A3C8AF20B8F0B5E55D>

Similar documents
q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

쉽게 풀어쓴 C 프로그래밍

소프트웨어공학의 이해

Microsoft PowerPoint - 08_DesignPrinciple(2010).ppt [호환 모드]

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Blog

JAVA PROGRAMMING 실습 08.다형성

17장 클래스와 메소드

gnu-lee-oop-kor-lec06-3-chap7

C++ Programming

OOP 소개

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - 2강

Microsoft PowerPoint - Java7.pptx

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim();

PowerPoint Presentation

PowerPoint Presentation

Design Issues

PowerPoint Template

2002년 2학기 자료구조

Microsoft PowerPoint 장강의노트.ppt

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D2031C1D6C2F72D31C2F7BDC32028B0ADC0C7C0DAB7E D20C7C1B7CEB1D7B7A1B9D6BEF0BEEE20B0FAB8F1BCD2B

C++ 기본문법 정리

제11장 프로세스와 쓰레드

C++ Programming

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

OOP 소개

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - chap01-C언어개요.pptx

01-OOPConcepts(2).PDF

쉽게

PowerPoint 프레젠테이션

adfasdfasfdasfasfadf

PowerPoint Presentation

열거형 교차형 전개형 상승형 외주형 회전형 도해패턴 계층형 구분형 확산형 합류형 대비형 상관형 (C) 2010, BENESO All Rights Reserved 2

설계란 무엇인가?

ICT개론2017_07

슬라이드 1

제8장 자바 GUI 프로그래밍 II

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - additional03.ppt [호환 모드]

Microsoft PowerPoint - C++ 5 .pptx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Microsoft PowerPoint - 04_OOConcepts(2010).pptx

Microsoft PowerPoint - Lect04.pptx

제목

PowerPoint Presentation

제2장객체지향분석과설계

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

OCW_C언어 기초

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint 설계.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 02. 표준 입출력

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

슬라이드 1

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

제 1 장 기본 개념

Network Programming

유니티 변수-함수.key

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - additional07.ppt [호환 모드]

제목

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

제 1 강 희망의 땅, 알고리즘

No Slide Title

chap x: G입력

Cluster management software

JAVA PROGRAMMING 실습 05. 객체의 활용

C# Programming Guide - Types

No Slide Title

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

프입2-강의노트-C++배경

JVM 메모리구조

소프트웨어공학개론 강의 5: 객체지향개념 최은만동국대학교컴퓨터공학과

<4D F736F F F696E74202D205B31C0E55D20BCD2C7C1C6AEBFFEBEEEBFCD20BCD2C7C1C6AEBFFEBEEEB0F8C7D02E BC8A3C8AF20B8F0B5E55D>

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

슬라이드 1

Microsoft PowerPoint - ch07 - 포인터 pm0415

PowerPoint Presentation

Microsoft PowerPoint - additional01.ppt [호환 모드]

Slide 1

untitled

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx

C 프로그램의 기본

PowerPoint 프레젠테이션

Transcription:

6. 설계및구현 1

주요내용 프로젝트에서설계란무엇인가? 프로젝트에서설계는왜중요한가? 프로젝트에서설계원리는무엇인가? 효과적인모듈설계는어떠해야하는가? 객체지향설계란무엇인가? 구현작업이란무엇인가? 2

목차 강의내용 팀프로젝트 (10, 11 주차 ) - 설계의정의 - 상위설계와하위설계 - 설계원리 - 효과적인모듈설계 - 객체지향의개념 - 구현 - 설계문서작성및제출 3

설계란? 정의 - 설계는개발될제품에대한의미있는공학적표현 - 설계는고객의요구사항으로추적가능해야하며, 동시에좋은설계라는범주에들도록품질에대해서도검증되어야한다 [IEEE-Std-610] 소프트웨어의설계 (design) - 본격적인프로그램의구현에들어가기전에소프트웨어를구성하는뼈대를정의 해구현의기반을만드는것 - 종류 상위설계 (High-Level Design) 하위설계 (Low-Level Design) 4

상위설계와하위설계 상위설계 (High-Level Design) - 의미 아키텍처설계 (Architecture Design), 예비설계 (Preliminary Design) 라고함 시스템수준에서의소프트웨어구성컴포넌트들간의관계로구성된시스템의전체적인구조 시스템구조도 (Structure Chart), 외부파일및 DB 설계도 ( 레코드레이아웃, ERD), 화면및출력물레이아웃등이포함됨 하위설계 (Low-Level Design) - 의미 모듈설계 (Module Design), 상세설계 (Detail Design) 이라고함 시스템의각구성요소들의내부구조, 동적행위등을결정 각구성요소의제어와데이터들간의연결에대한구체적인정의를하는것 - 하위설계방법 절차기반 (Procedure-Oriented), 자료위주 (Data-Oriented), 객체지향 (Object-Oriented) 설계방법 5

상위설계와하위설계의구조도 상위설계 하위설계 구조 DB 인터페이스 컴포넌트 자료구조 알고리즘 설계 설계 설계 설계 설계 설계 6

설계프로세스 7

설계프로세스 좋은설계란 - 요구사항명세서의모든내용을구현해야한다 - 이해가쉬워서구현또는테스트로추적이가능해야한다 - 유지보수시변경이용이해야한다 설계방식 - 프로세스지향설계 (Process Oriented Design) - 객체지향설계 (Object Oriented Design) 8

설계방식 프로세스지향설계 (Process Oriented Design) - 업무의처리절차를중심으로설계의구성요소들을구분 - 어떠한절차를거쳐서작업을수행하는가, 어떠한입출력자료를생성하는가에초점 - 시스템은 기능과데이터 들이노드를이루고이들의관계가링크를형성하는그래프 객체지향설계 (Object Oriented Design) - 시스템의실제객체요소를중심으로설계 - 자료구조와그에대한연산을묶어서구성되는객체들을정의하고이들이상호작용의기본이되도록설계 - 객체들이노드를이루고이들간의관계가링크를형성하는그래프 9

시스템을해석하는관점의차이 기능 데이터 객체 ( 기능 + 데이터 ) 기능 기능 데이터 객체 ( 기능 + 데이터 ) 객체 ( 기능 + 데이터 ) 데이터 객체 ( 기능 + 데이터 ) 기능 기능 객체 ( 기능 + 데이터 ) (a) 프로세스지향설계 (b) 객체지향설계 10

설계원리 11

설계원리 추상화 (Abstraction) 단계적분해 (Stepwise refinement) 모듈화 (Modularization) 12

추상화 (Abstraction) 의미 - 자세한구현에전에, 상위레벨에서의제품의구현을먼저생각해보는것 단계 - 상위레벨에서설계를생각해본후점차구체적인단계로옮겨가는것 종류 - 과정추상화 (Procedure Abstraction) - 데이터추상화 (Data Abstraction) - 제어추상화 (Control Abstraction) 13

추상화의종류 (1/2) 과정추상화 - 수행과정의자세한단계를고려하지않고, 상위수준에서수행흐름만먼저설계 데이터추상화 - 데이터구조를대표할수있는표현으로대체하는것 - 예 ) 날짜구조를단순히 날짜 로추상화하는것 제어추상화 - 3-A 와 3-B 를 3. 윤년여부에따라요일계산을수행한다. 로추상화하는것 14

추상화의종류 (2/2) 예제 - 원하는날짜를입력으로받아요일을알려주는만년달력프로그램 과정추상화단순히만년달력의큰흐름만을먼저생각해보는것 데이터추상화 연, 월, 일 을 날짜 로추상화함 1. 사용자로부터원하는날짜를입력받는다. 2. 그해가윤년여부를확인한다. 3. 윤년여부에따른요일계산을수행한다. 3-A 윤년이면, 윤년요일계산을수행한다. 3-B 윤년이아니면, 즉평년이면, 평년요일계산을수행한다. 4. 요일을출력한다. 15 제어추상화 3-A 와 3-B 를 3 번으로추상화함

단계적분해 (Stepwise Refinement) 의미 - Niklaus Wirth 에의해제안됨 - 문제를상위개념부터더구체적인단계로분할하는하향식기법의원리 - 모듈에대한구체설계를할때사용 과정 - 문제를하위수준의독립된단위로나눈다. - 구분된문제의자세한내용은가능한한뒤로미룬다. - 점증적으로구체화작업을계속한다. 16

모듈화 모듈의의미 - 수행가능명령어, 자료구조또는다른모듈을포함하고있는독립단위 특성 - 이름을가지며 - 독립적으로컴파일되고 - 다른모듈을사용할수있고 - 다른프로그램에서사용될수있다 모듈의예 - 완전한독립프로그램, 라이브러리함수, 그래픽함수등 모듈의크기 - 되도록쉽게이해될수있도록가능한한작아야함 - 너무작은모듈로나눠지지않도록함 17

효과적인모듈설계 18

정보은닉 (Information Hiding) 의미 - 각모듈내부내용에대해서는비밀로묶어두고, 인터페이스를통해서만메시지를전달할수있도록하는개념 - 설계상의결정사항들이각모듈안에감추어져다른모듈이접근하거나변경하지못하도록함 장점 - 모듈의구현을독립적으로맡길수있음 - 설계과정에서하나의모듈이변경되더라도설계에영향을주지않음 19

정보은닉의예 예제 A 예제 B 20

모듈의응집력 (1/2) 모듈의응집력이란? - 모듈을이루는각요소들의서로관련되어있는정도 - 강력한응집력을갖는모듈을만드는것이모듈설계의목표 Myers 의응집력정도구분 1. 기능적응집 (Functional cohesion) 응집력강함 2. 교환적응집 (Communication cohesion) 3. 절차적응집 (Procedural cohesion) 중간 4. 시간적응집 (Temporal cohesion) 5. 논리적응집 (Logical cohesion) 6. 우연적응집 (Coincidental cohesion) 응집력약함 21

모듈의응집력 (2/2) 응집력의종류 - 기능적응집 (Functional cohesion) 모듈이잘정의된하나의기능만을수행할때기능적응집도가높아짐 - 교환적응집 (Communication cohesion) 동일한입 / 출력을사용하는작은작업들이모인모듈에서볼수있음 - 절차적응집 (Procedural cohesion) 모듈안의작업들이큰테두리안에서같은작업에속하고, 입출력을공유하지않지만순서에따라수행될필요가있는경우 - 시간적응집 (Temporal cohesion) 프로그램의초기화모듈같이한번만수행되는요소들이포함된형태 - 논리적응집 (Logical cohesion) 비슷한성격을갖거나특정형태로분류되는처리요소 - 우연적응집 (Coincidental cohesion) 아무관련없는처리요소들로모듈이형성되는경우 22

모듈의결합도 (1/2) 의미 - 모듈간에연결되어상호의존하는정도 - 낮은결합도를갖는모듈 (Loosely coupled) 을만드는것이모듈설계의목표 모듈간의의존도 자료결합 (Data coupling) 결합도약함구조결합 (Stamp coupling) 제어결합 (Control coupling) 공통결합 (Common coupling) 내용결합 (Content coupling) 결합도강함 23

모듈의결합도 (2/2) 결합도의종류 - 자료결합 (data coupling) 모듈간의인터페이스가자료요소로만구성된경우 가장이상적인형태의결합 - 구조결합 (stamp coupling) 모듈간의인터페이스로배열이나레코드등의자료구조가전달되는경우 - 제어결합 (control coupling) 한모듈이다른모듈에게제어요소 (function code, switch, tag 등 ) 를전달하는경우 - 공통결합 (common coupling) 여러모듈이공동자료영역을사용하는경우 - 내용결합 (content coupling) 한모듈이다른모듈의일부분을직접참조또는수정하는경우 24

객체지향 (Object-Oriented) 개념 25

객체지향 객체지향의등장배경 - 기존의구조적기법으로유지보수가어렵다는단점을극복하기위해등장 객체란? - 특성 (Attribute) 와행위 (Behavior) 를가지고있는인지할수있는개체 (Entity) 특성 해당객체에저장되어있는데이터 행위 객체가할수있는일, 객체의상태가변하게하는원인을제공 - 다른객체와구별할수있는정체성 (identity) 을가짐 정체성 해당객체를다른개체와구별할수있는식별값 객체의예 : 차 - 특성 : 검정색차체, 6기통엔진, 자동변속기, 4개의바퀴등 - 행위 : 출발하다, 정지하다, 가속하다, 감속하다등 - 정체정 : 차량번호 26

클래스와객체 클래스 (Class) - 여러객체들을위한대표적구조 - 객체들이내부적으로어떻게구성되어있는지설명 - 객체의특성은클래스의변수로, 행위는메소드로표현됨 객체 (Object) - 클래스의실례또는실체 (Instance) 라고도부름 객체가클래스에서정의하는변수, 메소드를그대로가지면서메모리에할당되기때문 - 각객체내부의변수이름은같지만서로독립적임 public class Car { String carname; // 차이름 Int carnumber; // 차번호 } Car mycar = new Car(); 클래스 객체 27

객체지향방법의특징 절차를강조하는구조적방법 - 데이터를소홀히하게됨 객체지향방법 - 시스템을구성하는요소들은객체로, - 시스템개발의복잡한문제들을캡슐화 (Encapsulation), 상속 (Inheritance), 다형 성 (Polymorphism) 개념으로해결하려함 28

캡슐화 (Encapsulation) (1/2) 의미 - 소프트웨어모듈인객체의내부에가진상세한정보와처리방식을외부로부터감추는것 - 객체의추상화를통해독립성을보장해주는개념 29

캡슐화 (Encapsulation) (2/2) 캡슐화의예 class Car { private String carname; // 차이름 private Int carnumber; // 차번호 public String getcarname() // 차이름반환 { return carname; } private 이용외부에감춤 } public Int getcarnumber() // 차번호반환 { return carnumber; } public 이용외부에공개 30

상속 (Inheritance) (1/2) 의미 - 다른클래스의속성을물려받아내것처럼쓰는것 상위클래스 (Super-class) - 바퀴가굴러서나아감 - 사람이나짐을실어옮기는기관 하위클래스 (Sub-class) - 각각의구체적인기능 31

상속 (Inheritance) (1/2) 상속의예 class Car { String carname; // 차이름 Int carnumber; // 차번호 } class Bus extends Car{ int seatcount; // 좌석수 } 상위클래스 하위클래스 32

다형성 (Polymorphism) 의미 - 하나의인터페이스를통해서로다른구현을제공하는것 Different objects Same message: Text doc Graphic doc print 33

구현 34

구현 (1/2) 의미 - 코드작성또는프로그래밍이라고함 - 설계의최하위상세화과정 - 코드작성, 디버깅, 통합, 개발자테스트 ( 단위테스트, 통합테스트 ) 작업을포함 개발자의코딩스타일 - 일의효율에영향을끼칠수있음 - 각개발사는코딩스타일지침서를구비하여팀원들이지침대로코드를작성하도록조율하기도함 35

구현 (2/2) 코딩스타일 - 한줄에한문장만써라 - 선언문과실행문을구분하라 - 단락을구분하라 - 내부블록과피제어부는들여써라 - 쓸데없는들여쓰기를하지마라 - 한줄주석과주석상자를구분하라 - 프로그램의앞부분에머리주석을반드시달아라 - 함수의역할을접두사로활용하라 - 이름을의미있게지어라 - 이름은의미를잃지않는범위에서짧게지어라 [ 좋은코딩나쁜코딩중 ] 36

연습문제 1. 설계품질을평가하기위해서는반드시좋은설계에대한기준을세워야한다. 좋은설계기준은 무엇인가? 2. 결합도 (coupling) 가강한순서대로나열하라. 3. 한모듈이다른모듈의내부기능및그내부자료를참조하는경우를무슨결합이라고하는가? 4. 데이터설계에있어서응집도 (Cohesion) 는무슨의미인가? 5. 효과적인모듈화설계방안은무엇인가? 6. 응집도가강한것부터약한순서로나타내어라. 7. 모듈의구성요소가하나의활동으로부터나온출력자료를그다음활동의입력자료로사용하는같은모듈내에서의응집의정도를나타내는것은무엇인가? 8. 소프트웨어개발방법론에서구현에대해설명하라. 37

팀프로젝트 10, 11주차 38

이번주할일 각팀은설계단계에들어간다 설계문서평가기준 (5 점만점 ) - 요구사항명세서에맞게설계되었는가 - 모듈설계가 3 개이상으로되어있는가 - UML 작성은명확한가 - 구현에들어갈만큼상세화되어있는가 결과 - 35 3.5 점이상이면통과함 39

다음주제출문서 설계문서를제출한다 40