소프트웨어공학 (software engineering) 설계...

44
1 2005 2005가을학기 가을학기 문양세 문양세 컴퓨터과학과 컴퓨터과학과 강원대학교 강원대학교 자연과학대학 자연과학대학 소프트웨어 소프트웨어 공학 공학 (Software (Software Engineering) Engineering) 설계 설계 (Design) (Design) Page 2 Software Engineering by Yang-Sae Moon 요구 분석이 끝나면, 소프트웨어의 내부 구조를 설계하여야 한다. 지금까지는 “what”에 주안점이 있었다면, 지금부터는 “how”에 주안점을 두고 작업을 진행한다. 건축으로 치면, 설계 도면을 작성하는 작업이다. 방을 어디다 두고, 크기는 얼마로 하며, 어떤 모양으로 만들고, … We will cover … 설계의 정의 및 원리 구조적 설계 소프트웨어 구조 프로그램 설계 사용자 인터페이스 설계 설계서 작성 설계 (Design) In this chapter In this chapter …

Upload: hahuong

Post on 07-Feb-2018

220 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

1

20052005년년 가을학기가을학기

문양세문양세

컴퓨터과학과컴퓨터과학과

강원대학교강원대학교 자연과학대학자연과학대학

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

설계설계 (Design)(Design)

Page 2Software Engineering

by Yang-Sae Moon

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

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

두고 작업을 진행한다.

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

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

• 구조적 설계

• 소프트웨어 구조

• 프로그램 설계

• 사용자 인터페이스 설계

• 설계서 작성

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

Page 2: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

2

Page 3Software Engineering

by Yang-Sae Moon

We are now We are now ……

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성

설계 (Design)

Page 4Software Engineering

by Yang-Sae Moon

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

안을 창출하는 일”이다.

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

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

분 석 설 계 구 현

사용자요구사항

제약 조건 구축 시스템

시스템의본질정의

구현대안설정

시스템구축

분석모형 설계모형

Page 3: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

3

Page 5Software Engineering

by Yang-Sae Moon

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

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

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

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

설계의 구분

• 구조 설계

• 상세 설계

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

Page 6Software Engineering

by Yang-Sae Moon

시스템의 구조 설계

기능을 분해

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

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

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

결과

시스템 구조도(Structure Chart)

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

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

Page 4: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

4

Page 7Software Engineering

by Yang-Sae Moon

모듈 내부 설계

• 모듈 안의 알고리즘

• 모듈 안의 지역 변수

사용자 인터페이스

• 메뉴

• 입력 폼

• 출력 레포트

자료구조 설계

• 구조형 및 배열

결과

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

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

Page 8Software Engineering

by Yang-Sae Moon

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

• 하향적 세분화

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

• 객체: 자료+기능

• 시스템은 객체의 모임

자료구조 중심 설계

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

• Data Structure + Algorithm = Program

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

Page 5: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

5

Page 9Software Engineering

by Yang-Sae Moon

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

IPO(Input Process Output) 모형

구조도 (Structure Chart)

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

프로세스입력 출력

제어

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

Page 10Software Engineering

by Yang-Sae Moon

설계 원리

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

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

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

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

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

Page 6: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

6

Page 11Software Engineering

by Yang-Sae Moon

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

소프트웨어의 구조를 이루는 계층의 파악 (…은 … 기능을 갖고..)

기능 추상화

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

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

자료 추상화

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

제어 추상화

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

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

Page 12Software Engineering

by Yang-Sae Moon

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

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

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

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

• 전역변수가 없어야

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

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

• 모듈 설계 평가에 기초

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

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

Page 7: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

7

Page 13Software Engineering

by Yang-Sae Moon

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

점진적으로(incrementally) 구체화

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

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

CAD softrware tasks:user interaction task;2-D drawing creation task;graphics display task;drawing file management task;

end.

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

do while <digitizer interaction occurs>digitizer interface task;determine drawing request;

line: line drawing task;curcle: cricle drawing task;...

추상화 I 추상화 II 추상화 III

CAD system

Page 14Software Engineering

by Yang-Sae Moon

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

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

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

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

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

1 4

5

63

2

0

41

6532

12 3

45

6

Page 8: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

8

Page 15Software Engineering

by Yang-Sae Moon

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

야기한다.

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

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

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

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

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

Page 16Software Engineering

by Yang-Sae Moon

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

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

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

모듈의 응집력 구분

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

예) “판매 세금 계산” (동사, 목적어) 한 쌍으로 구성

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

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

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

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

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

응집력이 강함

응집력이 약함

Page 9: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

9

Page 17Software Engineering

by Yang-Sae Moon

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

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

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

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

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

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

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

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

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

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

응집력이 강함

응집력이 약함

Page 18Software Engineering

by Yang-Sae Moon

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

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

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

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

모듈의 결합도 구분

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

예) add(3, 5), sort(a)

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

(단, 배열, 레코드 전체가 사용되면 “자료 결합”으로 볼 수 있음)예) print_salary(인사 기록 레코드)

결합도가 약함

결합도가 강함

Page 10: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

10

Page 19Software Engineering

by Yang-Sae Moon

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

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

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

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

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

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

예) C/C++ 등에서 global 변수를 사용하는 예제, Shared Memory 사용

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

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

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

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

결합도가 약함

결합도가 강함

Page 20Software Engineering

by Yang-Sae Moon

We are now We are now ……

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성

설계 (Design)

Page 11: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

11

Page 21Software Engineering

by Yang-Sae Moon

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

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

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

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

데이터 흐름 형식에 중점

• Source-transaction-sink: 변환 분석(transform analysis)

• Transaction pattern: 처리 분석(transaction analysis)

Page 22Software Engineering

by Yang-Sae Moon

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

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

(관리자를 비롯한 높은) 사람들은 한 눈에 들어오는 구조를 원한다.결국, 간단하게 흐름을 파악할 수 있는 구조를 그려주어야 한다.

• 시스템을 모듈 단위로 분할

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

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

• 모듈의 이름과 기능

S4S3S2S1 S5

Structure #1

S2

S1

S3

S5S4

Structure #2S1

S3

S5S2

S4

Structure #3

Page 12: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

12

Page 23Software Engineering

by Yang-Sae Moon

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

표준 기호

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

comment

Module

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

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

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

모듈을 나타냄

Page 24Software Engineering

by Yang-Sae Moon

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

Main

A B C

W X Y Z

ab

c

f a f f

예제

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

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

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

• …

Page 13: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

13

Page 25Software Engineering

by Yang-Sae Moon

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

기타 기호

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

입출력 모듈

Page 26Software Engineering

by Yang-Sae Moon

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

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

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

Page 14: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

14

Page 27Software Engineering

by Yang-Sae Moon

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

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

(Parallel Processing이 어려움)

Page 28Software Engineering

by Yang-Sae Moon

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

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

입력 편중의 예

Page 15: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

15

Page 29Software Engineering

by Yang-Sae Moon

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

처리 편중의 예

처리 편중의 예

Page 30Software Engineering

by Yang-Sae Moon

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

양파 모양의 구조가 일반적

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

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

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

<잘못된 예> <잘된 예>

변경된 모듈

영향받는 모듈

변경된 모듈

Page 16: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

16

Page 31Software Engineering

by Yang-Sae Moon

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

자료의 변환 흐름(transformation flow)

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

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

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

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

입력 흐름

변환 센터

출력 흐름

Page 32Software Engineering

by Yang-Sae Moon

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

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

② 중앙 변환 부분을 식별

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

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

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

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

파일 이름읽음

화일 이름검증

단어개수계산

단어개수편집

단어개수출력

파일 이름

검증된파일이름

단어개수

입력 흐름

변환 센터

출력 흐름

Page 17: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

17

Page 33Software Engineering

by Yang-Sae Moon

변환변환 분석분석 방법방법 (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){

...}

단어 계산

단어개수계산

파일이름입력,검증

단어 개수편집,출력

검증된파일 이름

상태

파일 이름

단어개수

단어개수

Page 34Software Engineering

by Yang-Sae Moon

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

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

① 입력 자료 흐름과 출력 자료 흐름을 파악하여 경계를 표시한다. 즉, 입력 흐름 및

출력 흐름을 경계로 변환 센터를 식별하는 것이다.

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

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

하위 모듈을 위한 변환 분석

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

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

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

Page 18: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

18

Page 35Software Engineering

by Yang-Sae Moon

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

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

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

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

구독자레코드준비

만료일추출

구독갱신기간

입력

새만료일계산

구독자레코드변경

레코드를파일에출력

구독자 레코드

만료일

갱신기간

새 만료일

변경 레코드

입력 흐름

변환 센터

출력 흐름

Page 36Software Engineering

by Yang-Sae Moon

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

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

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

구독 갱신시스템

구독 갱신갱신 정보

추출갱신 레코드

저장

Page 19: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

19

Page 37Software Engineering

by Yang-Sae Moon

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

3) 구조도의 상세화

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

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

구독 갱신시스템

구독 갱신갱신 정보

추출

갱신 레코드저장

새 구독기간 입력

구독 만료일준비

구독자레코드 변경

레코드파일로 출력

구독 레코드추출

구독 만료일추출

Page 38Software Engineering

by Yang-Sae Moon

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

자료 처리 흐름도 (DFD)

Page 20: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

20

Page 39Software Engineering

by Yang-Sae Moon

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

자료 흐름도 (DFD)

Page 40Software Engineering

by Yang-Sae Moon

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

Level 0 변환 분석 (최상위)

Page 21: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

21

Page 41Software Engineering

by Yang-Sae Moon

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

Level 1 변환 분석

Page 42Software Engineering

by Yang-Sae Moon

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

시스템 구조도

Page 22: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

22

Page 43Software Engineering

by Yang-Sae Moon

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

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

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

방법

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

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

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

T

처리흐름

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

Page 44Software Engineering

by Yang-Sae Moon

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

자료 흐름도(DFD)

Page 23: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

23

Page 45Software Engineering

by Yang-Sae Moon

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

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

Page 46Software Engineering

by Yang-Sae Moon

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

Level 0 변환 분석 (최상위)

Page 24: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

24

Page 47Software Engineering

by Yang-Sae Moon

We are now We are now ……

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성

설계 (Design)

Page 48Software Engineering

by Yang-Sae Moon

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

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

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

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

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

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

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

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

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

Page 25: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

25

Page 49Software Engineering

by Yang-Sae Moon

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

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

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

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

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

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

Page 50Software Engineering

by Yang-Sae Moon

MVC MVC 구조구조설계 (Design)

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

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

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

분리하는 이유

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

수 있기 때문임

Excel에서

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

수 있으나(뷰), • 실제 저장은 한 군데 있으며(모델),• 다른 뷰에서 각기 수정하여도(제어)한 군데 반영됨

Page 26: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

26

Page 51Software Engineering

by Yang-Sae Moon

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

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

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

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

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

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

Page 52Software Engineering

by Yang-Sae Moon

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

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

층의 서브시스템이 사용

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

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

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

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

Page 27: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

27

Page 53Software Engineering

by Yang-Sae Moon

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

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

는 작업이 반복

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

대표적인 예는 Unix 쉘

Page 54Software Engineering

by Yang-Sae Moon

We are now We are now ……

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성

설계 (Design)

Page 28: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

28

Page 55Software Engineering

by Yang-Sae Moon

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

알고리즘은 모듈의 명세서에 해당한다.• 모듈의 세부처리 모듈의 세부처리 기능을 기술한 내역

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

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

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

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

소수확인

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

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

Page 56Software Engineering

by Yang-Sae Moon

상세 설계의 표현

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

• 수행이 가능할 것

• 유지보수가 용이할 것

상세 설계의 표현

• 흐름도(flow chart)

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

• 의사 코드(pseudo code)

• 의사 결정표(decision table)

• 의사 결정도(decision diagram)

• PDL(Program Design Language)

• 상태천이도(state transition diagram)

• 행위도(action diagram)

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

Page 29: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

29

Page 57Software Engineering

by Yang-Sae Moon

정확성

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

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

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

효율성

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

• 처리 소요 시간 최소화

• 예: 1에서 N까지의 합

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

1

n

ii

=∑

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

SeriesSum = SeriesSum + Counterwrite "The sum is", SeriesSum

<방법 2>SeriesSum = (1.0 + N)*(N/2.0)write "The sum is", SeriesSum

( )O N(1)O

Page 58Software Engineering

by Yang-Sae Moon

효율성 (계속)

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

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

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

1.99 x 1030101.07 x 103011.27 x 10301,0242Exponential2n

10121,000,000,0001,000,0001,0001CubicN3

100,000,0001,000,00010,0001001QuadraticN2

1

1

1

1

1

입력 개수

N log N

Linear

Logarithmic

Constant

이름

40

10

4

1

10

700

100

7

1

100

10,000

1,000

10

1

1,000

140,000N log N

10,000

14

1

10,000

N

log N

1

분석 방법

Page 30: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

30

Page 59Software Engineering

by Yang-Sae Moon

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

적합성

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

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

Page 60Software Engineering

by Yang-Sae Moon

표현하기 쉽다.

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

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

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

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

Page 31: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

31

Page 61Software Engineering

by Yang-Sae Moon

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

자바로 쓴 알고리즘, C로 쓴 알고리즘, Pascal로 쓴 알고리즘 등이 이 범

주에 해당한다고 볼 수 있다.

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

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

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

이 무시될 수 있음

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

들 필요가 있음

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

Page 62Software Engineering

by Yang-Sae Moon

요구 분석에서의 구조적 언어 vs. 의사 코드

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

처리의 기본적인 기능 수행 절차

사용자 중심

자료 흐름도 상의 최소 단위로 사용

분석 단계

동일한 논리 구조 사용

순차 (sequence)

선택 (selection)

반복 (iteration)

구조적 언어

모듈의 기본적인 기능 수행 절차 및 세부적

방법상세 정도

프로그래머 중심

설계 구조도 상의 모든 모듈

설계 단계

의사 코드

명세 방법

명세 대상

사용 단계

논리 구조

특성

Page 32: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

32

Page 63Software Engineering

by Yang-Sae Moon

의사 코드 사례

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

주급계산

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

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

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

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

End AssumeDefine

Rate: Real /* 시간 당 급료 */EndefineIf (급여형태=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

EndselectEnd Module

Page 64Software Engineering

by Yang-Sae Moon

Real Example (extracted from Numerical Analysis course)

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

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 := 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.}else if (i ≠ k) and (j = k) then aij := 0;else if (i ≠ k) and (j > k) then aij := aij – c⋅akj; j := j + 1;

endif i ≠ k then bi := bi – c⋅bk;i := i + 1;

endk := k + 1;

end

Page 33: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

33

Page 65Software Engineering

by Yang-Sae Moon

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

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

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

action A

action B action A action B

DecisionT F

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

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

DecisionT F

action A

action A

action A

action A action B action C action D action E

Value 1 Value 2 Value 3 Value 4 Value 5

Selector

Condition

Condition

Page 66Software Engineering

by Yang-Sae Moon

NS 도표의 표현 규칙

• 도표는 항상 사각형

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

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

• 빈 박스 – null statement

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

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

Page 34: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

34

Page 67Software Engineering

by Yang-Sae Moon

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

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

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 HandleNew Subscription

Pull sibactiber’srecord

Pull sibactiber’srecord

Update expiredate

Calculate amountof refund

Call updateAccount

Call updateAccount

Print errormessage

Page 68Software Engineering

by Yang-Sae Moon

NS 도표의 장점

• 구조적 프로그램

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

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

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

NS 도표의 단점

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

• 수정이 용이하지 않음

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

Page 35: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

35

Page 69Software Engineering

by Yang-Sae Moon

We are now We are now ……

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성

설계 (Design)

Page 70Software Engineering

by Yang-Sae Moon

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

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

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

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

• 배우기 쉬워야

• 반응 속도가 빨라야

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

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

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

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

Page 36: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

36

Page 71Software Engineering

by Yang-Sae Moon

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

Page 72Software Engineering

by Yang-Sae Moon

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

MMC Category 선택 Combo Box

MMC Command List

MMC Command Parameter Table

MMC Command Input Text Field

MMC Command Result Output Window

Command실행

Command도움말

Output Window 결과삭제

Window닫기

Page 37: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

37

Page 73Software Engineering

by Yang-Sae Moon

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

Page 74Software Engineering

by Yang-Sae Moon

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

Page 38: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

38

Page 75Software Engineering

by Yang-Sae Moon

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

Page 76Software Engineering

by Yang-Sae Moon

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

• 나이, 인원, 성별?

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

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

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

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

Page 39: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

39

Page 77Software Engineering

by Yang-Sae Moon

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

일관성이 유지되어야 한다

• 용어, 문법, 화면설계

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

• 오류 메시지

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

사용자에게 유익한 정보는 feedback시킨다

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

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

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

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

Page 78Software Engineering

by Yang-Sae Moon

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

Undo/Redo 기능 제공

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

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

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

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

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

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

Page 40: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

40

Page 79Software Engineering

by Yang-Sae Moon

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

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

• 계층구조 (hierarchical structure)

• 선형구조 (linear structure)

• 네트워크 구조 (network structure)

메뉴 항목의 분류가 중요

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

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

• 중복된 항목은 피한다

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

메뉴의 종류

• 단일화면 메뉴

• 풀 다운 메뉴

• 고정 메뉴

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

Page 80Software Engineering

by Yang-Sae Moon

풀 다운 메뉴의 예제

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

Page 41: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

41

Page 81Software Engineering

by Yang-Sae Moon

자료 입력에 많이 쓰임

자료 항목, 위치, 길이

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

화면 설계

• 관련 항목을 모음

• 화면 이름 작성

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

• 입력 자료 항목의 길이

• 정렬

• 선택적 항목

• 항목 간의 이동

• 오류의 정정

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

Page 82Software Engineering

by Yang-Sae Moon

화면 예제 (네이버 가입)

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

Page 42: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

42

Page 83Software Engineering

by Yang-Sae Moon

정형적 언어(formal language)

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

고급 사용자에 적합

화면 설계

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

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

<예> vi의 명령어

^F 앞으로 한 화면 전진

^B 뒤로 한 화면 후퇴

^D 반 화면 내림

^U 반 화면 올림

G 정해 준 줄로 커서를 옮김

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

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

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

Page 84Software Engineering

by Yang-Sae Moon

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

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

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

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

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

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

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

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

Page 43: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

43

Page 85Software Engineering

by Yang-Sae Moon

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

아이콘으로 객체가 표현

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

마우스나 조이스틱을 사용

WYSIWYG What you see is what you get

설계 시 고려사항

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

• 잘못된 유추는 피해야

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

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

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

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

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

Page 86Software Engineering

by Yang-Sae Moon

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

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

하기 쉽게 한다.

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

한다.

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

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

Page 44: 소프트웨어공학 (Software Engineering) 설계 (Design)cs.kangwon.ac.kr/~ysmoon/courses/2005_2/se/05.pdf · 2 Page 3 Software Engineering by Yang-Sae Moon We are now … 설계의정의및원리

44

Page 87Software Engineering

by Yang-Sae Moon

We are now We are now ……

설계의 정의 및 원리

구조적 설계

소프트웨어 아키텍처

프로그램 설계

사용자 인터페이스 설계

설계서 작성

설계 (Design)

Page 88Software Engineering

by Yang-Sae Moon

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

1. 개요1.1 시스템의 목표

1.2 하드웨어, 소프트웨어

1.3 소프트웨어의 주요 기능

1.4 설계상 제약사항

1.5 참조된 개발문서

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

2.2 시스템 구조도

2.3 자료사전

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

3.2 모듈형

3.3 인터페이스

3.4 오류메시지

3.5 사용하는 화일

3.6 호출하는 모듈

3.7 기능설명

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

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

구조

4.2 공유 자료

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

관리체제)

5. 요구분석 참조표

6. 제약사항

7. 참고사항

참고문헌

부록