Presentation is loading. Please wait.

Presentation is loading. Please wait.

설 계 (Design) - Software Engineering -.

Similar presentations


Presentation on theme: "설 계 (Design) - Software Engineering -."— Presentation transcript:

1 설 계 (Design) - Software Engineering -

2 강의 개요 소 개 설계의 원리 구조적 설계 기법 설계 평가 기준 자료구조 설계 알고리즘 설계 사용자 인터페이스 설계 설계서
COE 306 소프트웨어공학 강의 개요 소 개 설계의 원리 구조적 설계 기법 변환 분석 처리 분석 설계 평가 기준 자료구조 설계 알고리즘 설계 사용자 인터페이스 설계 설계서 (c) Eun Man Choi, 2001

3 요구 분석에서 설계로 요구 분석 작업을 통하여 무엇을 개발할 것인가를 결정한 후에는 도메인 영역의 문제에 집중하여 모델링한다.

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

5 설계 대규모 소프트웨어를 설계하기 위한 작업은 다음과 같이 분류한다. 소프트웨어 구조 설계 인터페이스 설계 자료 저장소 설계
모듈 설계 사용자 인터페이스 설계

6 구조 설계란? 아키텍처 설계의 정의 모듈(Module)
소프트웨어 아키텍처란 주요 모듈사이의 인터페이스와 인터랙션을 포함한 시스템 구조의 설계 유형을 말한다. 아키텍처 설계는 개발 중인 시스템에 대한 아키텍처를 정하는 의사 결정 과정이다. 모듈(Module) 모듈이란 프로그래밍 언어의 문법 구조에서 정의된 컴포넌트를 말한다. 예) 메소드, 클래스, 패키지는 Java프로그램의 모듈이다. 예) C프로그래밍 언어에서의 모듈의 파일과 함수이다.

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

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

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

10 설계 원칙 모듈 분할의 기본 원칙 변경에 의한 영향을 최소화 IPO 모형 제 어 입력 프로세스 출력 입 력 프로세스 출력

11 설계 원리(1) 시스템을 개발하는 조건이나 운용될 환경 조건의 제약 안에서 가능한 여러 설계 중에서 최적의 설계 안을 발견 하는 것 설계를 평가하기 위한 특성과 기준을 명시하여야 한다. (정량적) 효율성(Efficiency) 시스템이 사용하는 자원이 적정하고 효과적임을 의미한다. 단순성(Simplicity) 이해하기 쉬운 설계를 작성하는 것 소프트웨어 설계의 중심이 되는 원리 추상화(Abstraction) 정보은닉(Information hiding) 단계적 분해(Stepwise refinement) 모듈화(Modularization)

12 설계 원리(2)

13 추상화(Abstraction)의 원리 정의 복잡한 문제(현실) ⇒ 추상화 ⇒ 개념 소프트웨어의 구조를 이루는 계층의 파악
필요한 부분만을 표현할 수 있고 불필요한 부분을 제거하여 간결하고 쉽게 만드는 작업. 복잡한 문제(현실) ⇒ 추상화 ⇒ 개념 소프트웨어의 구조를 이루는 계층의 파악 기능 추상화 입력자료를 출력자료로 변환하는 과정을 추상화 부프로그램의 시그네처와 기능만 생각 자료 추상화 자료와 기능을 묶어서 생각 제어 추상화 외부 이벤트에 대한 반응을 추상화

14 정보 은닉(Information Hiding)
각 모듈의 자세한 처리 내용이 시스템의 다른 부분으로부터 감추어져 있어야 각 모듈이 다른 모듈에 구애 받지 않고 설계 인터페이스가 모듈 안의 구체적 사항을 최소로 반영 전역변수가 없어야 모듈 단위의 수정, 시험, 유지보수에 큰 장점 모듈 설계 평가에 기초

15 단계적 분해(Stepwise Refinement)
1) 문제를 기본 단위로 나눈다. 2) 독립된 문제로 구별한다. 3) 구분된 문제의 자세한 내용은 가능한 한 뒤로 미룬다. 4) 구체화 작업이 계속 점증적으로 일어난다는 것을 보인다. 추상화 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

16 모듈화(Modularization) 시스템의 분해를 어떻게 할 것인가? 한 모듈의 규모 이식성
1 4 1 2 3 2 1 5 4 4 5 6 3 6 2 3 5 6 문제영역 시스템 분해 시스템 구조 시스템의 분해를 어떻게 할 것인가? 한 모듈의 규모 이식성 모듈의 응집력(cohesion)이 높게 모듈 간의 결합력(coupling)은 약하게

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

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

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

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

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

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

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

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

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

26 마스터 파일의 변경 DFD

27 마스터 파일 변경 시스템 구조도

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

29 사례: 현금자동지급기

30 사례: 현금자동지급기 설계

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

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

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

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

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

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

37 자료구조 설계 외부 화일에 대한 설계 자료설계표 화일 이름: 인사기본화일(INSA_BASIC.DAT)
화일 종류: 인덱스된 순차 화일 인덱스: primary -> employee_no secondary->name 자료 이름 자료형 자릿수 비 고 employee_no 정수형 name 문자형 sex 문자형 jumin_no 정수형 department 문자형 position 문자형 pay_grade 정수형 phone_office 문자형 phone_home 문자형 address 문자형

38 자료추상화(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를 내보냄

39 사례: 비디오 대여점(Level 0 변환분석)

40 사례: 비디오 대여점(Level 1 변환분석)

41 사례: 비디오 대여점(시스템 구조도)

42 소프트웨어 아키텍처 건축 설계 스타일이라는 개념을 소프트웨어 구조에도 적용
설계와 시공에 대한 가이드가 될 큰 밑그림 일관적인 모양과 조화를 위한 스타일을 정하는 작업 스타일이라는 개념을 소프트웨어 구조에도 적용 일단 시스템이 개발된 뒤에는 잘못된 구조를 바로잡기가 쉽지 않음 소프트웨어 구조는 시스템 분할, 전체 제어 흐름, 오류 처리 방침, 서브시스템 간의 통신 프로토콜을 포함

43 저장소 구조 서브시스템들이 단일 중앙 저장소의 자료를 접근하고 변경
서브시스템들은 독립적이고 중앙 자료 저장소를 이용하여 상호 대화 사례 급여 시스템 은행 시스템과 같은 데이터베이스 관리 시스템

44 MVC 구조 MVC 모델 서브시스템: 도메인의 지식을 저장보관 뷰 서브시스템: 사용자에게 보여줌
제어 서브시스템: 사용자와의 상호 작용을 관리 분리하는 이유 사용자 인터페이스, 즉 뷰와 제어가 도메인 지식을 나타내는 모델보다는 더 자주 변경될 수 있기 때문

45 클라이언트 서버 구조 서버와 여러 개의 클라이언트로 구성
서버: 트랜잭션을 수행하고 데이터의 일관성을 보장한다 클라이언트: 사용자로부터 입력을 받아 범위를 체크하고 데이터베이스 트랜잭션을 구동하여 필요한 모든 데이터를 수집 요청과 결과를 받기 위하여 동기화 되는 일을 제외하고는 모두 독립적이다.

46 이벤트 중심 스타일 이벤트 중심 시스템 아키텍처는 상태 기반 컨트롤러와 제어 대상이 되는 여러 컴포넌트로 구성된다.
이벤트 중심 아키텍처

47 계층 구조 각 서브 시스템이 하나의 계층이 되어 하위층이 제공하는 서비스를 상위층의 서브시스템이 사용
추상화의 성질을 잘 이용한 구조 대표적인 예: OSI 구조 장점 각 층을 필요에 따라 쉽게 변경할 수 있음 단점 성능 저하를 가져올 수 있음

48 미들웨어 아키텍처 소프트웨어 컴포넌트를 연결하기 위한 준비된 인프라 구조 제공 다양한 애플리케이션에 적용
일반적이며 환경에 따라 바꿀 수 있는 융통성을 가짐 미들웨어는 애플리케이션의 여러 컴포넌트들을 연결하는 증명된 방법을 제공한다. 미들웨어는 여러 컴포넌트를 1대1, 1대 다, 다대 다 등 여러가지 연결 형태로 연결하는데 유용하게 사용된다. 사용자는 애플리케이션과 상호작용한다. 미들웨어 역할을 알아야 하는 유일한 경우는 고장이다.

49 애플리케이션 서버 N-tier 아키텍처의 중간층에 위치하면서 분산 통산, 보안, 트랜잭션, 영속성을 제공하는 컴포넌트 기반의 서버 기술 인터넷 기반의 애플리케이션을 구축하는 데 널리 이용 웹 매플리케이션을 위한 N-tier 아키텍처

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

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

52 알고리즘의 선택 정확성 효율성 모듈이 정확하게 수행되지 않는 조건을 점검 예: 음수, 0, 경계값 입력 재사용 기억 공간
처리 소요 시간 예: 1에서 N까지의 합 <방 법 1> <방 법 2> SeriesSum = 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

53 알고리즘의 선택 효율성 적합성 알고리즘이 주어진 문제를 정확히 기술하였는가?
입력 갯수 복잡도(Order) 이 름 , ,000 Constant logN Logarithmic N Linear ,000 NlogN NlogN , ,000 N Quadratic , ,000, ,000,000 N Cubic ,000, ,000,000, 2n Exponential x x x103010 적합성 알고리즘이 주어진 문제를 정확히 기술하였는가? machine processible specification

54 NS-도표 논리 기술의 기본 형태인 순차, 선택, 반복의 표현을 박스로 표현 a. 순차 b. 선택(if-then-else)
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 4 Value 5 action A Value 3 action A action B action C action D action E e. 반복(while) f. 반복(repeat-until) Condition action A action A Condition

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

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

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

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

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

60 의사 코드의 사례 모듈명세서 고용자 레코드 = 급여형태 + 성명 + 주간근무시간 급여형태 = [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

61 의사 결정표(Decision Table)
<예> 근속년수 연봉 저축허용비율 직원저축정책 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

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

63 데이터 설계 엔티티 관계 다이어그램(Entity-Relationship Diagram) ER 다이어그램
관계형 데이터베이스를 위한 주요 모델링 도구 관계를 나타내는 방법 테이블 이름을 함수 이름 속성들을 매개변수 기본 키는 밑줄 ER 다이어그램 테이블보다는 엔티티를 강조 관계형 데이터베이스 모델링에 가장 널리 사용되는 도구 표준화 된 표현 없음

64 데이터베이스 설계 예시 비디오 대여 시스템 ERD를 작성 데이터 요소들을 엔티티에 배정
시스템의 엔티티를 파악하기 위하여 클래스 다이어그램을 리뷰 1:1, 1:M, M:N 관계를 결정 데이터 요소들을 엔티티에 배정 데이터 사전에 있는 모든 자료 요소가 엔티티와 관련되어있는지 검토

65 데이터베이스 설계 예시 모든 테이블에 대하여 3차 정규형으로 만든다 자료 사전의 모든 요소를 검토
기본 키, 보조 키, 외부 키를 파악 자료 사전의 모든 요소를 검토 자료 사전에 있는 모든 데이터 엔티티들이 완전하고 바르게 문서화 되었는지 확인 최종 ERD와 정규화 된 테이블을 생성한 후에는 데이터베이스로 변환

66 객체와 테이블 관계형 데이터베이스를 객체지향 프로그램에서 사용하는 경우
관계형 데이터베이스 자체를 설계 애플리케이션에서 DBMS와 어떻게 통신하는지 설정 매핑 되는 과정에 테이블 개념 및 정규화 규칙은 클래스와 관계에도 적용 객체 안의 속성은 테이블 내부의 열(column)에 해당되는 테이블 속성으로 매핑 속성 : 객체지향과 관계형 데이터베이스에서 공유하는 단어

67 객체와 테이블 데이터베이스의 테이블은 항상 기본키를 가져야 함 기본키가 될 수 있는 속성 null이 될 수 없는 값
자주 변경되지 않아야 함

68 객체와 테이블 객체에서 반복되는 속성은 별도의 테이블로 구성 연관을 갖는 두 클래스는 기본키와 외부키로 매핑
연관 : 두 객체 사이에 양방향 링크를 정의한 것 집합 관계는 관계형 데이터베이스에서 매핑할 수가 없다 집합관계는 연관으로 바꿔야 함 집합 개념의 클래스를 위한 테이블이 기본키를 제공 부분 개념의 클래스를 위한 테이블은 외부키로 구현

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

70 화면설계 화면 설계를 위한 원리 UI 컨트롤 화면을 설계하는 동안 사용자의 특성을 기억한다
COE 306 소프트웨어공학 화면설계 화면 설계를 위한 원리 화면을 설계하는 동안 사용자의 특성을 기억한다 논리적으로 관련 있는 항목들은 빈 줄 등으로 구별하기 쉽게 한다 정보를 조직적으로 표현하기 위하여 다양한 정렬 방식을 사용한다 다중 화면의 경우 화면 사이의 일관성이 중요하다 여러 가지 다른 배치로 시험한다 UI 컨트롤 메뉴 양식 채움(form-fill) 인터페이스 명령어 방식 (c) Eun Man Choi, 2001

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

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

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

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

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

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

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

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

79 시스템 설계서 작성 1. 개요 3.5 사용하는 화일 1.1 시스템의 목표 1.2 하드웨어, 소프트웨어
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. 참고사항 참고문헌 부록


Download ppt "설 계 (Design) - Software Engineering -."

Similar presentations


Ads by Google