Transcript Document

설 계
(Design)
- Software Engineering -
강의 개요
소개
 설계의 원리
 구조적 설계 기법

변환 분석

처리 분석
 설계 평가 기준
 자료구조 설계
 알고리즘 설계
 사용자 인터페이스 설계
 설계서
2
설 계
 사용자의 요구를 만족시키기 위하여 제약 조건이 반영된 구현
대안을 창출하는 일
 소프트웨어의 시스템의 내부를 설계
 모듈의 구조
 자료 구조
 알고리즘 설계
분 석
설 계
사용자
요구사항
제약조건
구현
구축 시스템
시스템
구축
구현대안
설정
시스템의
본질정의
분석모형
설계모형
3
구조 설계
 시스템의 구조 설계
 기능을 분해
 모듈 구조
 모듈 간의 관계를 정립(모듈 인터페이스)
 자료설계(데이터베이스 설계)
 결과
시스템 구조도(Structure Chart)
외부 화일 및 DB 설계도(레코드 레이아웃, ERD)
4
상세 설계
 모듈 내부 설계


모듈 안의 알고리즘
모듈 안의 지역 변수
 사용자 인터페이스



메뉴
입력 폼
출력 레포트
 자료구조 설계

구조형 및 배열
 결과
프로그램 사양서
화면 및 출력물 레이아웃
5
설계 방법론
 구조적 설계(structured design)



시스템을 기능적 관점에서 다룸
하향적 세분화
Yourdon/Coad
 객체지향 설계(object-oriented design)




자료와 자료에 적용될 기능을 함께 추상화
객체: 자료+기능
시스템은 객체의 모임
Yourdon, Sheller/Meller, Rumbaugh, Booch...
 자료구조 중심 설계


입출력자료의 구조 파악으로 소프트웨어 구조를 추출
Jackson, Warnier-Orr
6
설계 원리
 모듈 분할의 기본 원칙

변경에 의한 영향을 최소화
 IPO 모형
제 어
입력
프로세스
출력
입 력
프로세스
출력
 설계 원리




추상화의 원리
정보 은닉
단계적 분해
모듈화
7
추상화(Abstraction)의 원리
 복잡한 문제 ⇒
추상화
⇒ 개념
(현실)
 소프트웨어의 구조를 이루는 계층의 파악
 기능 추상화

입력자료를 출력자료로 변환하는 과정을 추상화

부프로그램의 시그네처와 기능만 생각
 자료 추상화

자료와 기능을 묶어서 생각
 제어 추상화

외부 이벤트에 대한 반응을 추상화
8
정보 은닉(Information Hiding)
 각 모듈의 자세한 처리 내용이 시스템의 다른 부분으로
부터 감추어져 있어야
 각 모듈이 다른 모듈에 구애 받지 않고 설계
 인터페이스가 모듈 안의 구체적 사항을 최소로 반영

전역변수가 없어야
 모듈 단위의 수정, 시험, 유지보수에 큰 장점

모듈 설계 평가에 기초
9
단계적 분해(Stepwise Refinement)
 기능을 최대한으로 떼어내어 생각
 점차적으로 구체화
 상세한 내역(알고리즘, 자료구조)는 가능한 뒤로 미룸
추상화 I
CAD system
추상화 II
추상화 III
CAD softrware tasks:
procedure: 2-D drawing creation;
user interaction task;
repeat util <drawing creation task terminates>
2-D drawing creation task;
do while <digitizer interaction occurs>
graphics display task;
digitizer interface task;
drawing file management task;
determine drawing request;
end.
line: line drawing task;
curcle: cricle drawing task;
.
.
.
10
모듈화(Modularization)
1
2
1
4
2
5
3
6
0
3
4
1
4
5
6
문제영역





시스템 분해
2
3
5
6
시스템 구조
시스템의 분해를 어떻게 할 것인가?
한 모듈의 규모
이식성
모듈의 응집력(cohesion)이 높게
모듈 간의 결합력(coupling)은 약하게
11
구조적 설계(Structured Design)
 시스템을 이루는 모듈의 구조를 파악하는 방법
 모듈 분해의 계층적, 인터페이스 지향적 접근
 W. Stevens, G. Myers와 L. Constantine
Functional
Decomposition
+
Design
Criterion
+
Design
Heuristics
(cohesion, coupling)
 데이타의 흐름 형식에 중점
 source-transform-sink: 변환 분석(transform analysis)

transaction pattern: 처리 분석(transaction analysis)
12
구조적 설계(Structured Design)
 시스템 구조도(structure chart)의 도출




S1
S2
시스템을 모듈 단위로 분할
모듈의 계층적 구성
모듈 사이의 입출력 인터페이스
모듈의 이름과 기능
S3
S4
S5
S1
S4
S3
Structure #1
S4
S5
S1
S2
S5
Structure #2
S2
S3
Structure #3
13
시스템 구조도(Structure Chart)
 표준 기호
한 모듈이 모듈을 호출
자료 흐름(변수나 자료구조)
제어 흐름(플래그)
모듈
반 복
선택
주석달기
comment
Module
14
구조적 설계(Structured Design)
예
Main
c
a
b
B
A
a
f
W
C
f
X
f
Y
Z
 기타 사용되는 기호
미리 정의된 모듈(라이브러리)
입출력 모듈
15
변환분석(Transform Analysis)
 자료의 변환 흐름(transformation flow)
입력 흐름
출력 흐름
변환 센터
 변환 분석은 자료 흐름도를 입력흐름, 변환센터,
출력흐름으로 분할하는 과정



입력 흐름: 입력을 준비하는 단계(입력, 검증...)
출력 흐름: 출력을 위하여 준비되는 단계(포매팅, 출력)
변환 센터: 실제 자료가 변환
16
변환 분석 방법
① 자료흐름도에서 입력 자료 흐름과 출력 자료 흐름을 파악
② 중앙 변환 부분을 식별
③ 변환 중심부를 축으로 최상위 구조(first-cut) 작성
④ 각 모듈의 하위 구조도 같은 방법으로 분석
⑤ 설계 기준을 적용하여 수정, 최적화
 예: 화일 안에 포함된 단어의 개수를 계산
화일 이름
읽음
화일이름
입력 흐름
단어개수
출력
단어개수
편집
화일 이름
검증
검증된
화일이름
단어개수
계산
단어개수
출력 흐름
변환 센터
17
변환 분석
 시스템 구조도
 프로그램의 구조
단어 계산
검증된
화일이름
단어개수
화일이름
상태
화일이름
입력,검증
단어개수
단어개수
계산
단어 개수
편집,출력
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)
{
...
}
18
구독자 관리 시스템
1) 자료 흐름의 요소를 분해

입력 자료 흐름, 출력 자료 흐름, 변환 센터
구독자
레코드
준비
출력 흐름
구독자 레코드
만료일
추출
입력 흐름
만료일
새
만료일
계산
새 만료일
구독자
레코드
변경
변경 레코드
갱신기간
구독
갱신기간
입력
변환 센터
레코드를
화일에
출력
19
구독자 관리 시스템
2) 구조도의 최상위층 작성
3) 구조도를 상세화
구독 갱신
시스템
구독 갱신
시스템
갱신 정보
추출
갱신 정보
추출
구독 갱신
구독 갱신
갱신 레코드
저장
갱신 레코드
저장
새구독
기간 입력
구독 만료일
준비
구독 레코드
추출
구독자
레코드 변경
레코드
화일로 출력
구독 만료일
추출
20
마스터 파일의 변경 DFD
21
마스터 파일 변경 시스템 구조도
22
처리 분석(Transaction Analysis)
 처리(transaction)

자료 흐름도의 한 프로세스에서 여러 개의 자료 흐름이 유
출되는 것
처리흐름
처리센터
T
처리 경로(action path)
 방법
① 자료 흐름도에서 처리 센터를 식별
② 처리 모듈을 중심으로 구조도 작성
③ 구조도를 상세화 - 하위 구조도를 작성
23
사례: 현금자동지급기
24
사례: 현금자동지급기 설계
25
설계 평가 기준
 모듈의 크기


소규모 시스템: 함수, 서브루틴
대규모 시스템: 독립 프로그램(하나의 수행 화일)
 모듈 응집력(module cohesion)

모듈 안의 요소들이 강한 응집력을 갖도록 설계
 모듈 결합도(module coupling)

다른 모듈과의 결합도가 약한 모듈이 되도록 설계
 설계 요령(design heuristics)
26
모듈 응집력
 모듈 안의 구성 요소들이 공동의 목적을 달성하기 위
하여 관련되어 있는 정도
목표


한 모듈이 단일 기능을 갖도록 설계
<예>
finishup : 최종 보고서를 출력하고, 계산 결과를 디스크에
저장
 응집력의 단계
① 기능적(functional)

모듈의 기능이 한 문장으로 떨어짐
<예> 판매세금 계산
② 순차적(sequential)

작업의 결과가 다른 작업에 입력
<예> 거래를 읽고 마스터 파일을 변경
27
모듈 응집력(Strength)
③ 교환적(communicational)

동일한 입력과 출력을 사용하는 작업의 모임
<예> 출력화일을 출력하고 저장
④ 절차적(procedural)

같은 범주에 속하는 일들이 순서적으로 수행
<예> restart-RTN : 총계를 출력하고, 화면을 지우고 메뉴를
뿌리고, 메뉴 선택을 받음
⑤ 시간적(temporal)

프로그램 초기화
⑥ 논리적(logical)

유사한 성격의 작업을 한 모듈로 모음
⑦ 우연적(coincidential)

아무 관련 없는 작업을 한 모듈에 모음
28
모듈 결합도(Coupling)
 모듈 간의 관련 정도
 설계 목표

모듈 간의 결합도가 낮게 설계
 결합의 단계
① 자료 결합(data coupling)

모듈들이 간단한 변수를 파라메터로 교환
② 스탬프 결합(stamp coupling)

모듈 사이에 nonglobal 자료 구조를 교환
③ 제어 결합(control coupling)

제어용 신호(flag)를 주고 받음
④ 공통 결합도(common coupling)

global variable을 사용
⑤ 내용 결합(content coupling)

한 모듈이 다른 모듈 내의 값을 수정
29
설계 요령(Design Heuristics)
 first-cut(최상위) 모듈의 결합은 줄이고 응집은 높이도
록 최대한 노력
 high fan-out은 줄이도록 노력
......
 redundancy와 complexity를 줄이기 위하여 모듈의
인터페이스를 점검
30
설계 요령(Design Heuristics)
 양파 모양의 구조가 일반적


복잡한 모듈의 연결은 피함
과다한 깊이를 가진 구조도 피함
 모듈의 영향권을 그 모듈의 하위에 둔다
<잘못된 예>
변경된 모듈
<잘된 예>
변경된 모듈
영향받는 모듈
31
자료구조 설계
 외부 화일에 대한 설계

자료설계표
화일 이름: 인사기본화일(INSA_BASIC.DAT)
화일 종류: 인덱스된 순차 화일
인덱스: primary -> employee_no secondary->name
자료 이름
자료형
자릿수
employee_no
정수형
4
name
문자형
10
sex
문자형
1
jumin_no
정수형
16
department
문자형
10
position
문자형
10
pay_grade
정수형
2
phone_office
문자형
15
phone_home
문자형
15
address
문자형
40
비
고
32
자료추상화(Data Abstraction) 기법
송장화일 = data type is create, empty-file, add-invoice, find-invoice,
pull-invoice
Overview
송장화일은 송장 레코드의 순서있는 모임이다. 각 송장 레코드(다른
곳에서 정의됨)는 송장 고유번호가 부여되어 있다.
Operation
create = proc () return (송장화일)
effects 새로운 송장화일을 보내줌
empty-file = proc (ifile: 송장화일) returns (boolean)
effects ifile이 비었으면 true를 보내줌
add-invoice = proc (ifile: 송장화일, i: 송장 레코드)
modify ifile
effects 화일에 레코드 i를 추가
find-invoice = proc (ifile: 송장화일, id: 송장고유번호)
returns (boolean)
requires empty-file(ifile)이 false이어야 함
effects ifile에 송장고유번호 = id인 레코드가 존재하면 true,
아니면 false를 내보냄
33
사례: 비디오 대여점(Level 0 변환분석)
34
사례: 비디오 대여점(Level 1 변환분석)
35
사례: 비디오 대여점(시스템 구조도)
36
소프트웨어 아키텍처
 건축 설계

설계와 시공에 대한 가이드가 될 큰 밑그림

일관적인 모양과 조화를 위한 스타일을 정하는 작업
 스타일이라는 개념을 소프트웨어 구조에도 적용
 일단 시스템이 개발된 뒤에는 잘못된 구조를 바로잡기가
쉽지 않음
 소프트웨어 구조는 시스템 분할, 전체 제어 흐름, 오류 처
리 방침, 서브시스템 간의 통신 프로토콜을 포함
37
저장소 구조
 서브시스템들이 단일 중앙 저장소의 자료를 접근하고 변경
 서브시스템들은 독립적이고 중앙 자료 저장소를 이용하여 상호 대화
 사례
 급여 시스템
 은행 시스템과 같은 데이터베이스 관리 시스템
38
MVC 구조
 MVC
모델 서브시스템: 도메인의 지식을 저장보관
뷰 서브시스템: 사용자에게 보여줌
제어 서브시스템: 사용자와의 상호 작용을 관리
분리하는 이유
사용자 인터페이스, 즉 뷰와 제어가 도메인 지식을 나타내는 모델
보다는 더 자주 변경될 수 있기 때문
39
클라이언트 서버 구조
 서버는 클라이언트라 불리는 서브시스템에게 서비스를 제공
 서비스의 요구
 원격 호출 메커니즘이나 CORBA나 Java RMI의 공통 객체 브로커
 클라이언트: 사용자로부터 입력을 받아 범위를 체크하고 데이터베
이스 트랜잭션을 구동하여 필요한 모든 데이터를 수집
 서버: 트랜잭션을 수행하고 데이터의 일관성을 보장한다
40
계층 구조
 각 서브 시스템이 하나의 계층이 되어 하위층
이 제공하는 서비스를 상위층의 서브시스템이 사
용
 추상화의 성질을 잘 이용한 구조
 대표적인 예: OSI 구조
 장점
 각 층을 필요에 따라 쉽게 변경할 수 있음
 단점
 성능 저하를 가져올 수 있음
41
파이프 필터 구조
 서브시스템이 입력 데이터를 받아 처리하고 결과를 다른 시스템에
보내는 작업이 반복
 서브시스템을 필터라고 하고 서브시스템 사이의 관계를 파이프라
함
 대표적인 예는 Unix 쉘
42
알고리즘 설계
 모듈 명세서
모듈의 세부처리 모듈의 세부처리 기능을 기술한 내역
 시스템 구조도의 박스에 표현되지 않은 자세한 알고리즘을 기술
 모듈의 내부 자료에 대한 설명을 포함
 프로그램 구조도와 함께 시스템의 동작 상태를 예측할 수 있는 근
거 제공

<예>
숫자
결과
소수확인
Module 소수 확인(숫자, 결과)
내부자료: ....
처리기능: 숫자보다 작은 이미 구한
모든 소수로 나누어 나머지가
0이 아니면 결과는 소수이다.
43
알고리즘 설계
 상세설계의 표현



설계의 표현과 코딩이 용이 할 것
수행이 가능할 것
유지보수가 용이할 것
 모듈 명세화 기법








흐름도(flow chart)
N-S 도표(Nassi-Schneiderman Chart)
의사 코드(pseudo code)
의사 결정표(decision table)
의사 결정도(decision diagram)
PDL(Program Design Language)
상태천이도(state transition diagram)
행위도(action diagram)
44
알고리즘의 선택
 정확성



모듈이 정확하게 수행되지 않는 조건을 점검
예: 음수, 0, 경계값 입력
재사용
 효율성



기억 공간
처리 소요 시간
예: 1에서 N까지의 합
<방 법 1>
<방 법 2>
SeriesSum = 0
SeriesSum = (1.0 + N)*(N/2.0)
for Counter = 1 to N do
write "The sum of the integers from 1 to N is", SeriesSum
SeriesSum = SeriesSum + Counter
write "The sum of the integers from 1 to N is", SeriesSum
45
알고리즘의 선택
 효율성
-----------------------------------------------------------------------------입력 갯수
복잡도(Order) 이 름
1
10
100
1,000
10,000
-----------------------------------------------------------------------------1
Constant
11
1
1
1
1
logN
Logarithmic 1
4
7
10
14
N
Linear
1
10
100
1000
10,000
NlogN
NlogN
1
40
700
10,000
140,000
N2
Quadratic
1 100
10,000
1,000,000
100,000,000
N3
Cubic
1 1000 1,000,000
1,000,000,000
1012
2n
Exponential 2 1024 1.27x1030
1.07x10301
1.99x103010
------------------------------------------------------------------------------
 적합성


알고리즘이 주어진 문제를 정확히 기술하였는가?
machine processible specification
46
NS-도표
 논리 기술의 기본 형태인 순차, 선택, 반복의 표현
을 박스로 표현
a. 순차
b. 선택(if-then-else)
action A
action B
Decision
action A
e. 반복(while)
Condition
F
action B
action A
c. 선택(if-then)
T
Decision
T
d. 다중선택(case)
Selector
F
Value 1
Value 2
action A
action B action C action D
Value 3 Value 4
Value 5
action E
f. 반복(repeat-until)
action A
action A
Condition
47
NS-도표의 표현 규칙
 도표는 항상 사각형
 도표의 제어흐름은 위에서 아래로
 수평으로 그어진 줄은 항상 평행
 빈 박스 - null statement
 모든 사각형은 다시 하나의 N-S도표
48
NS-도표의 예
 잡지구독 시스템의 구독 레코드처리에 대한 N-S 도표
While there are records in the correspondence file
Read next correspondence
Check general format
T
F
Errors
Write error message
Transaction type
New subscription
Renewal
Pull sibactiber’s
record
Call Handle
New Subscription Update expire
date
Call update
Account
Cancellation
Other
Pull sibactiber’s
record
Print error
Calculate amount message
of refund
Call update
Account
49
NS-도표의 장단점
 장점




구조적 프로그램
배우기 쉽고, 읽기 쉬우며 원시 코드로 전환이 쉬움
프로그램의 구조를 쉽게 파악할 수 있다
프로그램의 복잡도, 제어구조를 한 눈에 볼 수 있다.
 단점


도표를 그려야 하는 불편함
수정이 용이하지 않음
50
의사 코드(Pseudo Code)
 모듈의 입출력 자료, 내부 자료, 수행 절차 등을 알
고리즘의 형태로 기술
 실제 프로그램과 유사하나 특정 프로그래밍 언어에
독립적
 전문적 용어의 사용은 가능하지만 프로그래머의 고유
한 스타일이나 특성이 무시될 수 있음
 의사 코드를 쓰는 방식이 다를 수 있으므로 한 프로
젝트 안에서 표준을 만들 필요가 있음
51
구조적 영어와 의사 코드의 비교
특성
논리 구조
사용 단계
명세 대상
명세 방법
상세 정도
구조적 언어
동일한 논리 구조 사용
- 순차
- 선택
- 반복
분 석 단 계
자료 흐름도 상의
최소 단위로 처리
사용자 중심
처리의 기본적인
기능 수행 절차
의사 코드
설 계 단 계
설계 구조도 상의
모든 모듈
프로그래머 중심
모듈의 기본적인 기능
수행 절차 및 세부적 방법
52
의사 코드의 사례
고용자레코드
주급총액
주급계산
고용자 레코드 = 급여형태 + 성명 + 주간근무시간
급여형태 = [1|2|3]
 모듈명세서
Module 주급계산(고용자 레코드; 주급총액)
Assume
1<급여형태<3
0<주간 근무 시간<100
End Assume
Define
Rate: Real /* 시간 당 급료 */
Endefine
If (급여형태=1) Then Rate=4.2
Elseif (급여 형태=2) Then Rate=6.0
Else Rate=9.0
Endif
Select Using (주간근무시간) From
Case (1-40): 주급총액=주간근무시간*Rate
Case (41-50): 주급총액=(주간근무시간*Rate)*0.5
Case (51-99): 주급총액=(주간근무시간*Rate)*1.0
Endselect
End Module
53
의사 결정표(Decision Table)
<예>
근속년수
직원저축정책 1년 미만
1년 이상
연봉
$20,000 미만
$20,000 이상
$30,000 미만
$30,000 이상
저축허용비율
→
5%
→
4%
→
6%
→
5%
 의사 결정표
근속연수
1년 미만
1년 이상
1년 미만
연봉(천$)
<20
>=20
<30
>=30
허용비(%)
5
4
6
5
1년 이상
54
자료구조 설계
 자료구조의 구체적인 설계
<예> 인사기록 마스터
int
Sawon_no;
char
Name[10];
int
Depart;
int
Position;
...
 자료구조의 원칙


정보은닉
 중요한 자료구조에 직접 접근하고 변경하는 것을 피함
자료 추상화
 사용자 정의 타입을 사용
55
사용자 인터페이스 설계
 사용자 분석
 대화설계 원리
 메뉴 선택
 양식 채움(form-fill) 인터페이스
 명령어 방식
 직접 조작
 화면 설계 시 주의 사항
56
사용자 인터페이스
 사용자 인터페이스의 중요성


초기의 컴퓨터: 알고리즘이 중요
최근의 컴퓨터: 사용자의 입장이 중요
 사용자 인터페이스의 평가 기준
1)
2)
3)
4)
5)
배우기 쉬움
속도
사용 중 오류의 빈도
사용자의 만족
사용법의 유지
57
사용자 분석
 시스템의 최종 사용자에 대한 지식




나이, 인원
컴퓨터에 대한 기본 지식, 동기
사용자의 부류(초보자, 능숙하지 못한 사용자, 전문가)
다양한 사용자 부류
58
대화설계 원리
 일관성이 유지되어야 한다
 용어, 문법, 화면설계
 메뉴, 시스템 메시지, 설명서에 같은 의미와 용어
 오류 메시지
 익숙한 사용자에게는 지름길을
 사용자에게 유익한 정보는 feedback시킨다
 시스템의 반응
 대화의 종결을 표시하도록 설계한다
 지시의 종결을 표시
 지시의 취소
 단순한 오류를 처리하는 기능
 undo
 시스템에 지시한 것을 바꾸기 쉽도록
 사용자 중심의 상호작용이 되도록 설계
59
메뉴 선택
 초급이나 중급 사용자에게 적합
 메뉴의 구조, 동작, 배치를 고려
 계층구조
 선형구조
 네트워크 구조
 메뉴 항목의 분류가 중요
 논리적으로 같은 항목은 같은 범주에
 모든 경우를 포함하여 분류
 중복된 항목은 피한다
 익숙하지 않은 항목은 피한다
 메뉴의 종류
 단일화면 메뉴
 풀 다운 메뉴
 고정 메뉴
60
양식 채움(Form-fill) 인터페이스




자료 입력에 많이 쓰임
자료 항목, 위치, 길이
어느 정도의 교육이 필요(중급, 고급 사용자에게 적합)
화면 설계








관련 항목을 모음
화면 이름 작성
화면의 배치(항목의 순서)
입력 자료 항목의 길이
정렬
선택적 항목
항목 간의 이동
오류의 정정
61
명령어 방식
 정형적 언어(formal language)
 운영체제, 텍스트 편집기, 모험 게임 등에 자구 사용
 고급 사용자에 적합

어휘, 문법규칙, 명령어의 의미를 익혀야 함
 융통성 있게 창의적으로 시스템에 지시
<예> vi의 명령어
^F
앞으로 한 화면 전진
^B
뒤로 한 화면 후퇴
^D
반 화면 내림
^U
반 화면 올림
G 정해 준 줄로 커서를 옮김
/pattern pattern과 같은 다음 줄로 커서를 옮김
?pattern pattern과 같은 바로 전 줄로 커서를 옮김
62
명령어 설계 시 주의사항
1. 명령어의 갯수를 가능하면 적게 한다.
2. 의미 있고 구별되는 이름
3. 약자는 일관성 있게 사용
4. 약자가 사용되더라도 명령어가 제대로 작동
5. 문법 구조는 일관성
6. 초보자를 위하여 문법규칙을 프롬프트로 안내
7. 명령어 메뉴는 중급 사용자에게 도움이 된다.
63
직접 조작(Direct Manipulation)
 간략화 된 작업환경을 보여주고 그 속의 객체를 직접





조작
아이콘으로 객체가 표현
편집기, 비디오 게임, 터치 스크린, 윈도우 시스템
마우스나 조이스틱을 사용
What you see is what you get(WYSIWYG)
설계 시 고려사항





아이콘은 이해하기 쉬워야
잘못된 유추는 피해야
사용자 계층의 관습에 따라 설계
아이콘은 알맞은 목적에 사용되어야
조화 및 일관성, 배치가 중요
64
화면 설계 시 주의 사항
1. 사용자의 특성을 염두에 둔다
2. 논리적으로 관련 있는 항목은 반전, 글자꼴, 색상으로
구별하기 쉽게 한다.
3. 정보를 조직적으로 표현하기 위하여 다양한 정렬 방
식 사용
4. 다중화면의 경우 화면사이의 일관성이 중요
65
시스템 설계서 작성
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. 참고사항
참고문헌
부록
66