58
상세 설계 상세 설계 상세 설계 상세 설계 서동수 컴퓨터정보학부 컴퓨터정보학부 컴퓨터정보학부 컴퓨터정보학부

상세설계 - cs.sungshin.ac.krcs.sungshin.ac.kr/~dseo/lectures/se/week9-moduleDesign.pdf · 모듈의생성 hello.c와main.c를개별코딩하여hello.exe를만드는 방법 >gcc

Embed Size (px)

Citation preview

상세 설계상세 설계상세 설계상세 설계

서서 동동 수수

컴퓨터정보학부컴퓨터정보학부컴퓨터정보학부컴퓨터정보학부

내 용내 용내 용내 용

모듈의 개념

알고리즘의 선택

N-S 도표

의사 코드

JSP

사용자 인터페이스 설계

상세 설계서 작성

소 개소 개소 개소 개

상세 설계 단계

모듈 안에서의 일

사용자 인터페이스

건축에서 설계 도면 같은 역할

누가 프로그램하더라도 같은 결과가 나오도록 기술누가 프로그램하더라도 같은 결과가 나오도록 기술

자료 설계, 알고리즘, 사용자 인터페이스 양식

상세 설계 결과모듈 명세서

각종 양식

모듈의 생성

hello.c와 main.c를 개별 코딩하여 hello.exe를 만드는방법

>gcc -c hello.c g>gcc -c main.c >gcc -o hello hello.o main.o

/h ll>./hello Hello! World

Makefile

배치 컴파일 작업을 지원해주는 도구

목표(target), 의존 관계(dependency), 명령(command)의 세 개로

이루어짐이루어짐

target : dependency

commandcommand…# gcc -o hello hello.c main.c

hello : hello.o main.o gcc -o hello hello.o main.o

h ll : h llMakefile의내용 hello.o : hello.c

gcc -c hello.c main o : main c

내용

main.o : main.c gcc -c main.c

복잡한 Makefile복잡한 Makefile

ROOT = /usr/local HEADERS = $(ROOT)/includeHEADERS = $(ROOT)/include SOURCES = $(ROOT)/src

% dbg o: % c

현재의 목표파일

최근에 갱신된 파일%_dbg.o: %.cgcc -c -g -o $@ ${CFLAG} $<

DEBUG OBJECTS = main dbg.o edit dbg.o

최근에 갱신된 파일

DEBUG_OBJECTS main_dbg.o edit_dbg.o

edimh_dbg: $(DEBUG_OBJECTS) gcc -o $@ $(DEBUG_OBJECTS) g @ ( _ )

target: cd obj ; \HOST_DIR= $(ROOT)/home/ ; \mv *.o $$HOST_DIR

IDE의 예

모듈명세모듈명세

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

수행이 가능할 것수행이 가능할 것

유지보수가 용이할 것

모듈 명세화 기법모듈 명세화 기법흐름도(flow chart)

N-S 도표(Nassi-Schneiderman Chart)

( )의사 코드(pseudo code)

의사 결정표(decision table)

JSP(Jackson System for Programming)( y g g)

상태천이도(state transition diagram)

모듈명세모듈명세

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

시스템 구조도의 박스에 대한 자세한 알고리즘을시스템 구조도의 박스에 대한 자세한 알고리즘을

기술

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

프로그램 구조도와 함께 시스템의 동작 상태를

예측할 수 있는 근거 제공

알고리즘의 품질척도알고리즘의 품질척도알고리즘의 품질척도알고리즘의 품질척도

3가지 요소: 정확성, 효율성, 적합성

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

예: 음수, 0, 경계값 입력

재사용재사용

효율성기억 공간 수행시간기억 공간, 수행시간

예: 1에서 N까지의 합, 선택정렬 vs. 퀵 정렬<방 법 1> <방 법 2>

SeriesSum = 0 SeriesSum = (1 0 + N)*N/2 0SeriesSum 0 SeriesSum (1.0 + N) N/2.0for Counter = 1 to N do write "The sum of the integers from 1 to N is", SeriesSum

SeriesSum = SeriesSum + Counterwrite "The sum of the integers from 1 to N is", SeriesSum

알고리즘의 선택(계속)알고리즘의 선택(계속)알고리즘의 선택(계속)알고리즘의 선택(계속)

효율성------------------------------------------------------------------------------

입력 갯수복잡도(Order) 이 름 1 10 100 1,000 10,000------------------------------------------------------------------------------1 Constant 1 1 1 1 1logN Logarithmic 1 4 7 10 14logN Logarithmic 1 4 7 10 14N Linear 1 10 100 1000 10,000NlogN NlogN 1 40 700 10,000 140,000N2 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 processable specificationmachine processable specification

순서도 작성 원칙

국제표준화 기구(ISO)에서 정한 기호를 사용한다.순서도의 흐름을 위쪽에서 아래쪽으로 하고, 흐름이 서로 교차하지 않도록 작성한다. 설명은 기호 안에 간단하게 삽입한다

알고리즘의 서술

일반 설명 순서도

① 다이얼을 돌린다.

일반 설명 순서도

② 통화 중인가 주의한다.

③ 통화 중이면 기다린다.

④ 전화가 통하면 B씨를 찾는다④ 전화가 통하면 B씨를 찾는다.

⑤ B씨가 응답하면 용건을 말한다.

⑥ B씨가 집에 없으면 전할 내용을

가족에게 말한다.

⑦ 전화기를 놓고 끝낸다.

순서도 표준 기호

순서도의 예

What is it for?

spaghettip g

Can you read?

Goto가 있는 코드있

순서도-구조적 코딩순서도-구조적 코딩순서도 구조적 코딩순서도 구조적 코딩

Proper Program단일입구, 단일 출구

모든 노드는 입구에서 도달할 수 있는 경로가 있어야모든 노드는 입구에서 도달할 수 있는 경로가 있어야

모든 노드는 출구까지 도달할 수 있는 경로가 있어야

구조적 프로그램세가지 제어구조(순차, 선택, 반복)로 무조건적 goto에 의한 복잡한제어흐름을 방지

제어구조가 하향식

stepwise refinement를 이용한 프로그래밍

Structure Theoremproper program은 구조적 프로그램으로 변환 가능proper program은 구조적 프로그램으로 변환 가능

최신 프로그래밍 언어구조적 언어 문형(if-then, if-then-else, case, while, for, repeat-until 등)

N S 도표N S 도표N-S 도표N-S 도표

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

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

action A

action B action A action B

DecisionT F

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

DecisionT F

action A Value 1 Value 2 Value 3 Value 4 Value 5

Selector

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

action Aaction A action B action C action D action E

a ue Value 3 a ue a ue 5

action A

action ACondition

action ACondition

N S 도표의 표현 규칙N S 도표의 표현 규칙N-S 도표의 표현 규칙N-S 도표의 표현 규칙

1. 도표는 항상 사각형

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

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

4. 빈 박스 - null statement

5. 모든 사각형은 다시 하나의 N-S도표

N S 도표의 예N S 도표의 예N-S 도표의 예N-S 도표의 예

잡지구독 시스템의 구독 레코드처리에 대한 N-S 도표

While there are records in the correspondence file

Read next correspondence

Check general format

TT Errors F

Write error message

Transaction type

New subscription Renewal Cancellation Other

Pull customer’s Pull customer’sCall HandleNew Subscription

Pull customer srecord

Pull customer srecord

Update expiredate

Calculate amountof refund

C ll d t Call update

Print errormessage

Call updateAccount

Call updateAccount

N S 도표의 장단점N S 도표의 장단점N-S 도표의 장단점N-S 도표의 장단점

장점구조적 프로그램

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

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

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

단점도표를 그려야 하는 불편함

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

의사 코드(Pseudo code)의사 코드(Pseudo code)의사 코드(Pseudo code)의사 코드(Pseudo code)

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

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

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

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

구조적 영어와 의사코드의 비교구조적 영어와 의사코드의 비교구조적 영어와 의사코드의 비교구조적 영어와 의사코드의 비교

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

논리 구조 동일한 논리 구조 사용

- 순차

- 선택

- 반복

사용 단계 분 석 단 계 설 계 단 계사용 계 석 계 설 계 계

명세 대상 자료 흐름도 상의 설계 구조도 상의

최소 단위로 처리 모든 모듈

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

상세 정도 처리의 기본적인 모듈의 기본적인 기능

기능 수행 절차 수행 절차 및 세부적 방법

의사 코드의 사례의사 코드의 사례의사 코드의 사례의사 코드의 사례

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

급여형태주급계산 급여형태 = [1|2|3]

모듈명세서모듈명세서Module 주급계산(고용자 레코드; 주급총액)

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

End AssumeDefine

Rate: Real /* 시간 당 급료 */EndefineIf (급여형태=1) Then Rate=4.2( )Elseif (급여 형태=2) Then Rate=6.0Else Rate=9.0EndifSelect Using (주간근무시간) From

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

Case (51-99): 주급총액=(주간근무시간*Rate)*1.0Endselect

End Module

모듈명세서

JSP

Jackson System of Programming입출력 자료구조로부터 시스템 세부절차를 유도

자료중심의 설계방법

인사, 판매,물류 분야 등 자료 위주의 시스템 설계에효과적

원칙적으로 프로그램 설계 방법임

JSP 단계

1. 입출력 자료구조를 나타내는 구조 다이어그램 작성

2 프로그램 구조 다이어그램으로 합성2. 프로그램 구조 다이어그램으로 합성

3. 기본 명령어 파악 후 다이어그램에 배치

4. 프로그램구조를 텍스트로 변환

5. 반복, 선택구조 조건을 추가

l) 출력에 관련된 명령들

(1) 성적보고서 화일을 출력화일로 개방

(2) 성적보고서 화일의 폐쇄(2) 성적보고서 화일의 폐쇄

(3) 성적보고서의 제목 출력

(4) 성적보고서의 반명 출력(4) 성적보고서의 반명 출력

(5) 성적보고서의 명세(합격자) 출력

(6) 성적보고서의 명세(불합격자) 출력적 서의 세 합 자 력

(7) 성적보고서의 반평균 출력

(8) 성적보고서의 총평균 출력

(9) 모든 합계변수 초기화

(l0) 반별 합계 초기화

자료 설계

자료를 표현하는 양식 결정

파일 s 데이타베이스파일 vs 데이타베이스

DB: 관계형, 계층형, 네트워크형, 객체지향형

테이블의 정의 vs 추상자료형(ADT)정의

자료설계-테이블

자료설계:ERER다이어그램

자료설계:추상자료형

자료 구조 설계자료 구조 설계자료 구조 설계자료 구조 설계

자료구조의 구체적인 설계<예> 인사기록 마스터

int Sawon no;int Sawon_no;char Name[10];int Depart;int Position;...

자료구조의 원칙정보은닉정보은닉

중요한 자료구조에 직접 접근하고 변경하는 것을 피함

자료 추상화

사용자 정의 타입을 사용

사용자 인터페이스 설계사용자 인터페이스 설계사용자 인터페이스 설계사용자 인터페이스 설계

사용자분석

대화설계원리

사용자인터페이스종류메뉴선택

양식채움(f fill) 인터페이스양식채움(form-fill) 인터페이스

명령어방식

직접조작

화면설계시주의사항

사용자 인터페이스사용자 인터페이스사용자 인터페이스사용자 인터페이스

사용자 인터페이스의 중요성초기의 컴퓨터: 과학계산, 군사목적 ⇒ 알고리즘이 중요

최근의 컴퓨터: 컴퓨터가 일반보급 ⇒ 사용자의 입장이 중요최근의 컴퓨터: 컴퓨터가 일반보급 ⇒ 사용자의 입장이 중요

사용자 인터페이스의 평가 기준1) 배우기 쉬움1) 배우기 쉬움

2) 속도

3) 사용 중 오류의 빈도

4) 사용자의 만족4) 사용자의 만족

5) 사용법의 유지

사용자 분석사용자 분석사용자 분석사용자 분석

시스템의 최종 사용자에 대한 지식나이, 인원

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

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

대화설계 원리대화설계 원리대화설계 원리대화설계 원리

일관성이 유지되어야 한다용어, 문법, 화면설계메뉴, 시스템 메시지, 설명서에 같은 의미와 용어오류 메시지

익숙한 사용자에게는 지름길을사용자에게 유익한 정보는 feedback시킨다사용자에게 유익한 정보는 feedback시킨다

시스템의 반응

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

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

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

메뉴 선택메뉴 선택메뉴 선택메뉴 선택

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

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

선형구조

네트워크 구조

메뉴 항목의 분류가 중요논리적으로 같은 항목은 같은 범주에

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

중복된 항목은 피한다

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

메뉴의 종류메뉴의 종류단일화면 메뉴: 모든 메뉴를 화면에 표시 후 선택시 없어짐

풀 다운 메뉴, 팝업 메뉴

고정 메뉴: 항상 표시되어 있는 메뉴

양식 채움(form fill) 인터페이스양식 채움(form fill) 인터페이스양식 채움(form-fill) 인터페이스양식 채움(form-fill) 인터페이스

자료 입력에 많이 쓰임

자료 항목, 위치, 길이

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

관련 항목을 모음

화면 이름 작성

화면의 배치(항목의 순서)화면의 배치(항목의 순서)입력 자료 항목의 길이

정렬

선택적 항목선택적 항목

항목 간의 이동

오류의 정정

명령어 방식명령어 방식명령어 방식명령어 방식

정형적 언어(formal language)운영체제, 텍스트 편집기, 모험 게임 등에 자구 사용

고급 사용자에 적합어휘, 문법규칙, 명령어의 의미를 익혀야 함

융통성있게 시스템에 지시융통성있게 시스템에 지시<예> vi의 명령어

^F 앞으로 한 화면 전진F 앞 한 화면 전진

^B 뒤로 한 화면 후퇴

^D 반 화면 내림

^U 반 화면 올림U 반 화면 올림

G 정해 준 줄로 커서를 옮김

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

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

명령어 설계 시 주의 사항명령어 설계 시 주의 사항명령어 설계 시 주의 사항명령어 설계 시 주의 사항

1. 명령어의 개수를 가능하면 적게 한다. 2. 의미 있고 구별되는 이름

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

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

5. 문법 구조는 일관성

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

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

직접 조작직접 조작직접 조작직접 조작

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

아이콘으로 객체가 표현

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

마우스나 조이스틱을 사용

What you see is what you get(WYSIWYG)설계시 고려사항

아이콘은 이해하기 쉬워야

잘못된 유추는 피해야

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

아이콘은 적합한 목적에 사용되어야

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

화면 설계시 주의 사항화면 설계시 주의 사항화면 설계시 주의 사항화면 설계시 주의 사항

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

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

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

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

GUI 설계시 유의사항

사용자가 하고자 하는 바를 이해한다-사용자 중심GUI언제든지 취소할 수 있는 기능을 제공

조작은 한 가지 이상의 방법 제공

우선 순위 정보는 화면 좌측 상단에 위치시킴

사용하는 색깔 수를 제한함

요란한 폰트의 사용을 자제함

메뉴, 화면에 대해 폰트, 색상 변경기능 제공

색깔을 사용한 의미 표시는 피함- 색맹 사용자

디폴트 버튼은 첫째 버튼으로

GUI의 예

상세설계서작성상세설계서작성상세설계서작성상세설계서작성

개 요1. 개 요1.1 시스템의 개요1.2 시스템의 구조

2. 모듈별상세설계2.1 논리적 절차2.2 자료구조와의 관계

3. 자료설계3.1 자료구조(혹은 데이터베이스 설계)3 2 모든 자료에 대한 구체적인 자료사전3.2 모든 자료에 대한 구체적인 자료사전

4. 문제해결을위한프로그래밍기법5. 시험계획

5.1 시험 환경 및 기법5.2 모듈 시험 계획

참고문헌