Class 4: 설계.

Slides:



Advertisements
Similar presentations
프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
Advertisements

을지대학교 무선 네트워크 사용 방법 2010 년 06 월 01 일. 을지대학교 무선 네트워크 사용 방법 1. PC 무선랜 카드 활성화 및 체크 1 단계 : 시작 -> 설정 -> 네트워크 설정 2 단계 : 무선 네트워크 설정 선택 -> 마우스 버튼 오른쪽 클릭 -> 사용.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
소프트웨어 공학 Lecture #7: 상세 설계와 UI 설계 안 병 익 강의 블로그 Mobilecom.tistory.com.
컴퓨터와 인터넷.
설 계 4.1 소 개 4.2 설계의 원리 4.3 구조적 설계 4.4 소프트웨어 구조 4.5 프로그램 설계
설 계 (Design) - Software Engineering -.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
소프트웨어 공학 Lecture #5: 설계 원리와 아키텍처
소프트웨어 공학 (Software Engineering)
5장 Mysql 데이터베이스 한빛미디어(주).
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
FTP 프로그램 채계화 박재은 박수민.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
3. 데이타베이스 관리시스템.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
D / K / I / T / E / C / H / N / O / L / O / G / Y
6장. printf와 scanf 함수에 대한 고찰
구조적 설계 (Structured Design).
5장 Mysql 데이터베이스 한빛미디어(주).
11장. 1차원 배열.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바 5.0 프로그래밍.
프로그래밍 개요
인터넷응용프로그래밍 JavaScript(Intro).
27장. 모듈화 프로그래밍.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
마인드 맵.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
USN(Ubiquitous Sensor Network)
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
웹디자인
Chapter 03. 관계 데이터베이스 설계.
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
04. DBMS 개요 명지대학교 ICT 융합대학 김정호.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
웹사이트 분석과 설계 (화면 설계) 학번: 성명: 박준석.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
뇌를 자극하는 Solaris bible.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
멀티미디어시스템 제 4 장. 멀티미디어 데이터베이스 정보환경 IT응용시스템공학과 김 형 진 교수.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
TVM ver 최종보고서
발표자 : 이지연 Programming Systems Lab.
ITQ 정보기술자격 국가공인 Excel 2007 Ⅱ 함수- 12회차 강사 : 박영민.
.Net FrameWork for Web2.0 한석수
제 4 장 Record.
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
 6장. SQL 쿼리.
6 객체.
BoardGame 보드게임 따라가기.
프로그래밍 설계 0. 설계의 종류 1) Data Base 설계 2) 파일 설계 3) 입출력 화면 설계 4) 보고서 설계
Presentation transcript:

Class 4: 설계

학습 내용 소 개 설계의 원리 구조적 설계 기법 변환 분석 처리 분석 설계 평가 기준 자료구조 설계 알고리즘 설계 사용자 인터페이스 설계 시스템 설계서

설 계 사용자의 요구를 만족시키기 위하여 제약 조건이 반영된 구현 대안을 창출하는 일 소프트웨어의 시스템의 내부를 설계 구조설계: 모듈의 구조 및 자료 구조 상세설계: 알고리즘 설계, 사용자 인터페이스 분 석 설 계 구 현 사용자 요구사항 제약조건 구축 시스템 시스템의 본질정의 구현대안 설정 시스템 구축 분석모형 설계모형

구조 설계 DFD로부터 시스템의 구조도 작성 기능을 분해 모듈 구조 모듈 간의 관계를 정립(모듈 인터페이스) 자료설계(데이타베이스 설계) 결과 시스템 구조도(Structure Chart) 외부 화일 및 DB 설계도(레코드 레이아웃, ERD)

상세 설계 모듈 내부 설계 사용자 인터페이스 자료구조 설계 결과 프로그램 사양서 화면 및 출력물 레이아웃 모듈 안의 알고리즘 모듈 안의 지역 변수 사용자 인터페이스 메뉴 입력 폼 출력 레포트 자료구조 설계 구조형 및 배열 결과 프로그램 사양서 화면 및 출력물 레이아웃

설계 방법론 구조적 설계(structured design) 객체지향 설계(object-oriented design) 시스템을 기능적 관점에서 다룸 하향적 세분화 Yourdon/Coad 객체지향 설계(object-oriented design) 자료와 자료에 적용될 기능을 함께 추상화 객체: 자료+기능 시스템은 객체의 모임 Yourdon, Sheller/Meller, Rumbaugh, Booch... 자료구조 중심 설계 입출력자료의 구조 파악으로 소프트웨어 구조를 추출 Jackson, Warnier-Orr

설계 원리 모듈 분할의 기본 원칙 IPO 모형 설계 원리 변경에 의한 영향을 최소화 추상화의 원리 정보 은닉 단계적 분해 제 어 입력 프로세스 출력 입 력 프로세스 출력 설계 원리 추상화의 원리 정보 은닉 단계적 분해 모듈화

추상화의 원리 복잡한 문제 ⇒ 추상화 ⇒ 개념 소프트웨어의 구조를 이루는 계층의 파악 기능 추상화 자료 추상화 제어 추상화 복잡한 문제 ⇒ 추상화 ⇒ 개념 소프트웨어의 구조를 이루는 계층의 파악 기능 추상화 입력자료를 출력자료로 변환하는 과정을 추상화 부프로그램의 시그네처와 기능만 생각 자료 추상화 자료와 기능을 묶어서 생각 제어 추상화 외부 이벤트에 대한 반응을 추상화

정보은닉(information hiding) 각 모듈의 자세한 처리 내용이 은닉되어 시스템의 다른 부분에는 공개가 되지 않음 다른 부분에는 모듈의 기능과 인터페이스만을 공개 printf(…), int getchar(), … 각 모듈이 다른 모듈에 구애받지 않고 설계 인터페이스가 모듈 안의 구체적 사항을 최소로 반영 전역변수가 없어야 모듈 단위의 수정, 시험, 유지보수에 큰 장점 모듈 설계 평가에 기초

단계적 분해 기능을 큰 범위에서 작은 범위로 나누어 생각 점차적으로 구체화 상세한 내역(알고리즘, 자료구조)는 가능한 뒤로 미룸 추상화 I 추상화 II 추상화 III 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; . CAD system

모듈화 시스템을 여러 모듈로 분해하고 이를 하나의 시스템으로 구축하는 과정 한 모듈의 규모 이식성 1 4 1 2 3 2 1 5 4 4 5 6 3 6 2 3 5 6 문제영역 시스템 분해 시스템 구조 시스템을 여러 모듈로 분해하고 이를 하나의 시스템으로 구축하는 과정 한 모듈의 규모 이식성 모듈의 응집력(cohesion)이 높게 모듈 간의 결합력(coupling)은 약하게

구조적 설계 (cohesion, coupling) 데이타의 흐름 형식에 중점 시스템을 이루는 모듈들과 모듈들의 호출관계를 나타내는 구조를 파악하여 시스템을 설계하는 방법 모듈 분해의 계층적, 호출관계 지향적 접근 W. Stevens, G. Myers와 L. Constantine Functional Decomposition Design Criterion Design Heuristics + + (cohesion, coupling) 데이타의 흐름 형식에 중점 source-transform-sink: 변환 분석(transform analysis) transaction pattern: 처리 분석(transaction analysis)

구조적 설계(계속) 시스템 구조도(structure chart)의 도출 시스템을 모듈 단위로 분할 모듈의 계층적 구성 모듈 사이의 입출력 인터페이스 모듈의 이름과 기능 S1 S4 S5 S4 S1 S2 S3 S4 S5 S3 S1 S2 S5 Structure #1 Structure #2 Structure #3 S2 S3

시스템 구조도 표준 기호 한 모듈이 모듈을 호출 자료 흐름(변수나 자료구조) 제어 흐름(플래그) 모듈 반 복 선 택 주석달기 반 복 선 택 주석달기 comment Module

구조적 설계(계속) 예 기타 사용되는 기호 미리 정의된 모듈(라이브러리) 입출력 모듈 Main c a b A B C a f f W X Y Z 기타 사용되는 기호 미리 정의된 모듈(라이브러리) 입출력 모듈

변환 분석 자료의 변환 흐름(transformation flow) 입력 흐름 출력 흐름 변환 센터 변환 분석은 자료 흐름도를 입력흐름, 변환센터, 출력흐름으로 분할하는 과정 입력 흐름: 입력을 준비하는 단계(입력, 검증...) 출력 흐름: 출력을 위하여 준비되는 단계(포매팅, 출력) 변환 센터: 실제 자료가 변환

변환 분석 방법 ① 자료흐름도에서 입력 자료 흐름과 출력 자료 흐름을 파악 ② 중앙 변환 부분을 식별 ① 자료흐름도에서 입력 자료 흐름과 출력 자료 흐름을 파악 ② 중앙 변환 부분을 식별 ③ 변환 중심부를 축으로 최상위 구조(first-cut) 작성 ④ 각 모듈의 하위 구조도 같은 방법으로 분석 ⑤ 설계 기준을 적용하여 수정, 최적화 예: 화일 안에 포함된 단어의 개수를 계산 화일 이름 읽음 단어개수 출력 화일이름 화일 이름 검증 단어개수 편집 입력 흐름 단어개수 계산 검증된 화일이름 단어개수 출력 흐름 변환 센터

변환 분석(계속) 프로그램의 구조 시스템 구조도 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) 시스템 구조도 단어 계산 단어개수 검증된 화일이름 화일이름 상태 단어개수 화일이름 입력,검증 단어개수 계산 단어 개수 편집,출력

구독자 관리 시스템 ① 자료 흐름의 요소를 분해 입력 자료 흐름, 출력 자료 흐름, 변환 센터 출력 흐름 구독자 레코드 준비 만료일 추출 새 만료일 계산 구독자 레코드 변경 만료일 새 만료일 입력 흐름 변경 레코드 갱신기간 구독 갱신기간 입력 레코드를 화일에 출력 변환 센터

구독자 관리 시스템(계속) 구조도의 최상위층 작성 구조도를 상세화 구독 갱신 시스템 구독 갱신 시스템 갱신 정보 추출 구조도의 최상위층 작성 구조도를 상세화 구독 갱신 시스템 구독 갱신 시스템 갱신 정보 추출 갱신 레코드 저장 구독 갱신 갱신 정보 추출 갱신 레코드 저장 구독 갱신 새구독 기간 입력 구독 만료일 준비 구독자 레코드 변경 레코드 화일로 출력 구독 레코드 추출 구독 만료일 추출

처리 분석 처리(transaction) 방법 자료 흐름도의 한 프로세스에서 여러 개의 자료 흐름이 유출되는 것 처리흐름 T 처리 경로(action path) 처리센터 방법 ① 자료 흐름도에서 처리 센터를 식별 ② 처리 모듈을 중심으로 구조도 작성 ③ 구조도를 상세화 - 하위 구조도를 작성

설계 평가 기준 모듈의 크기 모듈 응집력(module cohesion) 모듈 결합도(module coupling) 소규모 시스템: 함수, 서브루틴 대규모 시스템: 독립 프로그램(하나의 수행 화일) 모듈 응집력(module cohesion) 모듈 안의 요소들이 강한 응집력을 갖도록 설계 모듈 결합도(module coupling) 다른 모듈과의 결합도가 약한 모듈이 되도록 설계 설계 요령(design heuristics)

모듈 응집력 모듈 안의 구성 요소들이 공동의 목적을 달성하기 위하여 관련되어 있는 정도 목 표 응집력의 단계 한 모듈이 단일 기능을 갖도록 설계 <예> finishup : 최종 보고서를 출력하고, 계산 결과를 디스크에 저장 응집력의 단계 ① 기능적(functional) 모듈의 기능이 한 문장으로 떨어짐 <예> 판매세금 계산 ② 순차적(sequential) 작업의 결과가 다른 작업에 입력 <예> 거래를 읽고 마스터 화일을 변경

모듈 응집력(계속) ③ 교환적(communicational) <예> 출력화일을 출력하고 저장 동일한 입력과 출력을 사용하는 작업의 모임 <예> 출력화일을 출력하고 저장 ④ 절차적(procedural) 같은 범주에 속하는 일들이 순서적으로 수행 <예> restart-RTN : 총계를 출력하고, 화면을 지우고 메뉴를 뿌리고, 메뉴 선택을 받음 ⑤ 시간적(temporal) 프로그램 초기화 ⑥ 논리적(logical) 유사한 성격의 작업을 한 모듈로 모음 ⑦ 우연적(coincidential) 아무 관련 없는 작업을 한 모듈에 모음

모듈 결합도 모듈 간의 관련 정도 설계 목표 결합의 단계 모듈 간의 결합도가 낮게 설계 ① 자료 결합(data coupling) 모듈들이 간단한 변수를 파라메터로 교환 ② 스탬프 결합(stamp coupling) 모듈 사이에 nonglobal 자료 구조를 교환 ③ 제어 결합(control coupling) 제어용 신호(flag)를 주고 받음 ④ 공통 결합도(common coupling) global variable을 사용 ⑤ 내용 결합(content coupling) 한 모듈이 다른 모듈 내의 값을 수정

설계 요령(design heuristics) first-cut(최상위) 모듈의 결합은 줄이고 응집은 높이도록 최대한 노력 high fan-out은 줄이도록 노력 ...... redundancy와 complexity를 줄이기 위하여 모듈의 인터페이스를 점검

설계 요령(계속) 양파 모양의 구조가 일반적 모듈의 영향권을 그 모듈의 하위에 둔다 복잡한 모듈의 연결은 피함 과다한 깊이를 가진 구조도 피함 모듈의 영향권을 그 모듈의 하위에 둔다 <잘못된 예> <잘된 예> 변경된 모듈 변경된 모듈 영향받는 모듈

자료구조 설계 외부 화일에 대한 설계 자료설계표 화일 이름: 인사기본화일(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

자료 추상화 기법 송장화일 = 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를 내보냄

알고리즘 설계 모듈 명세서 <예> 모듈의 세부처리 모듈의 세부처리 기능을 기술한 내역 시스템 구조도의 박스에 표현되지 않은 자세한 알고리즘을 기술 모듈의 내부 자료에 대한 설명을 포함 프로그램 구조도와 함께 시스템의 동작 상태를 예측할 수 있는 근거 제공 <예> Module 소수 확인(숫자, 결과) 내부자료: .... 처리기능: 숫자보다 작은 이미 구한 모든 소수로 나누어 나머지가 0이 아니면 결과는 소수이다. 숫자 결과 소수확인

알고리즘 설계(계속) 상세설계의 표현 모듈 명세화 기법 설계의 표현과 코딩이 용이 할 것 수행이 가능할 것 유지보수가 용이할 것 모듈 명세화 기법 흐름도(flow chart) N-S 도표(Nassi-Schneiderman Chart) 의사 코드(pseudo code) 의사 결정표(decision table) 의사 결정도(decision diagram) PDL(Program Design Language) 상태천이도(state transition diagram) 행위도(action diagram)

알고리즘의 선택 정확성 효율성 모듈이 정확하게 수행되지 않는 조건을 점검 예: 음수, 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

알고리즘의 선택(계속) 효율성 적합성 알고리즘이 주어진 문제를 정확히 기술하였는가? ------------------------------------------------------------------------------ 입력 갯수 복잡도(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

a. 순차 b. 선택(if-then-else) c. 선택(if-then) d. 다중선택(case) e. 반복(while) action A Decision T F action B action A action B c. 선택(if-then) d. 다중선택(case) T Decision Selector F Value 1 Value 2 Value 3 Value 4 Value 5 action A action A action B action C action D action E e. 반복(while) f. 반복(repeat-until) Condition action A action A Condition

N-S 도표의 표현 규칙 1. 도표는 항상 사각형 2. 도표의 제어흐음은 위에서 아래로 3. 수평으로 그어진 줄은 항상 평행 4. 빈 박스 - null statement 5. 모든 사각형은 다시 하나의 N-S도표

N-S 도표의 예 잡지구독 시스템의 구독 레코드처리에 대한 N-S 도표 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 Pull sibactiber’s record Pull sibactiber’s record Call Handle New Subscription Print error message Update expire date Calculate amount of refund Call update Account Call update Account

N-S 도표의 장단점 장점 단점 구조적 프로그램 배우기 쉽고, 읽기 쉬우며 원시 코드로 전환이 쉬움 프로그램의 구조를 쉽게 파악할 수 있다 프로그램의 복잡도, 제어구조를 한 눈에 볼 수 있다. 단점 도표를 그려야 하는 불편함 수정이 용이하지 않음

의사 코드(Pseudo code) 모듈의 입출력 자료, 내부 자료, 수행 절차 등을 알고리즘의 형태로 기술 실제 프로그램과 유사하나 특정 프로그래밍 언어에 독립적 전문적 용어의 사용은 가능하지만 프로그래머의 고유한 스타일이나 특성이 무시될 수 있슴 의사 코드를 쓰는 방식이 다를 수 있으므로 한 프로젝트 안에서 표준을 만들 필요가 있슴

구조적 영어와 의사코드의 비교 특성 구조적 언어 의사 코드 논리 구조 동일한 논리 구조 사용 - 순차 - 선택 - 반복 특성 구조적 언어 의사 코드 논리 구조 동일한 논리 구조 사용 - 순차 - 선택 - 반복 사용 단계 분 석 단 계 설 계 단 계 명세 대상 자료 흐름도 상의 설계 구조도 상의 최소 단위로 처리 모든 모듈 명세 방법 사용자 중심 프로그래머 중심 상세 정도 처리의 기본적인 모듈의 기본적인 기능 기능 수행 절차 수행 절차 및 세부적 방법

의사 코드의 사례 모듈명세서 고용자 레코드 = 급여형태 + 성명 + 주간근무시간 급여형태 = [1|2|3] 주급계산 고용자레코드 주급총액 고용자 레코드 = 급여형태 + 성명 + 주간근무시간 급여형태 = [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

의사 결정도 <예> 의사 결정표 근속년수 연봉 저축허용비율 직원저축정책 1년 미만 $20,000 미만 → 5% 근속년수 연봉 저축허용비율 직원저축정책 1년 미만 $20,000 미만 → 5% $20,000 이상 → 4% 1년 이상 $30,000 미만 → 6% $30,000 이상 → 5% 의사 결정표 근속연수 1년 미만 1년 이상 1년 미만 1년 이상 연봉(천$) <20 >=20 <30 >=30 허용비(%) 5 4 6 5

자료 구조 설계 자료구조의 구체적인 설계 자료구조의 원칙 정보은닉 자료 추상화 <예> 인사기록 마스터 int Sawon_no; char Name[10]; int Depart; int Position; ... 자료구조의 원칙 정보은닉 중요한 자료구조에 직접 접근하고 변경하는 것을 피함 자료 추상화 사용자 정의 타입을 사용

사용자 인터페이스 설계 사용자 분석 대화설계 원리 메뉴 선택 양식 채움(form-fill) 인터페이스 명령어 방식 직접 조작 화면 설계시 주의 사항

사용자 인터페이스 사용자 인터페이스의 중요성 사용자 인터페이스의 평가 기준 초기의 컴퓨터: 알고리즘이 중요 최근의 컴퓨터: 사용자의 입장이 중요 사용자 인터페이스의 평가 기준 1) 배우기 쉬움 2) 속도 3) 사용 중 오류의 빈도 4) 사용자의 만족 5) 사용법의 유지

사용자 분석 시스템의 최종 사용자에 대한 지식 나이, 인원 컴퓨터에 대한 기본 지식, 동기 사용자의 부류(초보자, 능숙하지 못한 사용자, 전문가) 다양한 사용자 부류

대화설계 원리 일관성이 유지되어야 한다 익숙한 사용자에게는 지름길을 사용자에게 유익한 정보는 feedback시킨다 용어, 문법, 화면설계 메뉴, 시스템 메시지, 설명서에 같은 의미와 용어 오류 메시지 익숙한 사용자에게는 지름길을 사용자에게 유익한 정보는 feedback시킨다 시스템의 반응 대화의 종결을 표시하도록 설계한다 지시의 종결을 표시 지시의 취소 단순한 오류를 처리하는 기능 undo 시스템에 지시한 것을 바꾸기 쉽도록 사용자 중심의 상호작용이 되도록 설계

메뉴 선택 초급이나 중급 사용자에게 적합 메뉴의 구조, 동작, 배치를 고려 메뉴 항목의 분류가 중요 메뉴의 종류 계층구조 선형구조 네트워크 구조 메뉴 항목의 분류가 중요 논리적으로 같은 항목은 같은 범주에 모든 경우를 포함하여 분류 중복된 항목은 피한다 익숙하지 않은 항목은 피한다 메뉴의 종류 단일화면 메뉴 풀 다운 메뉴 고정 메뉴

양식 채움(form-fill) 인터페이스 자료 입력에 많이 쓰임 자료 항목, 위치, 길이 어느 정도의 교육이 필요(중급, 고급 사용자에게 적합) 화면 설계 관련 항목을 모음 화면 이름 작성 화면의 배치(항목의 순서) 입력 자료 항목의 길이 정렬 선택적 항목 항목 간의 이동 오류의 정정

명령어 방식 정형적 언어(formal language) 운영체제, 텍스트 편집기, 모험 게임 등에 자구 사용 고급 사용자에 적합 어휘, 문법규칙, 명령어의 의미를 익혀야 함 융통성있게 창의적으로 시스템에 지시 <예> vi의 명령어 ^F 앞으로 한 화면 전진 ^B 뒤로 한 화면 후퇴 ^D 반 화면 내림 ^U 반 화면 올림 G 정해 준 줄로 커서를 옮김 /pattern pattern과 같은 다음 줄로 커서를 옮김 ?pattern pattern과 같은 바로 전 줄로 커서를 옮김

명령어 설계시 주의 사항 1. 명령어의 갯수를 가능하면 적게 한다. 2. 의미 있고 구별되는 이름 3. 약자는 일관성 있게 사용 4. 약자가 사용되더라도 명령어가 제대로 작동 5. 문법 구조는 일관성 6. 초보자를 위하여 문법규칙을 프롬프트로 안내 7. 명령어 메뉴는 중급 사용자에게 도움이 된다.

직접 조작 간략화된 작업환경을 보여주고 그 속의 객체를 직접 조작 아이콘으로 객체가 표현 간략화된 작업환경을 보여주고 그 속의 객체를 직접 조작 아이콘으로 객체가 표현 편집기, 비디오 게임, 터치 스크린, 윈도우 시스템 마우스나 조이스틱을 사용 What you see is what you get(WYSIWYG) 설계시 고려사항 아이콘은 이해하기 쉬워야 잘못된 유추는 피해야 사용자 계층의 관습에 따라 설계 아이콘은 알맞는 목적에 사용되어야 조화 및 일관성, 배치가 중요

화면 설계시 주의 사항 1. 사용자의 특성을 염두에 둔다 2. 논리적으로 관련 있는 항목은 반전, 글자꼴, 색상으로 구별하기 쉽게 한다. 3. 정보를 조직적으로 표현하기 위하여 다양한 정렬 방식 사용 4. 다중화면의 경우 화면사이의 일관성이 중요

시스템 설계서 작성 1. 개요 3.5 사용하는 화일 4. 화일 구조 또는 데이타베이스 설계 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. 참고사항 참고문헌 부록