Design - 소공녀의 전공강의노트♡
Download
Report
Transcript Design - 소공녀의 전공강의노트♡
Software Design
소프트웨어 설계(1)
설계 단계
Functional
model
Behavioral
model
Informational
model
Design
Procedural
design
Other
requirements
Data
design
Interface design
Architectural
design
Code
Program
modules
Test
Integrated
and validated
software
소프트웨어 설계(2)
설계 과정
요구분석명세서에 기술된 명세를 해결 방안
으로 변환시키는 과정
명세 (Specification)
소프트웨어 시스템을 problem domain 관점에서
기술
설계 (Design)
software domain 관점에서 기술
주어진 문제에 대하여 제안된 해결방안(solution)
분석과 설계의 차이 --> 주택 건설의 예
설계작업의 구분(1)
프로젝트 관리 관점에서의 구분
예비 설계(preliminary design)
요구사항들을 자료와 소프트웨어 구조로 변환
상세 설계(detail design)
세부적인 자료구조와 알고리즘 도출
기술적 측면에서의 구분
소프트웨어 구조 설계(architectural design)
자료 설계
절차 설계(procedural design)
인터페이스 설계
인간-기계간의 상호작용 설계
설계작업의 구분(2)
설계대상이 무엇인가에 따른 구분
외적 설계 (External Design)
소프트웨어 제품의 외적 특성을 고안/계획/기술
요구사항을 세분화하여 시스템에 대한 고수준의 구조적
관점 구축
내적 설계 (Internal Design)
소프트웨어 제품의 내부 구조와 구성 모듈에 대하여 기술
외적 설계 (External Design)
user displays, report formats, external data
sources/sinks
functional characteristics, high-level process
structure
성능 요구 사항
설계작업의 구분(3)
내적 설계 (Internal Design)
구조 설계 (Architectural Design)
building blocks과 그들 사이의 관계를 파악
Hierarchy of system views
시스템의 기능, 자료 흐름, 자료 저장소 사이의 관
계 정립
상세 설계 (Detailed Design)
기능을 구현하기 위한 알고리즘 기술
자료 저장소를 구현하기 위한 자료 구조 확립
기능과 자료 구조 간의 사실상의 상호 연결 관계
구축
설계 원리(Principles of Design)
설계 원리
추상화(abstraction)
자세한 사항보다는 근본적인 본질에 집중
정보은닉(information hiding)
모듈의 상세한 처리 내용은 시스템의 다른 부분으로부터
감추어져야 함
단계적 분해(stepwise refinement)
문제를 상위 개념부터 하위의 구체적인 단계로 분할 및
세분화
모듈화(modularization)
소프트웨어를 구성하는 기본 단위는 모듈
추상화(1)
추상화란?
자세한 사항은 접어두고, 근본적인 본질에 집중
전체적이고 포괄적인 개념 --> 구체적인 개념
기능 추상화, 자료 추상화, 제어 추상화
기능 추상화(Functional abstraction)
입력 자료를 출력 자료로 변환하는 과정을 추상화
Examples
Abstraction by Parameterization : subroutine
Abstraction by Specification : built-in functions
추상화(2)
자료 추상화(Data abstraction)
자료의 표현 및 자료 구조의 구현에 독립적
자료의 자세한 부분에 대한 지식 없이도 사용 가능
Examples
Built-in Types: Freedom of storage representations
User-defined Types: Allow mapping of concepts
from the problem domain into the implementation
language
Data Encapsulation: Packaging of a data structure
and its access routines in a single module
Abstract Data Types: Declaration of a data type
(template) from which numerous instances of
encapsulated data objects can be created
정보 은닉
정보 은닉이란?
모듈 안에 포함된 정보는 이를 필요로 하지 않는
다른 모듈이 접근할 수 없도록 설계되어야 함
모듈화의 기준으로 사용되는 개념
장점
모듈 구현의 독립성
모듈 구현의 병렬성
모듈의 이해도 증진
변경의 국부화, 변경으로 인한 영향의 최소화
단계적 세분화
단계적 세분화 기법(N. Wirth)
상호 독립적인 설계 요소를 격리
점진적으로 세분화
세분화 요소의 표현(representation details)과
관련된 의사 결정은 가능한 한 연기
세분화 과정에서 각각의 연속적인 단계들은
이전 단계로부터 자연스럽게 확장시킴
기법의 적용
모듈에 대한 상세 설계시 사용
사례 : “Airline Reservations Program”
모듈화(1)
module이란?
수행 가능한 문장들의 집합으로 이름이 있는 서브루틴
잘 정의된 단일의 목적을 가짐
다른 모듈을 호출하거나 호출될 수 있음
컴파일하거나 라이브러리에 저장되는 단위
모듈 형태
sequential module
incremental module
수행 중에 인터럽트가 가능한 모듈
Examples: coroutine, interrupt driven system
parallel module
다중 프로세서 환경에서 다른 모듈과 동시에 실행될 수 있는 모듈
Examples: Modula의 Module, Ada의 Package
모듈화(2)
좋은 모듈이 되기 위한 조건
modular decomposability: top-down design
조합 용이성: reusable
understandability: ease of maintenance
continuity: 변경으로 인한 소프트웨어 구조에의 영향
을 최소화
protection: error의 영향 및 side effect 최소화
모듈의 기능적 독립성에 대한 품질 평가 기준
응집도: 모듈 내부의 기능적 응집력의 정도
결합도: 모듈 상호간에 의존하는 정도
모듈의 응집도 (Cohesion) (1)
Levels of Cohesion
coincidental
No meaningful relationships among elements (multiple, unrelated
functions)
Closely related to their subordinate and superordinate modules (large
interface)
e.g. Compute the cosign of an angle and the inverse of a matrix.
logical
Performs a set of related functions with a single interface.
Parameters have different interpretations depending on which function
is invoked. Some parameters are ignored in some cases.
e.g. Add or delete an entry and list all the entries on the membership
directory.
classical
Performs multiple sequential functions. Weak but nonzero relationship.
No parameter or logic to determine which elements to execute
e.g. INIT. declare i, j, x, y; declare table1(20), table2(20); read
trans-file-1; read trans-file-2;
모듈의 응집도 (Cohesion) (2)
procedural
Multiple functions where the sequential relationship among the
functions is implied by the problem statement.
e.g. Extract the outline of an object and determine its shape.
communicational
Procedural and all the elements communicate with one another
through a common data structure.
e.g. Compute the largest angle of a triangle and the sum of the
length of each side.
functional
The outside (function) is easier to understand than its inside (logic).
e.g. Find customer loan balance.
informational => Information Hiding
Multiple functions dealing with a single data structure.
Physical packaging together of modules having functional strength
e.g. STACK, QUEUE
모듈의 응집도 (Cohesion) (3)
Module Strength의 판별
IF 단일 기능 THEN functional
ELSE
IF Data에 의한 결합 informational or communicational
ELSE IF Control에 의한 결합 procedural or classical
ELSE logical or coincidental
Exercises
Print and punch the output file
Update, add, or delete a record on the master file.
Format screen for part display and read part record from
database
Read the next transaction, edit it, and display it to the tape
operator.
Read or write an inventory record (two entry points).
모듈의 결합도 (Coupling) (1)
결합도에 영향을 주는 요소
모듈 간의 연결 형태: transfer/return, multiple entry
인터페이스의 복잡도: 공유되는 정보의 양
정보 흐름의 형태: 자료 흐름, 제어 흐름
Levels of Coupling
Content coupling
One module makes a direct reference to the contents of the other
module
Does not occur in high-level languages. (assembly lang.)
Common coupling
A modification impacts every module that is common coupled to this
module.
difficult to use in other context.
difficult to control data access.
difficult to know what data are used by a particular module.
e.g. FORTRAN : common blocks
모듈의 결합도 (Coupling) (2)
Control coupling
One module passes elements of control as parameters to
the other module.
e.g. function code, flags, switches, error code, return
code
One module knows something about the logic of the
other module.
* inversion of control (hierarchy breakdown)
Stamp coupling
Modules reference the same nonglobal data structure.
The name or location of the data structure is passed
through the program as a parameter.
Pass needed field as parameters
Data coupling
Is a necessary minimum form of the module
interconnection..
구조 설계(1)
Architectural Design?
Establishing the overall structure of a software
system
identify major system components and their
communications
produces a description of the software architecture
An early stage of the system design process
Represents the link between specification and design
processes
Often carried out in parallel with some specification
activities
구조 설계(2)
Advantages of explicit architecture
Stakeholder communication
Architecture may be used as a focus of
discussion by system stakeholders
System analysis
Means that analysis of whether the system can
meet its non-functional requirements is
possible
Large-scale reuse
The architecture may be reusable across a
range of systems
구조 설계(3)
Architectural design process
System structuring
identify several principal sub-systems
identify communications between these subsystems
Control modelling
establish a model of the control relationships
between the different parts of the system
Modular decomposition
decompose the identified sub-systems into
modules
구조 설계(4)
Sub-systems and modules
A sub-system is a system in its own right whose
operation is independent of the services provided
by other sub-systems.
A module is a system component that provides
services to other components but would not
normally be considered as a separate system
System structuring
Concerned with decomposing the system into
interacting sub-systems
The architectural design is normally expressed as
a block diagram presenting an overview of the
system structure
May develop more specific models showing how
sub-systems share data, are distributed, and
interface with each other
구조 설계(5)
Control models
Are concerned with the control flow
between sub-systems. Distinct from the
system decomposition model
Centralized control
One sub-system has overall responsibility for
control and starts and stops other sub-systems
Event-based control
Each sub-system can respond to externally
generated events from other sub-systems or
the system’s environment
구조 설계(6)
Modular decomposition
Another structural level where sub-systems
are decomposed into modules
Two modular decomposition models covered
An object model where the system is decomposed
into interacting objects
A data-flow model where the system is
decomposed into functional modules which
transform inputs to outputs. Also known as the
pipeline model
If possible, decisions about concurrency
should be delayed until modules are
implemented
자료 설계(1)
자료 설계란?
요구 단계에서 식별된 자료 객체들의 논리적인 표현
을 선택
논리적 자료 구조에 직접 작동해야 하는 프로그램 모
듈을 식별
자료 설계를 위한 원칙
기능과 행위에 적용된 체계적인 분석 원칙을 자료에
적용
모든 자료 구조와 이에 대한 모든 연산을 식별
자료 사전을 자료와 프로그램을 정의하는데 이용
하위 수준의 자료 설계에 관한 결정은 가능한 한 연기
정보 은닉 개념 적용
유용한 자료 구조의 라이브러리와 이에 적용되는 연
산을 개발
자료 설계(2)
자료 구조 설계
자료를 단순파일에 저장하는 경우에 수행
시스템의 외부 파일에 대한 설계 및 시스템구조도에 나타
난 자료에 대한 자료 사전 작성
절차
1. DFD의 자료저장소 => 외부 파일
2. 요구 단계의 자료 사전 => 레코드의 항목 및 길이 결정
사례 : 인사관리 시스템의 인사 기본 파일
데이터베이스 설계
자료를 데이터베이스로 구축할 경우에 수행
자료의 논리적 설계
데이터 모델링에 의한 자료 분석 (E-R Diagram)
절차 설계
절차 설계란?
절차 설계/알고리즘 설계/상세설계
구조적 설계 기법은 소프트웨어의 구조 설계에
초점 ==> 모듈 내부에 대한 설계가 필요
상세 설계(detailed design)
구조 설계에서 식별한 모듈 또는 오퍼레이션에 대한
알고리즘 설계
특정 프로그래밍 언어의 사용은 절제
표기법
그래픽 표기 방법: flowchart, N-S 도표
가상 코드 표기 방법: 프로그램 설계 언어(PDL)
Flow Chart (1)
기본개념
알고리즘의 제어 흐름을 표현하는 그래픽 도구
기본 요소: 직사각형, 다이아몬드, 화살표
직사각형 --> 처리를 표시
다이아몬드 --> 조건 분기를 표시
화살표 --> 제어 흐름을 표시
장단점
간단하고 표현력이 높으며 배우기 쉽다
구조적으로 작성하면 읽기 쉽고 이해도가 높은 프
로그램 구조 생성 가능
비구조적이고 복잡한 프로그램 구조 생성 가능
goto 문의 무절제한 사용
간단한 모듈의 내부 구조를 나타내는데 적합하나,
복잡한 시스템 구조 설명에는 부적합
Flow Chart (2)
처리 1
Yes
조건
처리 1
처리 2
No
처리 2
¼ø¼-Àû ±¸Á¶
if then else ±¸Á¶
상황1
Yes
처리 1
조건
No
Yes
순환
처리
No
상황2
Yes
처리 2
WhileÇü ¼øȯ ±¸Á¶
순환
처리
No
상황n
Yes
처리 n
No
조건
Yes
Case Á¶°Ç ±¸Á¶
No
RepeatÇü ¼øȯ ±¸Á¶
NS Chart(1)
기본 개념
flowchart의 단점을 극복하고자 Nassi & Schneiderman
이 제안, Chapin이 발전시킨 그래픽 표기법
순서적 구조, 조건 분기 구조, 순환 구조 등 기본적인 요
소에 대한 표시 방법 제공
장단점
프로그램의 기본 제어 구조를 서로 다른 도표로 표시하
여 쉽게 읽고 이해할 수 있음
임의로 goto 문을 작성할 수 없고, N-S 도표가 제공하는
요소들만 사용 --> 프로그램의 구조적 표현 가능
순환(recursion) 제어 구조를 쉽게 표시할 수 있음
NS Chart(2)
처리 1
조건
True
순서적
구조
처리 2
then 부분
False
else 부분
조건 분
기 구조
처리 3
case 조건
순환 조건
while형
순환 구조
repeat형
순환 구조
순환 조건
1
2
3
4
case 조
건 구조
프로그램 설계언어
Program Design Language의 기본 개념
가상 코드(pseudocode)라고도 부름
고급 프로그램 언어의 제어 구조와 자연 언어를 통합
PDL "프로그램"은 순서도 혹은 N-S 도표로 변환 가능
Examples: PDL/Ada, PDL/C
자체적인 PDL 설계 시 구비 요건
키워드 및 제어 구조는 미리 정의
처리에 대한 설명은 자연어 사용
데이터 타입에 대한 정의를 내릴 수 있는 기능
사용할 고급 언어로 정의할 수 있는 모든 타입을 설명
모듈 정의 기능을 제공하여야 하며, 모듈간에 서로 호출
할 수 있어야 함
사용자 인터페이스 설계(1)
사용자 인터페이스 설계의 필요성
컴퓨터 보급의 확대에 따라 사용자 인터페이
스에 대한 중요성이 증가
컴퓨터와의 대화가 직관적이고 쉬워야 함
많은 사람들이 컴퓨터를 사용하는데 어려움을
느끼고 있음
인터페이스가 배우기 어렵고, 쓰기 어렵고, 사용자
의 실수를 허용하지 아니함
인터페이스가 쉽다면, 사용자는 시스템 내부
의 기능을 보다 효과적으로 활용할 수 있음
사용자 인터페이스 설계(2)
요구단계에서의 사용자 인터페이스 설계
요구분석 과정에서 파악된 자료의 반영
사용자가 관심을 가지는 데이터
사용자 입력 정보 및 시스템 출력 정보
사용자가 보아야 할 데이터, 상태의 변화, 기능 수행 등
요구명세서의 일부인 Preliminary User Manual에
사용자 인터페이스를 기술
매뉴얼의 사용자를 명확히 규정
사람과 시스템 사이의 인터페이스에 대한 정보 기술
입출력 데이터를 중심으로 하여 예상되는 메뉴 구조, 스
크린, 보고서 형식 등을 포함하여 기술
사용자 인터페이스 설계(3)
설계 단계에서의 사용자 인터페이스 설계
구체적인 사용자 인터페이스는 설계의 초기단계에
서 정의
메뉴 구조, 스크린의 모양과 데이터, 필요한 버튼 등을
포함
사용자와 상호 작용이 많은 시스템의 경우에는 사용자
인터페이스가 소프트웨어 구조보다 먼저 고려되어야 할
중요한 문제
User Guide에 사용자 인터페이스 설계 결과를 기
록
사용자 안내서에는 시스템의 목적, 주요 기능, 구조, 다
른 소프트웨어 및 하드웨어와의 인터페이스 등을 기술
스크린에 대한 설명으로는 메뉴, 스크린 종류, 스크린 형
식, 데이터를 선택하거나 입력하는 방식 등을 포함
사용자 인터페이스와 인적 요소(1)
사용자 인터페이스의 인적 요소
사용자 인터페이스의 사용자 = 인간
고려해야 할 인적 요소 (human factor)
심리학적인 요소
사용자의 인터페이스에 대한 요구
나이, 성, 직업, 교육, 문화, 피부 색깔 등에 따른 특성
인간의 사물에 대한 인식 방법
시각적인 지각 능력
연역 또는 귀납적인 추론 능력
인간 사회와 조직 등
사용자 인터페이스와 인적 요소(2)
인식 모델 (cognition model)
인간이 정보를 처리하는 방법을 규명
인간은 인식 과정을 통하여 사물을 이해하고
지식을 얻으며, 기억, 추리, 기능의 파악, 새로
운 아이디어의 창출 등을 수행
HCI는 인간과 컴퓨터간의 지식 교환 방법을
제시하고, 이를 개선할 방안을 연구
입력 정보
해석
비교
응답 선택
응답 수행
State 1
Stage 2
Stage 3
Stage 4
출력 또는
응답
사용자 인터페이스와 인적 요소(3)
확장 모델
인식 모델에 기억 장치와 관심부분을 추가
perceptual processor가 어떤 방법으로 정보를 지
각하는가?
정보가 어떻게 관심의 대상이 되는가?
정보가 어떻게 처리되고 저장되는가?
주목
입력 정보
해석
비교
응답 선택
기억 장치
응답 수행
출력 또는
응답
사용자 인터페이스와 사회적 요소
정보에 대한 이해는 사회적 환경이 바탕
사회 환경에서 보고, 듣고, 배운 정보가 저장되며, 이를
바탕으로 인식을 수행
문화의 차이는 사용자 인터페이스에 대한 요구에 영향
문화에 따라 붉은 색깔에 대한 이해와 반응은 서로 다름
사용자 인터페이스 설계에 사회적 환경 및 습관에 대한 요소를 고
려
같은 사회적 환경이라도, 조직에서 수행하는 임무
에 따라 컴퓨터에 대한 이해는 상이
조직이 업무를 능률적으로 수행하도록 지원
사용자 인터페이스 설계시 사용자의 역할 및 기술 수준을
고려
사용자의 역할에 따라 정보를 다양하게 표시하고, 다양한 상호 대
화 방식을 지원
사용자의 기술 수준에 따라 사용자 인터페이스를 구분
사용자 인터페이스 방식
사용자 인터페이스의 평가 기준
사용법을 배우는데 소요되는 시간
특정 기능을 수행시키는데 필요한 시간
원하는 작업을 수행하기까지 범한 오류의 빈도
시스템에 대한 사용자의 만족도
시스템의 사용법을 기억하고 있는 기간
사용자 인터페이스 방식
명령어(Command) 방식
메뉴(Menu) 방식
양식 채움(Form fill-in) 방식
직접 조작(Direct manipulation) 방식
명령어 방식
Overview
컴퓨터 시스템이 도입된 초기에 널리 이용
키보드로 명령어를 컴퓨터에 입력하여 컴퓨터와 대화
컴퓨터 시스템의 동작마다 특정한 명령어를 제공
같은 종류의 동작을 세분화하기 위하여 다양한 선택 사
항을 제공
Example: UNIX 시스템 명령어
cd, chdir : 작업 디렉토리를 변경
chmod : 파일 또는 디렉토리의 access permission를
변경
options: r 읽기 접근, w 쓰기 접근, x 수행 접근,
u 사용자(소유자), g 그룹, o 이외, a 전부
메뉴 방식 (1)
Overview
다양한 메뉴 항목을 구성하여 제시하고, 사용자는 항목을
선택하여 필요한 기능을 수행
현재 널리 사용되고 있는 인터페이스 방식
사용자는 메뉴의 각 항목을 기억할 필요가 없으며, 각 항
목이 어떤 기능을 수행하는가를 판정할 수만 있으면 시스
템 사용 가능
키보드 입력이 불필요하여, 입력 오류가 없음
full screen menu
메뉴가 스크린 전부를 차지하고 사용자는 메뉴 항목을 반
드시 선택하여야만 다음 기능을 수행할 수 있는 방식
예: touch screen을 통한 기능 선택 화면
메뉴 방식 (2)
Drop-down 메뉴
메뉴 방식 (3)
Pop-up 메뉴
메뉴 방식 (4)
Push-Button 메뉴
메뉴 방식 (5)
기타 메뉴
Radio-Button 메뉴
기능과 연관된 선택 사항을 메뉴 형식으로 설계할
수 있음
선택 사항은 배타적(exclusive)인 경우도 있고, 배
타적이 아닌 경우도 있음
Check-Box 메뉴
Check-box 메뉴를 이용하여 선택 사항에서 비배
타적으로 선택할 수 있는 사항을 설계할 수 있음
비배타적 선택에서는 사용자가 동시에 여러 가지
사항을 선택할 수 있음
양식기입 방식 (1)
Overview
대량의 데이터를 입력하는 경우에 사용
입력 항목에 따라 다양한 field를 제공하며, 해당
정보를 필드에 직접 입력 가능
필드마다 이름을 갖고 있어 직관적이며, 일상 업
무에서 사용하는 서식과 유사하여 편함
초보자도 쉽게 사용할 수 있음
데이터베이스 시스템 또는 MIS 시스템에서 많이
사용
양식기입 방식 (2)
Example
사용자 인터페이스 설계시 유의사항
인터페이스는 일관성 있게 설계
의미 있는 피드백을 제공
파괴적인 행동을 하고자 할 때 이를 확인
사용자가 취한 행동에 대하여 원 상태로 복귀할 수 있도록
허용
행동 사이에 기억해야 할 정보의 양을 극소화
대화, 움직임, 생각의 효율성을 추구
키 입력을 최소화 및 마우스 이동 거리 최소화
사용자의 실수에 관대
명령어와 활동들을 분류하여 화면에 배치하여 응집력을 강
화
문맥-의존적(context sensitive) 도움말 기능을 제공
간단한 동사와 명령어를 사용하고, 불필요한 입력은 제외
설계서 작성(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. 파일 구조 또는 DB설계
4.1 외부 파일(DB)의 논리적 구
조
4.2 공유 자료
4.3 파일 접근 방법((DBMS)
5. 요구 분석 참조표
6. 제약 사항
7. 참고 사항
참고 문헌
부록