제목을 입력하십시오

Download Report

Transcript 제목을 입력하십시오

소프트웨어 공학
Lecture #7: 상세 설계와 UI 설계
안병익
[email protected]
강의 블로그 Mobilecom.tistory.com
학습 목표

모듈 내부 설계

클래스 설계

사용자 인터페이스 설계

데이터 설계
2
아키텍처 설계와 모듈 설계


3
아키텍처 설계는 시스템 전체의 구조를 설계하는 개념적 모델링
모듈 설계는 구체적인 컴포넌트 내부 설계
7.1 모듈 내부 설계
 모듈




명세서
모듈의 세부처리 모듈의 세부처리 기능을 기술한 내역
시스템 구조도의 박스에 표현되지 않은 자세한 알고리즘을 기술
모듈의 내부 자료에 대한 설명을 포함
프로그램 구조도와 함께 시스템의 동작 상태를 예측할 수 있는 근거
제공
<예>
숫자
결과
소수확인
4
Module 소수 확인(숫자, 결과)
내부자료: ....
처리기능: 숫자보다 작은 이미 구한
모든 소수로 나누어 나머지가
0이 아니면 결과는 소수이다.
알고리즘 설계

상세설계의 표현




모듈 명세화 기법








5
설계의 표현과 코딩이 용이 할 것
수행이 가능할 것
유지보수가 용이할 것
흐름도(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
6
알고리즘의 선택

효율성
-----------------------------------------------------------------------------입력 갯수
복잡도(Order) 이 름
1
10
100
1,000
10,000
-----------------------------------------------------------------------------1
Constant
1
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
2
N
Quadratic
1 100
10,000
1,000,000
100,000,000
3
N
Cubic
1 1000 1,000,000
1,000,000,000
1012
2n
Exponential 2 1024 1.27x1030
1.07x10301
1.99x103010
------------------------------------------------------------------------------

적합성


7
알고리즘이 주어진 문제를 정확히 기술하였는가?
machine processible specification
NS-도표

논리 기술의 기본 형태인 순차, 선택, 반복의 표현을 박스로 표현
a. 순차
b. 선택(if-then-else)
action A
action B
Decision
action A
e. 반복(while)
Condition
d. 다중선택(case)
Selector
F
Value 1
Value 2
Value 3
Value 4
Value 5
action A
action B
action C
action D
action E
f. 반복(repeat-until)
action A
action A
Condition
8
F
action B
action A
c. 선택(if-then)
T
Decision
T
NS-도표의 표현 규칙

도표는 항상 사각형

도표의 제어흐름은 위에서 아래로

수평으로 그어진 줄은 항상 평행

빈 박스 - null statement

모든 사각형은 다시 하나의 N-S도표
9
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
Cancellation
Other
Pull sibactiber’s
Pull sibactiber’s
record
record
Call Handle
Print error
New SubscriptionUpdate expire Calculate amount message
of refund
date
Call update
Call update
Account
Account
10
NS-도표의 장단점

장점





단점


11
구조적 프로그램
배우기 쉽고, 읽기 쉬우며 원시 코드로 전환이 쉬움
프로그램의 구조를 쉽게 파악할 수 있다
프로그램의 복잡도, 제어구조를 한 눈에 볼 수 있다.
도표를 그려야 하는 불편함
수정이 용이하지 않음
의사 코드(Pseudo Code)

모듈의 입출력 자료, 내부 자료, 수행 절차 등을 알고리즘의 형태
로 기술

실제 프로그램과 유사하나 특정 프로그래밍 언어에 독립적

전문적 용어의 사용은 가능하지만 프로그래머의 고유한 스타일이
나 특성이 무시될 수 있음

의사 코드를 쓰는 방식이 다를 수 있으므로 한 프로젝트 안에서
표준을 만들 필요가 있음
12
의사 코드의 사례
고용자레코드
주급총액
주급계산
고용자 레코드 = 급여형태 + 성명 + 주간근무시간
급여형태 = [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
13
의사 결정표(Decision Table)
<예>
근속년수
직원저축정책 1년 미만
1년 이상
 의사
14
연봉
$20,000 미만
$20,000 이상
$30,000 미만
$30,000 이상
저축허용비율
→
5%
→
4%
→
6%
→
5%
결정표
근속연수
1년 미만
1년 이상
1년 미만
1년 이상
연봉(천$)
<20
>=20
<30
>=30
허용비(%)
5
4
6
5
7.3 사용자 인터페이스 설계

사용자 분석

대화설계 원리

메뉴 선택

양식 채움(form-fill) 인터페이스

명령어 방식

직접 조작

화면 설계 시 주의 사항
15
사용자 인터페이스

사용자 인터페이스의 중요성



초기의 컴퓨터: 알고리즘이 중요
최근의 컴퓨터: 사용자의 입장이 중요
사용자 인터페이스의 평가 기준
1)
2)
3)
4)
5)
16
배우기 쉬움
속도
사용 중 오류의 빈도
사용자의 만족
사용법의 유지
사용자 분석

시스템의 최종 사용자에 대한 지식




17
나이, 인원
컴퓨터에 대한 기본 지식, 동기
사용자의 부류(초보자, 능숙하지 못한 사용자, 전문가)
다양한 사용자 부류
대화설계 원리

일관성이 유지되어야 한다





익숙한 사용자에게는 지름길을
사용자에게 유익한 정보는 feedback시킨다




18
지시의 종결을 표시
지시의 취소
단순한 오류를 처리하는 기능


시스템의 반응
대화의 종결을 표시하도록 설계한다


용어, 문법, 화면설계
메뉴, 시스템 메시지, 설명서에 같은 의미와 용어
오류 메시지
undo
시스템에 지시한 것을 바꾸기 쉽도록
사용자 중심의 상호작용이 되도록 설계
메뉴 선택


초급이나 중급 사용자에게 적합
메뉴의 구조, 동작, 배치를 고려




메뉴 항목의 분류가 중요





논리적으로 같은 항목은 같은 범주에
모든 경우를 포함하여 분류
중복된 항목은 피한다
익숙하지 않은 항목은 피한다
메뉴의 종류



19
계층구조
선형구조
네트워크 구조
단일화면 메뉴
풀 다운 메뉴
고정 메뉴
양식 채움(Form-fill) 인터페이스




자료
자료
어느
화면








20
입력에 많이 쓰임
항목, 위치, 길이
정도의 교육이 필요(중급, 고급 사용자에게 적합)
설계
관련 항목을 모음
화면 이름 작성
화면의 배치(항목의 순서)
입력 자료 항목의 길이
정렬
선택적 항목
항목 간의 이동
오류의 정정
명령어 방식



정형적 언어(formal language)
운영체제, 텍스트 편집기, 모험 게임 등에 자구 사용
고급 사용자에 적합


어휘, 문법규칙, 명령어의 의미를 익혀야 함
융통성 있게 창의적으로 시스템에 지시
<예> vi의 명령어
^F
앞으로 한 화면 전진
^B
뒤로 한 화면 후퇴
^D
반 화면 내림
^U
반 화면 올림
G 정해 준 줄로 커서를 옮김
/pattern pattern과 같은 다음 줄로 커서를 옮김
?pattern pattern과 같은 바로 전 줄로 커서를 옮김
21
명령어 설계 시 주의사항
1. 명령어의 개수를 가능하면 적게 한다.
2. 의미 있고 구별되는 이름
3. 약자는 일관성 있게 사용
4. 약자가 사용되더라도 명령어가 제대로 작동
5. 문법 구조는 일관성
6. 초보자를 위하여 문법규칙을 프롬프트로 안내
7. 명령어 메뉴는 중급 사용자에게 도움이 된다.
22
직접 조작(Direct Manipulation)






간략화 된 작업환경을 보여주고 그 속의 객체를 직접 조작
아이콘으로 객체가 표현
편집기, 비디오 게임, 터치 스크린, 윈도우 시스템
마우스나 조이스틱을 사용
What you see is what you get(WYSIWYG)
설계 시 고려사항





23
아이콘은 이해하기 쉬워야
잘못된 유추는 피해야
사용자 계층의 관습에 따라 설계
아이콘은 알맞은 목적에 사용되어야
조화 및 일관성, 배치가 중요
화면 설계 시 주의 사항
1. 사용자의 특성을 염두에 둔다
2. 논리적으로 관련 있는 항목은 반전, 글자꼴, 색상으로 구별하기 쉽게
한다.
3. 정보를 조직적으로 표현하기 위하여 다양한 정렬 방식 사용
4. 다중화면의 경우 화면사이의 일관성이 중요
24
UI 컨트롤
25
7.4 데이터 설계

기본적인 저장은 파일 시스템이 제공


26
디렉토리와 파일
애플리케이션에서 데이터를 보는 뷰에 맞게 여러 가지 계층을 제공
데이터베이스 설계 단계
1.
ERD를 작성

2.
데이터 요소를 엔티티에 배정


3.
27
ERD 초벌 작성
MEMBER(MEMBER-NUMBER, NAME, ADDRESS, CITY, ZIP, HOMEPHONE, WORK-PHONE, CREDIT-CARD-CODE, CREDIT-CARDNUMBER, (VIDEO-ID, TITLE, DATE-RENTED, DATE-RETURNED))
VIDEO(VIDEO-ID, TITLE)
모든 테이블을 3차 정규형으로 만듦
데이터베이스 설계 단계

M:N의 관계를 1:N으로 바꿈



28
MEMBER(MEMBER-NUMBER, NAME, ADDRESS, CITY, ZIP, HOMEPHONE, WORK-PHONE, CREDIT-CARD-CODE, CREDIT-CARDNUMBER)
VIDEO(VIDEO-ID, TITLE)
RENTAL(MEMBER-NUMBER, VIDEO-ID, DATE-RENTED, DATERETURNED)
클래스와 테이블의 매핑

단순 데이터 구조를 가진 클래스는 테이블로 매핑

객체 식별자는 기본 키

다른 클래스의 인스턴스를 속성으로 가지고 있는 클래스는 그 클래스
를 위하여 별도의 테이블을 생성

컨테이너 클래스가 여러 객체를 포함하는 관계에 있을 때 2개의 필드
를 가진 별도의 테이블을 생성

M대 N의 관계는 별도의 테이블

1대 1 연관은 외부 키 속성으로 구현
29
클래스와 테이블의 매핑

30
클래스(왼쪽)와 테이블(오른쪽)의 매핑