설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this...

92
소프트웨어 소프트웨어 공학 공학 (Software Engineering (Software Engineering) 설계 설계 (Design) (Design) 문양세 문양세 강원대학교 강원대학교 IT IT대학 대학 컴퓨터과학전공 컴퓨터과학전공

Transcript of 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this...

Page 1: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

소프트웨어소프트웨어 공학공학 (Software Engineering(Software Engineering))

설계설계 (Design)(Design)

문양세문양세강원대학교강원대학교 ITIT대학대학 컴퓨터과학전공컴퓨터과학전공

Page 2: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

Where we are in waterfall model?Where we are in waterfall model?설계 (Design)

계 획

요구 분석

설 계

구 분석

구 현

시 험

인수설치

Software Engineeringby Yang-Sae MoonPage 2

Page 3: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

설계 (Design)In this chapter …In this chapter …

요구 분석이 끝나면, 소프트웨어의 내부 구조를 설계하여야 한다.

지금까지는 “what”에 주안점이 있었다면, 지금부터는 “how”에 주안점

을 두고 작업을 진행한다.

건축으로 치면, 설계 도면을 작성하는 작업이다. 방을 어디다 두고 크기는 얼마로 하며 어떤 모양으로 만들고 방을 어디다 두고, 크기는 얼마로 하며, 어떤 모양으로 만들고, …

We will cover …We will cover …• 설계의 정의 및 원리

• 구조적 설계

소프트웨어 구조• 소프트웨어 구조

• 프로그램 설계

• 사용자 인터페이스 설계

Software Engineeringby Yang-Sae MoonPage 3

• 설계서 작성

Page 4: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

We are now …We are now …설계 (Design)

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성설계서 작성

Software Engineeringby Yang-Sae MoonPage 4

Page 5: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

설계설계(Design)? (1/2)(Design)? (1/2)설계 (Design)

설계란 “사용자의 요구를 만족시키기 위하여 제약 조건이 반영된 구현

대안을 창출하는 일”이다.

설계란 “소프트웨어 시스템의 내부를 설계”하는 일이다. 즉 모듈의 구조 자료 구조 알고리즘을 설계하는 일이다즉, 1) 모듈의 구조, 2) 자료 구조, 3) 알고리즘을 설계하는 일이다.

분 석 설 계 구 현

사용자사용자요구사항

제약 조건 구축 시스템

시스템의 구현대안 시스템시스템의본질정의

구현대안설정

시스템구축

분석모형

Software Engineeringby Yang-Sae MoonPage 5

분석모형 설계모형

Page 6: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

설계설계(Design)? (2/2)(Design)? (2/2)설계 (Design)

설계를 수행하는 가장 좋은 방법은… 없다. 많은 방법 중에서 “가장 좋다” 생각하는 대안을 찾아야 한다.

설계자는 사용자와 개발자를 동시에 만족시켜야 한다.• 사용자는 설계를 보고 시스템이 어떤 기능을 하는지 이해할 수 있어야 한다.

(집 주인이 집 설계도를 보고 집이 어떻게 지어질지 알 수 있어야 한다.)

• 개발자는 시스템이 어떻게 동작하고 어떻게 구현하는지 이해할 수 있어야 한다• 개발자는 시스템이 어떻게 동작하고, 어떻게 구현하는지 이해할 수 있어야 한다.(집 짓는 사람들이 설계도를 보고 집을 어떻게 지어야 하는지 알 수 있어야 한다.)

설계의 구분

• 구조 설계 ( 전체적 설계, 모듈의 종류, 기능, 인터페이스 등)

• 상세 설계 ( 세부적 설계, 모듈 내의 기능)

Software Engineeringby Yang-Sae MoonPage 6

Page 7: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

구조구조 설계설계 –– 상위상위 레벨레벨 설계설계설계 (Design)

시스템의 구조 설계

기능을 분해기능을 분해

모듈 구조 (모듈 자체의 기능, I/O 설계)

모듈 간의 관계를 정립(모듈 인터페이스)듈 간의 관계를 정립( 듈 인터페이 )

자료 설계(데이터베이스 설계)

결과결과

시스템 구조도(Structure Chart)

외부 파일 및 DB 설계도(레코드 레이아웃, ERD)외부 파일 및 설계 (레 레이아웃, )

Software Engineeringby Yang-Sae MoonPage 7

Page 8: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

상세상세 설계설계 –– 하위하위 레벨레벨 설계설계설계 (Design)

모듈 내부 설계

• 모듈 안의 알고리즘

• 모듈 안의 지역 변수

사용자 인터페이스

• 메뉴

• 입력 폼

• 출력 레포트출력 레포트

자료구조 설계

• 구조형 및 배열

결과

프로그램 사양서화면 및 출력물 레이아웃화면 및 출력물 레이아웃

Software Engineeringby Yang-Sae MoonPage 8

Page 9: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

설계설계 방법론방법론설계 (Design)

구조적 설계(structured design)• 시스템을 기능적 관점에서 다룸

• 하향적 세분화

객체지향 설계(object-oriented design)• 자료와 자료에 적용될 기능을 함께 추상화

객체: 자료+기능• 객체: 자료+기능

• 시스템은 객체의 모임

자료구조 중심 설계

• 입출력 자료의 구조 파악으로 소프트웨어 구조를 추출

• Data Structure + Algorithm = Program

Software Engineeringby Yang-Sae MoonPage 9

Page 10: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

설계설계 원리원리 (1/2)(1/2)설계 (Design)

분할의 기본 원칙:변경(update)이 있을 경우, 이를 최소화하는 식으로 분할해야 한다.

IPO(Input Process Output) 모형

프로세스입력 출력

구조도 (Structure Chart)

제어

프로세스프로세스 프로세스

Software Engineeringby Yang-Sae MoonPage 10

Page 11: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

설계설계 원리원리 (2/2)(2/2)설계 (Design)

설계 원리

• 추상화(abstraction):• 추상화(abstraction):복잡한 문제를 일반화하여, 쉽게 이해할 수 있도록 하는 원리

( 피타고라스 정리?)( 피타 라 정리 )

• 정보 은닉(information hiding):함수의 내부 변수 사용이 외부에 알려질 필요가 없다…( 내정 간섭하지 마요~)

• 단계적 분해(stepwise refinement):처음엔 간단히, 차츰 세밀하게…( 사칙연산 더하기 정수 더하기)

• 모듈화(modularization):모듈은 독립성을 가져야 함…( 많은 라이브러리 함수를 생각하세요 삼각함수 등)

Software Engineeringby Yang-Sae MoonPage 11

( 많은 라이브러리 함수를 생각하세요, 삼각함수 등)

Page 12: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

추상화추상화 (Abstraction)(Abstraction)설계 (Design)

(현실의) 복잡한 문제 추상화 개념 정립 (c.f., window size effect)

소프트웨어의 구조를 이루는 계층의 파악

기능 추상화

• 입력자료를 출력자료로 변환하는 과정을 추상화

• 부프로그램(subprogram)의 목적과 기능만 생각

자료 추상화

• 자료와 기능을 묶어서 생각 (data object 구성하는 방법) OO Concept

제어 추상화

• 외부 이벤트에 대한 반응을 추상화 입력되면 을 처리하고

Software Engineeringby Yang-Sae MoonPage 12

• 외부 이벤트에 대한 반응을 추상화 … 입력되면 …을 처리하고…

Page 13: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

정보정보 은닉은닉(Information Hiding)(Information Hiding)설계 (Design)

각 모듈의 자세한 처리 내용이 시스템의 다른 부분으로부터 감추어져

있어야 ( 내부적으로 어떤 변수를 쓰던…)

각 모듈이 다른 모듈에 구애 받지 않고 설계 I/F만 잘 정의하자.

인터페이스가 모듈 안의 구체적 사항을 최소로 반영

• 전역변수가 없어야

• 모듈의 입력이 1이면 입력, 2이면 출력, … 좋은 모듈 설계가 아님 모듈화와 연관

모듈 단위의 수정, 시험, 유지보수에 큰 장점

모듈 설계 평가에 기초• 모듈 설계 평가에 기초

• 모듈을 독립적으로 시험할 수 있으며, 모듈 별로 개선 및 최적화 할 수 있음

Software Engineeringby Yang-Sae MoonPage 13

Page 14: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

단계적단계적 분해분해(Stepwise Refinement)(Stepwise Refinement)설계 (Design)

기능을 최대한으로 떼어내어 생각

점진적으로(incrementally) 구체화점진적 로( y) 구체화

상세한 내역(알고리즘, 자료구조)는 가능한 뒤로 미룸

추상화추상화 I

CAD

CAD softrware tasks:user interaction task;

추상화 II

procedure: 2-D drawing creation;repeat util <drawing creation task terminates>

추상화 III

CAD system user interaction task;2-D drawing creation task;graphics display task;drawing file management task;

end

repeat util <drawing creation task terminates>do while <digitizer interaction occurs>

digitizer interface task;determine drawing request;

line: line drawing task;end. line: line drawing task;circle: circle drawing task;..

Software Engineeringby Yang-Sae MoonPage 14

.

Page 15: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

모듈화모듈화(Modularization) (1/6)(Modularization) (1/6)설계 (Design)

1 40

1

52 41

12 3

45

문제영역 시스템 분해 시스템 구조

63 65326

시스템 분해를 어떻게 해야 할 것인가? 모듈로 분해한다시스템 분해를 어떻게 해야 할 것인가? 모듈로 분해한다.

한 모듈의 규모는 어떠해야 하는가?한 모듈의 규모는 어떠해야 하는가?• 30 lines ~ 50 lines ???

• 너무 길면 이해하기 어렵고, 너무 짧으면 성능이 저하됨

Software Engineeringby Yang-Sae MoonPage 15

너무 길면 이해하기 어렵고, 너무 짧으면 성능이 저하됨

Page 16: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

모듈화모듈화(Modularization) (2/6)(Modularization) (2/6)설계 (Design)

모듈의 이식성(portability)• 특정 환경에서만 동작하는 것이 아니라 일반적 환경에서 동작하면 이식성이 높다고 이

야기한다.

• 이식성이 높은 S/W를 개발하는 것은 모든 S/W Engineer의 공통된 목표이다.

모듈을 어떻게 만들 것인가? 어떻게 모듈을 구성할 것인가? 모듈(내) 응집력(intra relationship)은 강하게 모듈(내) 응집력(intra relationship)은 강하게, 모듈(간) 결합력(inter relationship)은 약하게

• 모듈의 응집력: 모듈 내 기능/요소들이 갖는 관계

• 모듈의 결합력: 모듈 간의 관계

Software Engineeringby Yang-Sae MoonPage 16

Page 17: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

모듈화모듈화(Modularization) (3/6)(Modularization) (3/6)설계 (Design)

모듈의 응집력(Cohesion)• 하나의 모듈은 전체 시스템이 갖는 여러 기능 중에 하나의 기능을 갖도록 설계해야…

• 모듈 내의 모든 요소는 하나의 목적을 가지고 있는 것이 바람직하다.

• Theme sentence: 한 문단의 주제를 담고 있는 문장 (vs. support sentence)

모듈의 응집력 구분

기능적 응집(f ti l h i )• 기능적 응집(functional cohesion):잘 정의된 하나의 기능이 하나의 모듈을 이룬 경우

예) “판매 세금 계산” (동사, 목적어) 한 쌍으로 구성 응집력이 강함

• 순차적 응집(sequential cohesion):모듈 내 한 작업의 출력이 다른 작업의 입력이 되는 경우

예) “다음 거래를 읽고, 그 결과를 마스터 파일에 반영함”응집력이 약함

• 교환적 응집(communication cohesion):동일한 입력과 출력을 사용하는 여러 작업들이 모인 경우

예) “인사 기록 파일에 근무 성적을 기재하고, 급여를 갱신함”

Software Engineeringby Yang-Sae MoonPage 17

예) 인사 기록 파일에 근무 성적을 기재하고, 급여를 갱신함

Page 18: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

모듈화모듈화(Modularization) (4/6)(Modularization) (4/6)설계 (Design)

모듈의 응집력 구분 (계속)• 절차적 응집(procedural cohesion): 응집력이 강함(p )

공유하는 것은 없으나, 큰 테두리 안에서 같은 작업에 속하는 경우

예) “총계를 출력하고, 화면을 지우고, 메뉴를 뿌리고, 메뉴 선택 코드를 받음”

• 시간적 응집(temporal cohesion):• 시간적 응집(temporal cohesion):특정 시간에만 수행되는 기능을 묶어놓은 모듈

예) 초기화 루틴(변수 할당, 초기값 설정, …)

논리적 응집(logical cohesion):• 논리적 응집(logical cohesion):유사 성격을 갖거나 특정 형태로 분류되는 처리 요소들을 하나의 모듈로 형성

예) “사칙연산에서 주어진 매개변수에 따라 다른 계산을 함” 연산간 관계가 없음

• 우연적 응집(coincidental cohesion):아무 관련 없는 처리 요소들로 모듈이 형성된 경우

모듈 개념이 상실되어 이해 및 유지보수가 힘든 단점이 있음 응집력이 약함

Software Engineeringby Yang-Sae MoonPage 18

Page 19: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

모듈화모듈화(Modularization) (5/6)(Modularization) (5/6)설계 (Design)

모듈의 결합도(Coupling)• 모듈간의 상호 의존하는 정도를 의미한다.

• 모듈은 하나의 블랙 박스로 다른 모듈과의 독립성이 높아야 한다.

• 독립적인 모듈이 되기 위해서는 다른 모듈과의 결합도가 약해야 한다(loosely coupled).

모듈의 결합도 구분

자료 결합(d t li )• 자료 결합(data coupling):모듈 간의 인터페이스가 자료 요소(파라메터)로만 구성된 경우

예) add(3, 5), sort(a) 결합도가 약함

• 스탬프 결합(stamp coupling):모듈 간의 인터페이스를 통해 배열, 레코드가 전달되는 경우

(단, 배열, 레코드 내용 전체가 사용되면 “자료 결합”으로 볼 수 있음)결합도가 강함

예) print_salary(인사 기록 레코드)

Software Engineeringby Yang-Sae MoonPage 19

Page 20: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

모듈화모듈화(Modularization) (6/6)(Modularization) (6/6)설계 (Design)

모듈의 결합도 구분 (계속)• 제어 결합(control coupling):( p g)

한 모듈이 다른 모듈에게 제어 요소(function code, switch, flag 등)를 전달하는 경우

예) integer_operation(‘+’, 3, 5)

• 공통 결합(common coupling):• 공통 결합(common coupling):공통된 자료 영역을 사용하는 경우

자료 영역의 보호가 어렵고, 자료 구조 변경 시 파급 효과가 큼

예) C/C++ 등에서 global 변수를 사용하는 예제 Shared Memory 사용 결합도가 약함예) C/C++ 등에서 global 변수를 사용하는 예제, Shared Memory 사용

• 내용 결합(content coupling):한 모듈이 다른 모듈의 일부분을 직접 참조 또는 수정하는 경우

공유 부분을 변경할 필요가 생기면 그 파급 효과가 가장 큼

결합도가 약함

결합도가 강함

공유 부분을 변경할 필요가 생기면 그 파급 효과가 가장 큼

예 1) 에셈블리어에서 한 모듈이 다른 모듈의 데이터를 참조하는 경우

예 2) 한 모듈에서 다른 모듈로 분기(goto)하는 경우

Software Engineeringby Yang-Sae MoonPage 20

Page 21: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

We are now …We are now …설계 (Design)

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성설계서 작성

Software Engineeringby Yang-Sae MoonPage 21

Page 22: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

구조적구조적 설계설계 개요개요 (1/2)(1/2)설계 (Design)

시스템을 이루는 모듈의 구조를 파악하는 방법

궁극적으로 S/W 모듈의 종류, 모듈 간의 관계를 파악하고자 함궁극적 의 종류, 의 계 파악하 자

모듈 분해의 계층적, 인터페이스 지향적 접근층 , 향

데이터 흐름 형식에 중점

• Source-transaction-sink: 변환 분석(transform analysis)자료가 어디서 나와서 어떤 처리를 거쳐서 어디로 전달되는가?

Transaction pattern: 처리 분석(transaction analysis)• Transaction pattern: 처리 분석(transaction analysis)처리하고자 하는 트랜잭션의 기능이 무엇인가?

Software Engineeringby Yang-Sae MoonPage 22

Page 23: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

구조적구조적 설계설계 개요개요 (2/2)(2/2)설계 (Design)

시스템 구조도(structure)의 도출

(관리자를 비롯한 높은) 사람들은 한 눈에 들어오는 구조를 원한다.( 리자 비롯 ) 사 에 어 구 다

결국, 간단하게 흐름을 파악할 수 있는 구조를 그려주어야 한다.• 시스템을 모듈 단위로 분할

• 모듈의 계층적(hierarchical) 구성

• 모듈 사이의 입출력 인터페이스

• 모듈의 이름과 기능모듈의 이름과 기능

S4S3S2S1 S5S1 S5S4 S4

Structure #1S3

Structure #2S1 S5S2

Structure #3

Software Engineeringby Yang-Sae MoonPage 23

S2 S3Structure #3

Page 24: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

시스템시스템 구조도구조도 기호기호 (1/3)(1/3)설계 (Design)

표준 기호

한 모듈이 다른 모듈을 호출하는 관계를 나타냄

자료(변수 및 자료 구조)의 흐름을 나타냄자료(변수 및 자료 구조)의 흐름을 나타냄

제어(플래그, 태그)의 흐름을 나타냄

모듈을 나타냄

반복(iteration) 선택(option) 주석달기

comment

Module

Software Engineeringby Yang-Sae MoonPage 24

Page 25: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

시스템시스템 구조도구조도 기호기호 (2/3)(2/3)설계 (Design)

예제

• Main은 모듈 A, B, C를 호출하고, A는 W, X를 호출하며, C는 Y, Z를 호출한다.Main은 모듈 A, B, C를 호출하고, A는 W, X를 호출하며, C는 Y, Z를 호출한다.

• C는 Y와 Z를 반복적으로 호출할 수 있고, A는 W 혹은 X 중 하나를 호출한다.

• 제어 플래그 f는 W에서 A로 전달되고, 자료(데이터) a는 A에서 Main으로 전달된다.

M i

• …

Main

ab

c

A B C

f a f f

W X Y Z

Software Engineeringby Yang-Sae MoonPage 25

Page 26: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

시스템시스템 구조도구조도 기호기호 (3/3)(3/3)설계 (Design)

기타 기호

미리 정의된 모듈(라이브러리)

입출력 모듈

Software Engineeringby Yang-Sae MoonPage 26

Page 27: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

시스템시스템 구조도의구조도의 요건요건 (1/4)(1/4)설계 (Design)

전체적으로 균형을 이뤄야 함 ( Skew는 별로 좋지 않음)

과다한 깊이를 가지면 하위 모듈까지 통신 오버헤드가 커짐

Software Engineeringby Yang-Sae MoonPage 27

Page 28: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

시스템시스템 구조도의구조도의 요건요건 (2/4)(2/4)설계 (Design)

과다한 너비를 가지면 병목현상이 나타날 수 있음

(Parallel Processing이 어려움)(Parallel Processing이 어려움)

처리입력 출력

Software Engineeringby Yang-Sae MoonPage 28

Page 29: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

시스템시스템 구조도의구조도의 요건요건 (3/4)(3/4)설계 (Design)

편중의 종류: 입력 편중, 처리(process) 편중, 출력 편중

입력 편중의 예

처리입력 출력

Software Engineeringby Yang-Sae MoonPage 29

Page 30: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

시스템시스템 구조도의구조도의 요건요건 (4/4)(4/4)설계 (Design)

처리 편중의 예

처리입력 출력처리입력 출력

출력 편중의 예 처리입력 출력

Software Engineeringby Yang-Sae MoonPage 30

Page 31: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

설계설계 요령요령 (Design Heuristics)(Design Heuristics)설계 (Design)

양파 모양의 구조가 일반적

• 복잡한 모듈의 연결은 피함복잡한 모듈의 연결은 피함

• 과다한 깊이를 가진 구조도 피함

모듈의 영향권을 그 모듈의 하위에 둔다.

<잘못된 예> <잘된 예>

변경된 모듈 변경된 모듈변경된 모듈 변경된 모듈

영향받는 모듈

Software Engineeringby Yang-Sae MoonPage 31

Page 32: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

변환변환 분석분석(Transform Analysis)(Transform Analysis)설계 (Design)

자료의 변환 흐름(transformation flow)

입력 흐름 출력 흐름

변환 센터변환 센터

변환 분석은 자료 흐름도를 입력 흐름, 변환 센터, 출력 흐름으로

분할하는 과정이다.• 입력 흐름: 입력을 준비하는 단계(입력, 검증...)

• 출력 흐름: 출력을 위하여 준비되는 단계(포매팅, 출력)

• 변환 센터: 실제 자료가 변환

Software Engineeringby Yang-Sae MoonPage 32

변환 센터: 실제 자료가 변환

Page 33: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

변환변환 분석분석 방법방법 (1/2)(1/2)설계 (Design)

① 자료 흐름도에서 입력 자료 흐름과 출력 자료 흐름을 파악

② 중앙 변환 부분을 식별

③ 변환 중심부를 축으로 최상위 구조(first-cut) 작성

④ 각 모듈의 하위 구조도 같은 방법으로 분석

⑤ 설계 기준을 적용하여 수정, 최적화

예제 파일 안에 포함된 단어의 개수를 계산예제: 파일 안에 포함된 단어의 개수를 계산

파일 이파일 이름읽음

화일 이름검증

단어개수편집

단어개수출력

파일 이름

검증

단어개수계산

편집

검증된파일이름

단어개수

입력 흐름

출력 흐름

Software Engineeringby Yang-Sae MoonPage 33

변환 센터

Page 34: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

변환변환 분석분석 방법방법 (2/2)(2/2)설계 (Design)

예제: 최상위 시스템 구조도 예제: 프로그램의 구조main(){

...read_file(file_name, status);count word(file name, &word count);

단어 계산

단어개수_ _ _

display(word_count);}read_file(char* file_name, boolean status){단어개수파일이름 단어 개수

검증된파일 이름

상태

파일 이름

단어개수

단어개수

{...

}count_word(char* file_name, boolean status)

단어개수계산

파일이름입력,검증

단어 개수편집,출력

{...

}display(int word count)p y _{

...}

Software Engineeringby Yang-Sae MoonPage 34

Page 35: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

변환변환 분석의분석의 원칙원칙설계 (Design)

최상위 모듈을 위한 변환 분석

① 입력 자료 흐름과 출력 자료 흐름을 파악하여 경계를 표시한다. ① 입력 자료 흐름과 출력 자료 흐름을 파악하여 경계를 표시한다. 즉, 입력 흐름 및 출력 흐름을 경계로 변환 센터를 식별하는 것이다.

② 최상위 모듈에 의해 직접 호출되고 제어될 다음 단계의 세 개 모듈, 즉 입력 처리

변환 제어 출력 처리 을 만 다모듈, 변환 제어 모듈, 출력 처리 모듈을 만든다.

하위 모듈을 위한 변환 분석하위 모듈을 위한 변환 분석

① 입력 처리 모듈을 분해한다. 마찬가지로, 다시 입력/변환/출력으로 분해한다.

② 출력 처리 모듈을 분해한다 마찬가지로 다시 입력/변환/출력으로 분해한다② 출력 처리 모듈을 분해한다. 마찬가지로, 다시 입력/변환/출력으로 분해한다.

③ 변환 제어 모듈을 분해한다. 마찬가지로, 다시 입력/변환/출력으로 분해한다.

Software Engineeringby Yang-Sae MoonPage 35

Page 36: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

구독자구독자 관리관리 시스템시스템 (1/3)(1/3)설계 (Design)

1) 자료 흐름의 요소를 분해

• 입력 자료 흐름, 출력 자료 흐름, 변환 센터입력 자료 흐름, 출력 자료 흐름, 변환 센터

• 두 개의 입력 자료, 하나의 최종 출력 자료

구독자레코드준비

구독자 레코드

출력 흐름

준비

만료일추출

새만료일계산

구독자레코드변경

만료일 새 만료일

입력 흐름

구독 레코드를

갱신기간

변경 레코드

입력 흐름

구독갱신기간입력

레 를파일에출력

변환 센터

Software Engineeringby Yang-Sae MoonPage 36

Page 37: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

구독자구독자 관리관리 시스템시스템 (2/3)(2/3)설계 (Design)

2) 구조도의 최상위층 작성

• 입력, 변환, 출력 흐름을 바탕으로 최상위 구조도를 그린다.입력, 변환, 출력 흐름을 바탕으로 최상위 구조도를 그린다.

구독 갱신시스템시스템

갱신 정보 갱신 레코드구독 갱신

갱신 정보추출

갱신 레코드저장

Software Engineeringby Yang-Sae MoonPage 37

Page 38: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

구독자구독자 관리관리 시스템시스템 (3/3)(3/3)설계 (Design)

3) 구조도의 상세화

• 구조도의 각 모듈을 지속적으로 분할하여 상세 구조도를 완성한다.구조도의 각 모듈을 지속적으로 분할하여 상세 구조도를 완성한다.

• 계속적으로 분할하는 것을 요소 분해(factoring)한다고 한다.

갱신구독 갱신시스템

구독 갱신갱신 정보

추출

갱신 레코드저장

새 구독기간 입력

구독 만료일준비

구독자레코드 변경

레코드파일로 출력기간 입력 준비 레코드 변경 파일로 출력

구독 레코드 구독 만료일

Software Engineeringby Yang-Sae MoonPage 38

구독 레코드추출

구독 만료일추출

Page 39: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

마스터마스터 파일파일 변경변경 시스템시스템 구조도구조도 (1/2)(1/2)설계 (Design)

자료 처리 흐름도 (DFD)

Software Engineeringby Yang-Sae MoonPage 39

Page 40: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

마스터마스터 파일파일 변경변경 시스템시스템 구조도구조도 (2/2)(2/2)설계 (Design)

시스템 구조도

Software Engineeringby Yang-Sae MoonPage 40

Page 41: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

변환변환 분석분석 예제예제: : 비디오비디오 대여점대여점 (1/3)(1/3)설계 (Design)

Level 0 변환 분석 (최상위)

Software Engineeringby Yang-Sae MoonPage 41

Page 42: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

변환변환 분석분석 예제예제: : 비디오비디오 대여점대여점 (2/3)(2/3)설계 (Design)

Level 1 변환 분석

Software Engineeringby Yang-Sae MoonPage 42

Page 43: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

변환변환 분석분석 예제예제: : 비디오비디오 대여점대여점 (3/3)(3/3)설계 (Design)

시스템 구조도

Software Engineeringby Yang-Sae MoonPage 43

Page 44: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

처리처리 분석분석(Transaction Analysis)(Transaction Analysis)설계 (Design)

처리(transaction)?자료 흐름도의 한 프로세스에서 여러 개의 자료 흐름이 유출되는 것자 의 세 에서 여러 개의 자 이 유 되 것

현금 자동 지급기의 경우 “선택”에서 여러 분기가 일어난다.

처리흐름

T

처리흐름

처리센터처리 경로(action path)

처리센터경 ( p )

방법방

① 자료 흐름도에서 처리 센터를 식별

② 처리 모듈을 중심으로 구조도 작성

③ 구조도를 상세화 하위 구조도를 작성

Software Engineeringby Yang-Sae MoonPage 44

③ 구조도를 상세화 - 하위 구조도를 작성

Page 45: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

처리처리 분석분석 예제예제: : 현금현금 자동자동 지급기지급기 (1/2)(1/2)설계 (Design)

자료 흐름도(DFD)

Software Engineeringby Yang-Sae MoonPage 45

Page 46: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

처리처리 분석분석 예제예제: : 현금현금 자동자동 지급기지급기 (2/2)(2/2)설계 (Design)

시스템 구조도 (상위 구조)

Software Engineeringby Yang-Sae MoonPage 46

Page 47: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

We are now …We are now …설계 (Design)

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성설계서 작성

Software Engineeringby Yang-Sae MoonPage 47

Page 48: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

소프트웨어소프트웨어 아키텍처아키텍처설계 (Design)

건축 설계로 본다면…• 설계와 시공에 대한 가이드가 될 큰 밑그림

• 일관적인 모양과 조화를 위한 스타일을 정하는 작업

스타일이라는 개념을 소프트웨어 구조에도 적용

어떻게 동작해야 할 지의 동작 메커니즘의 큰 그림을 결정

중앙 DB를 두고? C/S 모델로? 중앙 DB를 두고? C/S 모델로?

일단 시스템이 개발된 뒤에는 잘못된 구조를 바로잡기가 쉽지 않음일단 시스템이 개발된 뒤에는 잘못된 구조를 바로잡기가 쉽지 않음

소프트웨어 구조는 시스템 분할 전체 제어 흐름 오류 처리 방침 서브시소프트웨어 구조는 시스템 분할, 전체 제어 흐름, 오류 처리 방침, 서브시

스템 간의 통신 프로토콜을 포함

Software Engineeringby Yang-Sae MoonPage 48

Page 49: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

저장소저장소 구조구조설계 (Design)

서브시스템들이 단일 중앙 저장소의 자료를 접근하고 변경

서브시스템들은 독립적이고 중앙 자료 저장소를 이용하여 상호 대화서브시스템들은 독립적이고 중앙 자료 저장소를 이용하여 상호 대화

새로운 서브시스템도 저장소를 중심으로 위치함

사례 (주로 DB를 사용하는 경우)사례 (주로 DB를 사용하는 경우)• 급여 시스템

• 은행 시스템과 같은 데이터베이스 관리 시스템

Software Engineeringby Yang-Sae MoonPage 49

Page 50: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

MVC MVC 구조구조설계 (Design)

MVC(Model, View, Control) • 모델 서브시스템: 도메인의 지식을 저장 및 보관

• 뷰 서브시스템: 사용자에게 보여줌

• 제어 서브시스템: 사용자와의 상호 작용을 관리

분리하는 이유분리하는 이유

• 사용자 인터페이스, 즉 뷰와 제어가 도메인 지식을 나타내는 모델보다는 더 자주 변경될

수 있기 때문임수 있기 때문임

Excel에서

• 사용자는 표, 그래프, 차트 등으로 볼

수 있으나(뷰), • 실제 저장은 한 군데 있으며(모델),

다른 뷰에서 각기 수정하여도(제어)• 다른 뷰에서 각기 수정하여도(제어)한 군데 반영됨

Software Engineeringby Yang-Sae MoonPage 50

Page 51: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

클라이언트클라이언트 서버서버 구조구조설계 (Design)

서버는 클라이언트라 불리는 서브시스템에게 서비스를 제공

클라이언트: 사용자로부터 입력을 받아 범위를 체크하고 데이터베이스클라이언트: 사용자로부터 입력을 받아 범위를 체크하고 데이터베이스

트랜잭션을 구동하여 필요한 모든 데이터를 수집

서버: 트랜잭션을 수행하고 데이터의 일관성을 보장한다행 성 장

우리가 매일 사용하고 있는 웹 환경이 대표적인 C/S 구조에 해당함

Software Engineeringby Yang-Sae MoonPage 51

우리가 매일 사용하고 있는 웹 환경이 대표적인 C/S 구조에 해당함

Page 52: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

계층계층 구조구조 (Hierarchical Structure)(Hierarchical Structure)설계 (Design)

각 서브 시스템이 하나의 계층이 되어 하위 층이 제공하는 서비스를 상위

층의 서브시스템이 사용층의 서 시 이 사용

추상화의 성질을 잘 이용한 구조

대표적인 예: 네트워크의 OSI 7 Layer 구조y

장점: 각 층을 필요에 따라 쉽게 변경할 수 있음

단점: 성능 저하를 가져올 수 있음

Software Engineeringby Yang-Sae MoonPage 52

Page 53: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

파이프파이프 필터필터 구조구조 (Pipe Filter Structure)(Pipe Filter Structure)설계 (Design)

서브시스템이 입력 데이터를 받아 처리하고 결과를 다른 시스템에 보내

는 작업이 반복작 이 복

서브시스템을 필터라고 하고 서브시스템 사이의 관계를 파이프라 함

대표적인 예는 UNIX/Linux 쉘

Software Engineeringby Yang-Sae MoonPage 53

Page 54: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

파이프파이프 사용사용 예제예제 (in Linux)(in Linux)설계 (Design)

Software Engineeringby Yang-Sae MoonPage 54

Page 55: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

We are now …We are now …설계 (Design)

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성설계서 작성

Software Engineeringby Yang-Sae MoonPage 55

Page 56: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘((프로그램프로그램) ) 설계설계 (1/2)(1/2)설계 (Design)

프로그램을 작성하기 이전에 알고리즘 작성은 필수 요건이다.

알고리즘은 모듈의 명세서에 해당한다.알 리즘은 모듈의 명세서에 해당한다

• 모듈의 세부처리 기능을 기술한 내역

• 시스템 구조도의 박스에 표현되지 않은 자세한 알고리즘을 기술

• 모듈의 내부 자료에 대한 설명을 포함

• 프로그램 구조도와 함께 시스템의 동작 상태를 예측할 수 있는 근거 제공

M d l 소수 확인(숫자 결과)

소수확인

숫자 결과 Module 소수 확인(숫자, 결과)내부자료: ....처리기능: 숫자보다 작은 이미 구한

모든 소수로 나누어 나머지가모든 소수로 나누어 나머지가0이 아니면 결과는 소수이다.

Software Engineeringby Yang-Sae MoonPage 56

Page 57: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘((프로그램프로그램) ) 설계설계 (2/2)(2/2)설계 (Design)

상세 설계의 표현

• 설계의 표현과 코딩이 용이해야 할 것

• 수행이 가능해야 할 것

• 유지보수가 용이해야 할 것

상세 설계의 표현

• 흐름도(flow chart)흐름도(flow chart)

• N-S 도표(Nassi-Schneiderman Chart) // 나씨-슈나이더 도표

• 의사 코드(pseudo code)

의사 결정• 의사 결정표(decision table)

• 의사 결정도(decision diagram)

• PDL(Program Design Language)( g g g g )

• 상태천이도(state transition diagram)

• 행위도(action diagram)

Software Engineeringby Yang-Sae MoonPage 57

Page 58: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘의알고리즘의 선택선택 기준기준 (1/4)(1/4)설계 (Design)

정확성

• 모듈이 정확하게 수행되지 않는 조건을 점검

• 예: 음수, 0, 경계 값 입력 예외 조건에 대해서 잘 처리해야 함

• 재사용 증명된 알고리즘을 활용하고, 이미 있는 모듈은 그냥 가져다 쓴다.

효율성

• 기억 공간 최소화 최근 들어서는 일반적으로 큰 문제가 되지는 않는다.기억 공간 최소화 최근 들어서는 일반적으로 큰 문제가 되지는 않는다.

• 처리 소요 시간 최소화

• 예: 1에서 N까지의 합1

n

ii

1i

<방법 1>SeriesSum = 0for Counter = 1 to N do

<방법 2>SeriesSum = (1.0 + N)*(N/2.0)

it "Th i " S i SSeriesSum = SeriesSum + Counterwrite "The sum is", SeriesSum

write "The sum is", SeriesSum

( )O N(1)O

Software Engineeringby Yang-Sae MoonPage 58

( )O N

Page 59: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘의알고리즘의 선택선택 기준기준 (2/4)(2/4)설계 (Design)

효율성 (계속)

입력 개수분석 방법 이름

입력 개수

1 10 100 1,000 10,000

1 Constant 1 1 1 1 1

log N Logarithmic 1 4 7 10 14

N Linear 1 10 100 1,000 10,000

N log N N log N 1 40 700 10,000 140,000

N2 Quadratic 1 100 10,000 1,000,000 100,000,000

N3 Cubic 1 1,000 1,000,000 1,000,000,000 1012

2n Exponential 2 1,024 1.27 x 1030 1.07 x 10301 1.99 x 103010

복잡도가 높은 경우(N3 이상, 특히 exponential인 경우)휴리스틱을 많이 사용함 휴리스틱을 많이 사용함

대표적 휴리스틱 방법: Greedy Algorithm

Software Engineeringby Yang-Sae MoonPage 59

Page 60: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘의알고리즘의 선택선택 기준기준 (3/4)(3/4)설계 (Design)

외판원 문제(TSP: Traveling Salesman Problem)문제 정의

• N개의 도시(C1, C2, … CN)와 두 도시 i와 j 사이의 거리 dij가 주어졌을 때, 모든 도시를 한

번씩 방문해야 하는 외판원이 다리 품을 가장 적게 파는 경로(shortest tour)는?

경로의 가짓수 계산

• 첫 번째 도시를 선택할 수 있는 가짓수: N가지56 73

• 두 번째 도시를 선택할 수 있는 가짓수: (N-1)가지

• …

경로의 가짓수 = N(N-1)(N-2)…(2)(1) = N!32

51

62

115

73

108 49

89 94

( )( ) ( )( )

TSP를 풀기 위해 얼마나 걸리는가?하나의 경로 계산을 위해 1 가 걸린다고 가정 (1 GH 1 fl /1 )

51

• 하나의 경로 계산을 위해 1 ns가 걸린다고 가정 (1 GHz 1 flop/1 ns)

• N=10: 3,628,800 ns = 0.0036288 sec.

• N=50: 3.02 x 1064 ns = 3.02 x 1055 seconds = 3.50 x 1050 days = 9.59 x 1047 years

Software Engineeringby Yang-Sae MoonPage 60

해결할 수 있는 방법은? (Refer to http://www.tsp.gatech.edu//index.html)

Page 61: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘의알고리즘의 선택선택 기준기준 (4/4)(4/4)설계 (Design)

적합성

알고리즘이 주어진 문제를 정확히 기술하였는가• 알고리즘이 주어진 문제를 정확히 기술하였는가?

• 입력은 sequential file인데, 알고리즘은 random access file을 가정하면 되겠나요?

Software Engineeringby Yang-Sae MoonPage 61

Page 62: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘 표현표현 –– 흐름도흐름도(or (or 순서도순서도))설계 (Design)

표현하기 쉽다.

BUT, 제어 흐름이 구조적이 되지 못해서

코드가 엉키는, 이른바 스파게티 코드가 되기 쉽다.

현재는 거의 사용하지 않는다.

Software Engineeringby Yang-Sae MoonPage 62

Page 63: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘 표현표현 –– 의사의사 코드코드 (1/4)(1/4)설계 (Design)

일반적으로 가장 많이 사용하는 방법이다.

“자바로 쓴 알고리즘”, “C로 쓴 알고리즘”, “Pascal로 쓴 알고리즘”자바로 쓴 알 리즘 , 로 쓴 알 리즘 , 로 쓴 알 리즘

등이 이 범주에 해당한다고 볼 수 있다.

모듈의 입출력 자료, 내부 자료, 수행 절차 등을 알고리즘의 형태로 기술

실제 프로그램과 유사하나 특정 프로그래밍 언어에는 독립적임

전문적 용어의 사용은 가능하지만 프로그래머의 고유한 스타일이나 특성

이 무시될 수 있음

의사 코드를 쓰는 방식이 다를 수 있으므로 한 프로젝트 안에서 표준을 만

들 필요가 있음

Software Engineeringby Yang-Sae MoonPage 63

Page 64: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘 표현표현 –– 의사의사 코드코드 (2/4)(2/4)설계 (Design)

요구 분석에서의 구조적 언어(소단위 명세서) vs. 의사 코드

특성 구조적 언어 의사 코드특성 구조적 언어 의사 코드

논리 구조

동일한 논리 구조 사용

순차 (sequence)

선택 (selection)

반복 (iteration)

사용 단계 요구분석 단계 설계 단계

명세 대상 자료 흐름도 상의 최소 단위로 사용 설계 구조도 상의 모든 모듈

명세 방법 사용자 중심 프로그래머 중심

상세 정도 처리의 기본적인 기능 수행 절차모듈의 기본적인 기능 수행 절차 및 세부적

상세 정도 처리의 기본적인 기능 수행 절차방법

Software Engineeringby Yang-Sae MoonPage 64

Page 65: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘 표현표현 –– 의사의사 코드코드 (3/4)(3/4)설계 (Design)

의사 코드 사례

주급계산

고용자레코드 주급총액 고용자 레코드 = 급여형태 + 성명 + 주간근무시간

급여형태 = [1|2|3]

Module 주급계산(고용자 레코드; 주급총액)Assume

1<급여형태<31<급여형태<30<주간 근무 시간<100

End AssumeDefine

Rate: Real /* 시간 당 급료 */d fEnd Define

If (급여형태=1) Then Rate=4.2Elseif (급여 형태=2) Then Rate=6.0Else Rate=9.0EndifSelect Using (주간근무시간) From

Case (1-40): 주급총액=주간근무시간*RateCase (41-50): 주급총액=(주간근무시간*Rate)*0.5Case (51-99): 주급총액=(주간근무시간*Rate)*1.0

Endselect

Software Engineeringby Yang-Sae MoonPage 65

EndselectEnd Module

Page 66: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘 표현표현 –– 의사의사 코드코드 (4/4)(4/4)설계 (Design)

A Real Example (extracted from Numerical Analysis course)

procedure gauss jordan(a b : real numbers n: integer)procedure gauss-jordan(aij, bi: real numbers, n: integer){ aij are coefficients. (1 i,j n)}{ bi are results. (1 i n)}{ n is # of variables. (we assume that # of variables = # of equations.}

k 1k := 1;while (k n) begin

i := 1;while (i n) begin

j := k+1;c := aik/akk;while (j n) begin

if i = k then aij := aij, bi := bi; {actually, this line is not required.}j j

else if (i k) and (j = k) then aij := 0;else if (i k) and (j > k) then aij := aij – cakj; j := j + 1;

endif i k then bi := bi – cbk;i := i + 1;

endk := k + 1;

Software Engineeringby Yang-Sae MoonPage 66

k := k + 1;end

Page 67: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘 표현표현 –– NS NS 도표도표 (1/4)(1/4)설계 (Design)

논리 기술의 기본 형태인 순차, 선택, 반복을 박스로 표현

a. 순차 b. 선택(if-then-else)

action A DecisionT F

action B action A action B

c. 선택(if-then) d. 다중선택(case)

DecisionT F

action A

action A action B action C action D action E

Value 1 Value 2 Value 3 Value 4 Value 5

Selector

e. 반복(while) f. 반복(repeat-until)

action A action B action C action D action E

action A

action ACondition

Software Engineeringby Yang-Sae MoonPage 67

Condition

Page 68: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘 표현표현 –– NS NS 도표도표 (2/4)(2/4)설계 (Design)

NS 도표의 표현 규칙

• 도표는 항상 사각형

• 도표의 제어 흐름은 위에서 아래로

• 수평으로 그어진 줄은 항상 평행

• 빈 박스 – null statement

• 모든 사각형은 다시 하나의 NS 도표

Software Engineeringby Yang-Sae MoonPage 68

Page 69: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘 표현표현 –– NS NS 도표도표 (3/4)(3/4)설계 (Design)

NS 도표의 예 (잡지 구독 시스템의 구독 레코드 처리)

While there are records in the correspondence file

Read next correspondence

Check general format

T Errors F

Write error message

Transaction type

New subscription Renewal Cancellation Other

Call HandlePull sibactiber’srecord

Pull sibactiber’srecord Print error

New Subscription Update expiredate

Calculate amountof refund

Call updateAccount

Call updateAccount

message

Software Engineeringby Yang-Sae MoonPage 69

Account Account

Page 70: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

알고리즘알고리즘 표현표현 –– NS NS 도표도표 (4/4)(4/4)설계 (Design)

NS 도표의 장점

• 구조적 프로그램

• 배우기 쉽고, 읽기 쉬우며 원시 코드로 전환이 쉬움

• 프로그램의 구조를 쉽게 파악할 수 있다

• 프로그램의 복잡도, 제어구조를 한 눈에 볼 수 있다.

NS 도표의 단점

• 도표를 그려야 하는 불편함

수정이 용이하지 않음• 수정이 용이하지 않음

Software Engineeringby Yang-Sae MoonPage 70

Page 71: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

We are now …We are now …설계 (Design)

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성설계서 작성

Software Engineeringby Yang-Sae MoonPage 71

Page 72: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

사용자사용자 인터페이스인터페이스 (User Interface)(User Interface)설계 (Design)

사용자 인터페이스의 중요성

• 초기의 컴퓨터: 알고리즘이 중요 (계산 자체가 중요)( )

• 최근의 컴퓨터: 사용자의 입장이 중요 (이쁘게 보여야~)

사용자 인터페이스의 평가 기준

• 배우기 쉬워야

• 반응 속도가 빨라야

• 사용 중 오류가 발생하지 않아야

다수의 사용자가 만족할 수 있어야• 다수의 사용자가 만족할 수 있어야

• 사용법이 유지되어야 (한번 써보면, 다음에 더 쉽고, 그 다음에 더 쉽고…)

Software Engineeringby Yang-Sae MoonPage 72

Page 73: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

사용자사용자 인터페이스인터페이스 예제예제 (1/5)(1/5)설계 (Design)

Software Engineeringby Yang-Sae MoonPage 73

Page 74: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

사용자사용자 인터페이스인터페이스 예제예제 (2/5)(2/5)설계 (Design)

Software Engineeringby Yang-Sae MoonPage 74

Page 75: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

사용자사용자 인터페이스인터페이스 예제예제 (3/5)(3/5)설계 (Design)

Software Engineeringby Yang-Sae MoonPage 75

Page 76: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

사용자사용자 인터페이스인터페이스 예제예제 (4/5)(4/5)설계 (Design)

Software Engineeringby Yang-Sae MoonPage 76

Page 77: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

사용자사용자 인터페이스인터페이스 예제예제 (5/5)(5/5)설계 (Design)

Software Engineeringby Yang-Sae MoonPage 77

Page 78: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

사용자사용자 분석분석설계 (Design)

시스템의 최종 사용자에 대한 지식

• 나이, 인원, 성별?

• 컴퓨터에 대한 기본 지식, 동기

• 사용자의 부류(초보자, 능숙하지 못한 사용자, 전문가)

• 다양한 사용자 부류 일반적인 소프트웨어 (게임, 워드 프로세서, …)

Software Engineeringby Yang-Sae MoonPage 78

Page 79: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

대화설계대화설계 원리원리 (1/2)(1/2)설계 (Design)

사용자와 시스템 간의 대화 설계에서 따라야 하는 원칙…

일관성이 유지되어야 한다

• 용어, 문법, 화면설계

• 메뉴, 시스템 메시지, 설명서에 같은 의미와 용어

• 오류 메시지

익숙한 사용자에게는 지름길을 (H t K 제공)익숙한 사용자에게는 지름길을 (Hot Key 제공)

사용자에게 유익한 정보는 피드백(f db k)시킨다사용자에게 유익한 정보는 피드백(feedback)시킨다

• 잘못했으면 겸손한 정정을, 잘했으면 칭찬을…

대화의 종결을 표시하도록 설계한다

진행 중인 단계인지, 종료 단계인지…

Software Engineeringby Yang-Sae MoonPage 79

진행 중인 단계인지, 종료 단계인지

Page 80: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

대화설계대화설계 원리원리 (2/2)(2/2)설계 (Design)

단순한 오류를 처리하는 기능

Undo/Redo 기능 제공

시스템에 지시한 것을 바꾸기 쉽도록

브라우저에서 다른 사이트로 갔다가 “뒤로” …

사용자 중심의 상호작용이 되도록 설계

사용자는 자신이 중심이 되어 도구를 사용하고 있다는 느낌을 가져야

화면의 내용을 너무 복잡하지 않게

무엇이든 복잡하면 일반인의 외면을 받는다(매니아 빼고 ) 무엇이든 복잡하면 일반인의 외면을 받는다(매니아 빼고…) Niche market을 형성한 실버폰이 좋은 예임

Software Engineeringby Yang-Sae MoonPage 80

Page 81: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

메뉴메뉴 선택선택 (1/2)(1/2)설계 (Design)

초급이나 중급 사용자에게 적합

메뉴의 구조, 동작, 배치를 고려메뉴의 구조, 동작, 배치를 려

• 계층구조 (hierarchical structure)

• 선형구조 (linear structure)

• 네트워크 구조 (network structure)

메뉴 항목의 분류가 중요

논리적으로 같은 항목은 같은 범주에• 논리적으로 같은 항목은 같은 범주에

• 모든 경우를 포함하여 분류

• 중복된 항목은 피한다

• 익숙하지 않은 항목은 피한다

메뉴의 종류

단일화면 메뉴• 단일화면 메뉴

• 풀 다운 메뉴

• 고정 메뉴

Software Engineeringby Yang-Sae MoonPage 81

정 메뉴

Page 82: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

메뉴메뉴 선택선택 (2/2)(2/2)설계 (Design)

풀 다운 메뉴의 예제

Software Engineeringby Yang-Sae MoonPage 82

Page 83: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

양식양식 채움채움 (Form Fill) (Form Fill) 인터페이스인터페이스 (1/2)(1/2)설계 (Design)

자료 입력에 많이 쓰임

자료 항목, 위치, 길이자료 항목, 위치, 길이

어느 정도의 교육이 필요(중급, 고급 사용자에게 적합)

화면 설계화면 설계

• 관련 항목을 모음

• 화면 이름 작성

• 화면의 배치(항목의 순서)

• 입력 자료 항목의 길이

• 정렬정렬

• 선택적 항목

• 항목 간의 이동

오류의 정정• 오류의 정정

Software Engineeringby Yang-Sae MoonPage 83

Page 84: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

양식양식 채움채움 (Form Fill) (Form Fill) 인터페이스인터페이스 (2/2)(2/2)설계 (Design)

화면 예제 (네이버 가입)

Software Engineeringby Yang-Sae MoonPage 84

Page 85: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

명령어명령어 방식방식 (1/2)(1/2)설계 (Design)

정형적 언어(formal language)

운영체제, 텍스트 편집기, 모험 게임 등에 자주 사용운영체제, 텍스 편집기, 모험 게임 등에 자주 사용

고급 사용자에 적합

화면 설계화면 설계

• 어휘, 문법규칙, 명령어의 의미를 익혀야 함

융통성 있게 창의적으로 시스템에 지시

<예> vi의 명령어

^F 앞으로 한 화면 전진

^B 뒤로 한 화면 후퇴^B 뒤로 한 화면 후퇴

^D 반 화면 내림

^U 반 화면 올림

G 정해 준 줄로 커서를 옮김

/pattern pattern과 같은 다음 줄로 커서를 옮김

?pattern pattern과 같은 바로 전 줄로 커서를 옮김

Software Engineeringby Yang-Sae MoonPage 85

?pattern pattern과 같은 바로 전 줄로 커서를 옮김

Page 86: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

명령어명령어 방식방식 (2/2)(2/2)설계 (Design)

Software Engineeringby Yang-Sae MoonPage 86

Page 87: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

명령어명령어 설계설계 시시 주의사항주의사항설계 (Design)

1. 명령어의 개수를 가능하면 적게 한다.

의미 있고 구별되는 이름을 사용한다2. 의미 있고 구별되는 이름을 사용한다.

3. 약어는 일관성 있게 사용한다.

4. 약어가 사용되더라도 명령어가 제대로 작동해야 한다.

5. 문법 구조는 일관성이 있어야 한다.

6. 초보자를 위하여 문법규칙을 프롬프트로 안내한다.초보자를 위하여 문법규칙을 프롬프트로 안내한다

7. 명령어 메뉴는 중급 사용자에게 도움이 된다.

Software Engineeringby Yang-Sae MoonPage 87

Page 88: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

직접직접 조작조작 (Direct Manipulation)(Direct Manipulation)설계 (Design)

간략화 된 작업환경을 보여주고 그 속의 객체를 직접 조작

아이콘으로 객체가 표현아이콘 로 객체가 표현

편집기, 비디오 게임, 터치 스크린, 윈도우 시스템

마우스나 조이스틱을 사용마우 나 이 틱을 사용

WYSIWYG What you see is what you get

설계 시 고려사항설계 시 려사항

• 아이콘은 이해하기 쉬워야

• 잘못된 유추는 피해야

사용자 계층의 관습에 따라 설계• 사용자 계층의 관습에 따라 설계

• 아이콘은 알맞은 목적에 사용되어야

• 조화 및 일관성, 배치가 중요조화 및 일관성, 배치가 중요

우리가 현재 쓰고 있는 Windows 환경이 이에 해당한다.

Software Engineeringby Yang-Sae MoonPage 88

있 경 당

Page 89: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

화면화면 설계설계 시시 주의주의 사항사항설계 (Design)

1. 사용자의 특성을 염두에 둔다

2. 논리적으로 관련 있는 항목은 반전, 글자꼴, 색상으로 구별

하기 쉽게 한다.하기 쉽게 한다

3. 정보를 조직적으로 표현하기 위하여 다양한 정렬 방식 사용

한다.

4 다중화면의 경우 화면 사이의 일관성이 중요하다4. 다중화면의 경우 화면 사이의 일관성이 중요하다.

Software Engineeringby Yang-Sae MoonPage 89

Page 90: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

We are now …We are now …설계 (Design)

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성설계서 작성

Software Engineeringby Yang-Sae MoonPage 90

Page 91: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

시스템시스템 설계서설계서 작성작성설계 (Design)

1. 개요1.1 시스템의 목표

1.2 하드웨어, 소프트웨어1.2 하드웨어, 소프트웨어

1.3 소프트웨어의 주요 기능

1.4 설계상 제약사항

1.5 참조된 개발문서

2. 시스템 구조2.1 시스템 구조 개요

2.2 시스템 구조도

4. 화일 구조 또는 데이타베이스 설계

4.1 외부 화일(데이타베이스)의논리적 구조

2.3 자료사전

3. 모듈 설계(각 모듈에 대한)3.1 모듈이름

4.2 공유 자료

4.3 파일 접근 방법(데이타베이스

관리체제)3.2 모듈형

3.3 인터페이스

3.4 오류메시지

3 5 사용하는 파일

)

5. 요구분석 참조표

6. 제약사항

7 참고사항3.5 사용하는 파일

3.6 호출하는 모듈

3.7 기능설명

7. 참고사항

참고문헌

부록

Software Engineeringby Yang-Sae MoonPage 91

Page 92: 설계설계(Design)(Design)cs.kangwon.ac.kr/~ysmoon/courses/2010_2/se/05.pdf설계(Design) In this chapter … 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다.

Homework Homework #3#3Homework

Software Engineeringby Yang-Sae MoonPage 92