소프트웨어공학 () 문양세 강원대학교 IT대학컴퓨터과학전공
Where we are in waterfall model? 계획 요구분석 설계 구현 시험 인수설치 Page 2
In this chapter 요구분석이끝나면, 소프트웨어의내부구조를설계하여야한다. 지금까지는 what 에주안점이있었다면, 지금부터는 how 에주안점을두고작업을진행한다. 건축으로치면, 설계도면을작성하는작업이다. 방을어디다두고, 크기는얼마로하며, 어떤모양으로만들고, We will cover 설계의정의및원리 구조적설계 소프트웨어구조 프로그램설계 사용자인터페이스설계 설계서작성 Page 3
We are now 설계의정의및원리 구조적설계 소프트웨어아키텍처 프로그램설계 사용자인터페이스설계 설계서작성 Page 4
? (1/2) 설계란 사용자의요구를만족시키기위하여제약조건이반영된구현대안을창출하는일 이다. 설계란 소프트웨어시스템의내부를설계 하는일이다. 즉, 1) 모듈의구조, 2) 자료구조, 3) 알고리즘을설계하는일이다. 분석설계구현 사용자요구사항 제약조건 구축시스템 시스템의구현대안시스템본질정의설정구축 분석모형 설계모형 Page 5
? (2/2) 설계를수행하는가장좋은방법은 없다. 많은방법중에서 가장좋다 생각하는대안을찾아야한다. 설계자는사용자와개발자를동시에만족시켜야한다. 사용자는설계를보고시스템이어떤기능을하는지이해할수있어야한다. ( 집주인이집설계도를보고집이어떻게지어질지알수있어야한다.) 개발자는시스템이어떻게동작하고, 어떻게구현하는지이해할수있어야한다. ( 집짓는사람들이설계도를보고집을어떻게지어야하는지알수있어야한다.) 설계의구분 구조설계 ( 전체적설계, 모듈의종류, 기능, 인터페이스등 ) 상세설계 ( 세부적설계, 모듈내의기능 ) Page 6
구조설계 상위레벨설계 시스템의구조설계 기능을분해 모듈구조 ( 모듈자체의기능, I/O 설계 ) 모듈간의관계를정립 ( 모듈인터페이스 ) 자료설계 ( 데이터베이스설계 ) 결과 시스템구조도 (Structure Chart) 외부파일및 DB 설계도 ( 레코드레이아웃, ERD) Page 7
상세설계 하위레벨설계 모듈내부설계 모듈안의알고리즘 모듈안의지역변수 사용자인터페이스 메뉴 입력폼 출력레포트 자료구조설계 구조형및배열 결과 프로그램사양서화면및출력물레이아웃 Page 8
설계방법론 구조적설계 (structured design) 시스템을기능적관점에서다룸 하향적세분화 객체지향설계 (object-oriented design) 자료와자료에적용될기능을함께추상화 객체 : 자료 + 기능 시스템은객체의모임 자료구조중심설계 입출력자료의구조파악으로소프트웨어구조를추출 Data Structure + Algorithm = Program Page 9
설계원리 (1/2) 분할의기본원칙 : 변경 (update) 이있을경우, 이를최소화하는식으로분할해야한다. IPO(Input Process Output) 모형 입력 프로세스 출력 구조도 (Structure Chart) 제어 프로세스 프로세스 프로세스 Page 10
설계원리 (2/2) 설계원리 추상화 (abstraction): 복잡한문제를일반화하여, 쉽게이해할수있도록하는원리 ( 피타고라스정리?) 정보은닉 (information hiding): 함수의내부변수사용이외부에알려질필요가없다 ( 내정간섭하지마요 ~) 단계적분해 (stepwise refinement): 처음엔간단히, 차츰세밀하게 ( 사칙연산 더하기 정수더하기 ) 모듈화 (modularization): 모듈은독립성을가져야함 ( 많은라이브러리함수를생각하세요, 삼각함수등 ) Page 11
추상화 (Abstraction) ( 현실의 ) 복잡한문제 추상화 개념정립 (c.f., window size effect) 소프트웨어의구조를이루는계층의파악 기능추상화 입력자료를출력자료로변환하는과정을추상화 부프로그램 (subprogram) 의목적과기능만생각 자료추상화 자료와기능을묶어서생각 (data object 구성하는방법 ) OO Concept 제어추상화 외부이벤트에대한반응을추상화 입력되면 을처리하고 Page 12
정보은닉 (Information Hiding) 각모듈의자세한처리내용이시스템의다른부분으로부터감추어져있어야 ( 내부적으로어떤변수를쓰던 ) 각모듈이다른모듈에구애받지않고설계 I/F 만잘정의하자. 인터페이스가모듈안의구체적사항을최소로반영 전역변수가없어야 모듈의입력이 1 이면입력, 2 이면출력, 좋은모듈설계가아님 모듈화와연관 모듈단위의수정, 시험, 유지보수에큰장점 모듈설계평가에기초 모듈을독립적으로시험할수있으며, 모듈별로개선및최적화할수있음 Page 13
단계적분해 (Stepwise Refinement) 기능을최대한으로떼어내어생각 점진적으로 (incrementally) 구체화 상세한내역 ( 알고리즘, 자료구조 ) 는가능한뒤로미룸 추상화 I CAD system 추상화 II CAD softrware tasks: user interaction task; 2-D drawing creation task; graphics display task; drawing file management task; end. 추상화 III 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; circle: circle drawing task;... Page 14
모듈화 (Modularization) (1/6) 4 1 5 2 3 6 1 4 2 5 1 4 3 6 2 3 5 6 0 문제영역시스템분해시스템구조 시스템분해를어떻게해야할것인가? 모듈로분해한다. 한모듈의규모는어떠해야하는가? 30 lines ~ 50 lines??? 너무길면이해하기어렵고, 너무짧으면성능이저하됨 Page 15
모듈화 (Modularization) (2/6) 모듈의이식성 (portability) 특정환경에서만동작하는것이아니라일반적환경에서동작하면이식성이높다고이야기한다. 이식성이높은 S/W를개발하는것은모든 S/W Engineer의공통된목표이다. 모듈을어떻게만들것인가? 어떻게모듈을구성할것인가? 모듈 ( 내 ) 응집력 (intra relationship) 은강하게, 모듈 ( 간 ) 결합력 (inter relationship) 은약하게 모듈의응집력 : 모듈내기능 / 요소들이갖는관계 모듈의결합력 : 모듈간의관계 Page 16
모듈화 (Modularization) (3/6) 모듈의응집력 (Cohesion) 하나의모듈은전체시스템이갖는여러기능중에하나의기능을갖도록설계해야 모듈내의모든요소는하나의목적을가지고있는것이바람직하다. Theme sentence: 한문단의주제를담고있는문장 (vs. support sentence) 모듈의응집력구분 기능적응집 (functional cohesion): 잘정의된하나의기능이하나의모듈을이룬경우예 ) 판매세금계산 ( 동사, 목적어 ) 한쌍으로구성 순차적응집 (sequential cohesion): 모듈내한작업의출력이다른작업의입력이되는경우예 ) 다음거래를읽고, 그결과를마스터파일에반영함 응집력이강함 응집력이약함 교환적응집 (communication cohesion): 동일한입력과출력을사용하는여러작업들이모인경우예 ) 인사기록파일에근무성적을기재하고, 급여를갱신함 Page 17
모듈화 (Modularization) (4/6) 모듈의응집력구분 ( 계속 ) 절차적응집 (procedural cohesion): 응집력이강함 공유하는것은없으나, 큰테두리안에서같은작업에속하는경우예 ) 총계를출력하고, 화면을지우고, 메뉴를뿌리고, 메뉴선택코드를받음 시간적응집 (temporal cohesion): 특정시간에만수행되는기능을묶어놓은모듈예 ) 초기화루틴 ( 변수할당, 초기값설정, ) 논리적응집 (logical cohesion): 유사성격을갖거나특정형태로분류되는처리요소들을하나의모듈로형성예 ) 사칙연산에서주어진매개변수에따라다른계산을함 연산간관계가없음 우연적응집 (coincidental cohesion): 아무관련없는처리요소들로모듈이형성된경우 모듈개념이상실되어이해및유지보수가힘든단점이있음 응집력이약함 Page 18
모듈화 (Modularization) (5/6) 모듈의결합도 (Coupling) 모듈간의상호의존하는정도를의미한다. 모듈은하나의블랙박스로다른모듈과의독립성이높아야한다. 독립적인모듈이되기위해서는다른모듈과의결합도가약해야한다 (loosely coupled). 모듈의결합도구분 자료결합 (data coupling): 모듈간의인터페이스가자료요소 ( 파라메터 ) 로만구성된경우예 ) add(3, 5), sort(a) 스탬프결합 (stamp coupling): 모듈간의인터페이스를통해배열, 레코드가전달되는경우 ( 단, 배열, 레코드내용전체가사용되면 자료결합 으로볼수있음 ) 예 ) print_salary( 인사기록레코드 ) 결합도가약함 결합도가강함 Page 19
모듈화 (Modularization) (6/6) 모듈의결합도구분 ( 계속 ) 제어결합 (control coupling): 한모듈이다른모듈에게제어요소 (function code, switch, flag 등 ) 를전달하는경우예 ) integer_operation( +, 3, 5) 공통결합 (common coupling): 공통된자료영역을사용하는경우 자료영역의보호가어렵고, 자료구조변경시파급효과가큼 예 ) C/C++ 등에서 global 변수를사용하는예제, Shared Memory 사용 내용결합 (content coupling): 한모듈이다른모듈의일부분을직접참조또는수정하는경우 공유부분을변경할필요가생기면그파급효과가가장큼예 1) 에셈블리어에서한모듈이다른모듈의데이터를참조하는경우예 2) 한모듈에서다른모듈로분기 (goto) 하는경우 결합도가약함 결합도가강함 Page 20
We are now 설계의정의및원리 구조적설계 소프트웨어아키텍처 프로그램설계 사용자인터페이스설계 설계서작성 Page 21
구조적설계개요 (1/2) 시스템을이루는모듈의구조를파악하는방법 궁극적으로 S/W 모듈의종류, 모듈간의관계를파악하고자함 모듈분해의계층적, 인터페이스지향적접근 데이터흐름형식에중점 Source-transaction-sink: 변환분석 (transform analysis) 자료가어디서나와서어떤처리를거쳐서어디로전달되는가? Transaction pattern: 처리분석 (transaction analysis) 처리하고자하는트랜잭션의기능이무엇인가? Page 22
구조적설계개요 (2/2) 시스템구조도 (structure) 의도출 ( 관리자를비롯한높은 ) 사람들은한눈에들어오는구조를원한다. 결국, 간단하게흐름을파악할수있는구조를그려주어야한다. 시스템을모듈단위로분할 모듈의계층적 (hierarchical) 구성 모듈사이의입출력인터페이스 모듈의이름과기능 S1 S2 S3 S4 S5 S1 S4 S5 S4 Structure #1 S3 Structure #2 S1 S2 S5 S2 S3 Structure #3 Page 23
시스템구조도기호 (1/3) 표준기호 한모듈이다른모듈을호출하는관계를나타냄 자료 ( 변수및자료구조 ) 의흐름을나타냄 제어 ( 플래그, 태그 ) 의흐름을나타냄 모듈을나타냄 반복 (iteration) 선택 (option) 주석달기 comment Module Page 24
시스템구조도기호 (2/3) 예제 Main 은모듈 A, B, C 를호출하고, A 는 W, X 를호출하며, C 는 Y, Z 를호출한다. C 는 Y 와 Z 를반복적으로호출할수있고, A 는 W 혹은 X 중하나를호출한다. 제어플래그 f 는 W 에서 A 로전달되고, 자료 ( 데이터 ) a 는 A 에서 Main 으로전달된다. a Main b c A B C f a f f W X Y Z Page 25
시스템구조도기호 (3/3) 기타기호 미리정의된모듈 ( 라이브러리 ) 입출력모듈 Page 26
시스템구조도의요건 (1/4) 전체적으로균형을이뤄야함 ( Skew 는별로좋지않음 ) 과다한깊이를가지면 하위모듈까지통신오버헤드가커짐 Page 27
시스템구조도의요건 (2/4) 과다한너비를가지면 병목현상이나타날수있음 (Parallel Processing 이어려움 ) 입력 처리 출력 Page 28
시스템구조도의요건 (3/4) 편중의종류 : 입력편중, 처리 (process) 편중, 출력편중 입력편중의예 입력 처리 출력 Page 29
시스템구조도의요건 (4/4) 처리편중의예 입력 처리 출력 출력편중의예 입력 처리 출력 Page 30
설계요령 (Design Heuristics) 양파모양의구조가일반적 복잡한모듈의연결은피함 과다한깊이를가진구조도피함 모듈의영향권을그모듈의하위에둔다. < 잘못된예 > < 잘된예 > 변경된모듈 변경된모듈 영향받는모듈 Page 31
변환분석 (Transform Analysis) 자료의변환흐름 (transformation flow) 입력흐름 출력흐름 변환센터 변환분석은자료흐름도를입력흐름, 변환센터, 출력흐름으로분할하는과정이다. 입력흐름 : 입력을준비하는단계 ( 입력, 검증...) 출력흐름 : 출력을위하여준비되는단계 ( 포매팅, 출력 ) 변환센터 : 실제자료가변환 Page 32
변환분석방법 (1/2) 1 자료흐름도에서입력자료흐름과출력자료흐름을파악 2 중앙변환부분을식별 3 변환중심부를축으로최상위구조 (first-cut) 작성 4 각모듈의하위구조도같은방법으로분석 5 설계기준을적용하여수정, 최적화 예제 : 파일안에포함된단어의개수를계산 파일이름읽음 파일이름 단어개수출력 입력흐름 화일이름검증 검증된파일이름 단어개수계산 단어개수편집단어개수 출력흐름 변환센터 Page 33
변환분석방법 (2/2) 예제 : 최상위시스템구조도 검증된파일이름 파일이름입력, 검증 상태 단어계산 파일이름 단어개수 단어개수계산 단어개수 단어개수편집, 출력 예제 : 프로그램의구조 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) {... } Page 34
변환분석의원칙 최상위모듈을위한변환분석 1 입력자료흐름과출력자료흐름을파악하여경계를표시한다. 즉, 입력흐름및출력흐름을경계로변환센터를식별하는것이다. 2 최상위모듈에의해직접호출되고제어될다음단계의세개모듈, 즉입력처리 모듈, 변환제어모듈, 출력처리모듈을만든다. 하위모듈을위한변환분석 1 입력처리모듈을분해한다. 마찬가지로, 다시입력 / 변환 / 출력으로분해한다. 2 출력처리모듈을분해한다. 마찬가지로, 다시입력 / 변환 / 출력으로분해한다. 3 변환제어모듈을분해한다. 마찬가지로, 다시입력 / 변환 / 출력으로분해한다. Page 35
구독자관리시스템 (1/3) 1) 자료흐름의요소를분해 입력자료흐름, 출력자료흐름, 변환센터 두개의입력자료, 하나의최종출력자료 구독자레코드준비 구독자레코드 출력흐름 입력흐름 만료일추출 만료일 새만료일계산 새만료일 구독자레코드변경 구독갱신기간입력 갱신기간 변환센터 레코드를파일에출력 변경레코드 Page 36
구독자관리시스템 (2/3) 2) 구조도의최상위층작성 입력, 변환, 출력흐름을바탕으로최상위구조도를그린다. 구독갱신시스템 갱신정보추출 구독갱신 갱신레코드저장 Page 37
구독자관리시스템 (3/3) 3) 구조도의상세화 구조도의각모듈을지속적으로분할하여상세구조도를완성한다. 계속적으로분할하는것을요소분해 (factoring) 한다고한다. 구독갱신시스템 갱신정보추출 구독갱신 갱신레코드저장 새구독 구독만료일 구독자 레코드 기간입력 준비 레코드변경 파일로출력 구독레코드추출 구독만료일추출 Page 38
마스터파일변경시스템구조도 (1/2) 자료처리흐름도 (DFD) Page 39
마스터파일변경시스템구조도 (2/2) 시스템구조도 Page 40
변환분석예제 : 비디오대여점 (1/3) Level 0 변환분석 ( 최상위 ) Page 41
변환분석예제 : 비디오대여점 (2/3) Level 1 변환분석 Page 42
변환분석예제 : 비디오대여점 (3/3) 시스템구조도 Page 43
처리분석 (Transaction Analysis) 처리 (transaction)? 자료흐름도의한프로세스에서여러개의자료흐름이유출되는것 현금자동지급기의경우 선택 에서여러분기가일어난다. 처리흐름 처리센터 T 처리경로 (action path) 방법 1 자료흐름도에서처리센터를식별 2 처리모듈을중심으로구조도작성 3 구조도를상세화 - 하위구조도를작성 Page 44
처리분석예제 : 현금자동지급기 (1/2) 자료흐름도 (DFD) Page 45
처리분석예제 : 현금자동지급기 (2/2) 시스템구조도 ( 상위구조 ) Page 46
We are now 설계의정의및원리 구조적설계 소프트웨어아키텍처 프로그램설계 사용자인터페이스설계 설계서작성 Page 47
소프트웨어아키텍처 건축설계로본다면 설계와시공에대한가이드가될큰밑그림 일관적인모양과조화를위한스타일을정하는작업 스타일이라는개념을소프트웨어구조에도적용 어떻게동작해야할지의동작메커니즘의큰그림을결정 중앙 DB 를두고? C/S 모델로? 일단시스템이개발된뒤에는잘못된구조를바로잡기가쉽지않음 소프트웨어구조는시스템분할, 전체제어흐름, 오류처리방침, 서브시 스템간의통신프로토콜을포함 Page 48
저장소구조 서브시스템들이단일중앙저장소의자료를접근하고변경 서브시스템들은독립적이고중앙자료저장소를이용하여상호대화 새로운서브시스템도저장소를중심으로위치함 사례 ( 주로 DB 를사용하는경우 ) 급여시스템 은행시스템과같은데이터베이스관리시스템 Page 49
MVC 구조 MVC(Model, View, Control) 모델서브시스템 : 도메인의지식을저장및보관 뷰서브시스템 : 사용자에게보여줌 제어서브시스템 : 사용자와의상호작용을관리 분리하는이유 사용자인터페이스, 즉뷰와제어가도메인지식을나타내는모델보다는더자주변경될 수있기때문임 Excel 에서 사용자는표, 그래프, 차트등으로볼수있으나 ( 뷰 ), 실제저장은한군데있으며 ( 모델 ), 다른뷰에서각기수정하여도 ( 제어 ) 한군데반영됨 Page 50
클라이언트서버구조 서버는클라이언트라불리는서브시스템에게서비스를제공 클라이언트 : 사용자로부터입력을받아범위를체크하고데이터베이스 트랜잭션을구동하여필요한모든데이터를수집 서버 : 트랜잭션을수행하고데이터의일관성을보장한다 우리가매일사용하고있는웹환경이대표적인 C/S 구조에해당함 Page 51
계층구조 (Hierarchical Structure) 각서브시스템이하나의계층이되어하위층이제공하는서비스를상위 층의서브시스템이사용 추상화의성질을잘이용한구조 대표적인예 : 네트워크의 OSI 7 Layer 구조 장점 : 각층을필요에따라쉽게변경할수있음 단점 : 성능저하를가져올수있음 Page 52
파이프필터구조 (Pipe Filter Structure) 서브시스템이입력데이터를받아처리하고결과를다른시스템에보내는작업이반복 서브시스템을필터라고하고서브시스템사이의관계를파이프라함 대표적인예는 UNIX/Linux 쉘 Page 53
파이프사용예제 (in Linux) Page 54
We are now 설계의정의및원리 구조적설계 소프트웨어아키텍처 프로그램설계 사용자인터페이스설계 설계서작성 Page 55
알고리즘 ( 프로그램 ) 설계 (1/2) 프로그램을작성하기이전에알고리즘작성은필수요건이다. 알고리즘은모듈의명세서에해당한다. 모듈의세부처리기능을기술한내역 시스템구조도의박스에표현되지않은자세한알고리즘을기술 모듈의내부자료에대한설명을포함 프로그램구조도와함께시스템의동작상태를예측할수있는근거제공 숫자결과 Module 소수확인 ( 숫자, 결과 ) 내부자료 :... 처리기능 : 숫자보다작은이미구한소수확인모든소수로나누어나머지가 0이아니면결과는소수이다. Page 56
알고리즘 ( 프로그램 ) 설계 (2/2) 상세설계의표현 설계의표현과코딩이용이해야할것 수행이가능해야할것 유지보수가용이해야할것 상세설계의표현 흐름도 (flow chart) N-S 도표 (Nassi-Schneiderman Chart) // 나씨 - 슈나이더도표 의사코드 (pseudo code) 의사결정표 (decision table) 의사결정도 (decision diagram) PDL(Program Design Language) g 상태천이도 (state transition diagram) 행위도 (action diagram) Page 57
알고리즘의선택기준 (1/4) 정확성 모듈이정확하게수행되지않는조건을점검 예 : 음수, 0, 경계값입력 예외조건에대해서잘처리해야함 재사용 증명된알고리즘을활용하고, 이미있는모듈은그냥가져다쓴다. 효율성 기억공간최소화 최근들어서는일반적으로큰문제가되지는않는다. 처리소요시간최소화 예 : 1 에서 N 까지의합 n i 1 i < 방법 1> SeriesSum = 0 for Counter = 1 to N do SeriesSum = SeriesSum + Counter write "The sum is", SeriesSum ON ( ) < 방법 2> SeriesSum = (1.0 + N)*(N/2.0) write "The sumi" is", SeriesSum S O(1) Page 58
알고리즘의선택기준 (2/4) 효율성 ( 계속 ) 분석방법 이름 입력개수 1 10 100 1,000 10,000 1 Constant 1 1 1 1 1 log N Logarithmic 1 4 7 10 14 N Linear 1 10 100 1,000 10,000 N log N N log N 1 40 700 10,000 140,000 N 2 Quadratic 1 100 10,000 1,000,000 100,000,000 N 3 Cubic 1 1,000 1,000,000 1,000,000,000 10 12 2 n Exponential 2 1,024 1.27 x 10 30 1.07 x 10 301 1.99 x 10 3010 복잡도가높은경우 (N 3 이상, 특히 exponential 인경우 ) 휴리스틱을많이사용함 대표적휴리스틱방법 : Greedy Algorithm Page 59
알고리즘의선택기준 (3/4) 외판원문제 (TSP: Traveling Salesman Problem) 문제정의 N 개의도시 (C 1, C 2, C N ) 와두도시 i 와 j 사이의거리 d ij 가주어졌을때, 모든도시를한번씩방문해야하는외판원이다리품을가장적게파는경로 (shortest tour) 는? 경로의가짓수계산 첫번째도시를선택할수있는가짓수 : N가지 두번째도시를선택할수있는가짓수 : (N-1) 가지 56 89 94 73 경로의가짓수 = N(N-1)(N-2) (2)(1) ) ( ) = N! 32 115 62 108 49 51 TSP 를풀기위해얼마나걸리는가? 하나의경로계산을위해 1 ns 가걸린다고가정 (1 GHz 1 flop/1 ns) N=10: 3,628,800 ns = 0.0036288 sec. N=50: 3.02 x 10 64 ns = 3.02 x 10 55 seconds = 3.50 x 10 50 days = 9.59 x 10 47 years 해결할수있는방법은? (Refer to http://www.tsp.gatech.edu//index.html) Page 60
알고리즘의선택기준 (4/4) 적합성 알고리즘이주어진문제를정확히기술하였는가? 입력은 sequential file 인데, 알고리즘은 random access file 을가정하면되겠나요? Page 61
알고리즘표현 흐름도 (or 순서도 ) 표현하기쉽다. BUT, 제어흐름이구조적이되지못해서 코드가엉키는, 이른바스파게티코드가되기쉽다. 현재는거의사용하지않는다. Page 62
알고리즘표현 의사코드 (1/4) 일반적으로가장많이사용하는방법이다. 자바로쓴알고리즘,, C 로쓴알고리즘,, Pascal 로쓴알고리즘 등이이범주에해당한다고볼수있다. 모듈의입출력자료, 내부자료, 수행절차등을알고리즘의형태로기술실제프로그램과유사하나특정프로그래밍언어에는독립적임전문적용어의사용은가능하지만프로그래머의고유한스타일이나특성이무시될수있음의사코드를쓰는방식이다를수있으므로한프로젝트안에서표준을만들필요가있음 Page 63
알고리즘표현 의사코드 (2/4) 요구분석에서의구조적언어 ( 소단위명세서 ) vs. 의사코드 특성구조적언어의사코드 동일한논리구조사용 논리구조 순차 (sequence) 선택 (selection) 반복 (iteration) 사용단계 요구분석단계 설계단계 명세대상 자료흐름도상의최소단위로사용 설계구조도상의모든모듈 명세방법 사용자중심 프로그래머중심 상세정도 처리의기본적인기능수행절차 모듈의기본적인기능수행절차및세부적방법 Page 64
알고리즘표현 의사코드 (3/4) 의사코드사례 고용자레코드주급총액고용자레코드 = 급여형태 + 성명 + 주간근무시간 주급계산 급여형태 = [1 2 3] Module 주급계산 ( 고용자레코드 ; 주급총액 ) Assume 1< 급여형태 <3 0< 주간근무시간 <100 End Assume Define Rate: Real /* 시간당급료 */ End Define 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 Page 65
알고리즘표현 의사코드 (4/4) A Real Example (extracted from Numerical Analysis course) procedure gauss-jordan(a ij, b i : real numbers, n: integer) { a ij are coefficients. (1 i,j n)} { b i are results. (1 i n)} { n is # of variables. (we assume that # of variables = # of equations.} k := 1; while (k n) begin i := 1; while (i n) begin j := k+1; c := a ik /a kk ; while (j n) begin end k := k + 1; end if i = k then a ij := a ij, b i := b i ; {actually, this line is not required.} else if (i k) and (j = k) then a ij := 0; else if (i k) and (j > k) then a ij := a ij c a kj ; j := j + 1; end if i k then b i := b i c b k ; i := i + 1; Page 66
알고리즘표현 NS 도표 (1/4) 논리기술의기본형태인순차, 선택, 반복을박스로표현 a. 순차 b. 선택 (if-then-else) action A Decision T F action B action A action B c. 선택 (if-then) d. 다중선택 (case) T Decision F Selector action A Value 1 Value 2 Value 3 Value 4 Value 5 action A action B action C action D action E e. 반복 (while) f. 반복 (repeat-until) Condition action A action A Condition Page 67
알고리즘표현 NS 도표 (2/4) NS 도표의표현규칙 도표는항상사각형 도표의제어흐름은위에서아래로 수평으로그어진줄은항상평행 빈박스 null statement 모든사각형은다시하나의 NS 도표 Page 68
알고리즘표현 NS 도표 (3/4) NS 도표의예 ( 잡지구독시스템의구독레코드처리 ) 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 Call update Account Pull sibactiber s record Calculate amount of refund Call update Account Print error message Page 69
알고리즘표현 NS 도표 (4/4) NS 도표의장점 구조적프로그램 배우기쉽고, 읽기쉬우며원시코드로전환이쉬움 프로그램의구조를쉽게파악할수있다 프로그램의복잡도, 제어구조를한눈에볼수있다. NS 도표의단점 도표를그려야하는불편함 수정이용이하지않음 Page 70
We are now 설계의정의및원리 구조적설계 소프트웨어아키텍처 프로그램설계 사용자인터페이스설계 설계서작성 Page 71
사용자인터페이스 (User Interface) 사용자인터페이스의중요성 초기의컴퓨터 : 알고리즘이중요 ( 계산자체가중요 ) 최근의컴퓨터 : 사용자의입장이중요 ( 이쁘게보여야 ~) 사용자인터페이스의평가기준 배우기쉬워야 반응속도가빨라야 사용중오류가발생하지않아야 다수의사용자가만족할수있어야 사용법이유지되어야 ( 한번써보면, 다음에더쉽고, 그다음에더쉽고 ) Page 72
사용자인터페이스예제 (1/5) Page 73
사용자인터페이스예제 (2/5) Page 74
사용자인터페이스예제 (3/5) Page 75
사용자인터페이스예제 (4/5) Page 76
사용자인터페이스예제 (5/5) Page 77
사용자분석 시스템의최종사용자에대한지식 나이, 인원, 성별? 컴퓨터에대한기본지식, 동기 사용자의부류 ( 초보자, 능숙하지못한사용자, 전문가 ) 다양한사용자부류 일반적인소프트웨어 ( 게임, 워드프로세서, ) Page 78
대화설계원리 (1/2) 사용자와시스템간의대화설계에서따라야하는원칙 일관성이유지되어야한다 용어, 문법, 화면설계 메뉴, 시스템메시지, 설명서에같은의미와용어 오류메시지 익숙한사용자에게는지름길을 (Hot Key 제공 ) 사용자에게유익한정보는피드백 (feedback) 시킨다 잘못했으면겸손한정정을, 잘했으면칭찬을 대화의종결을표시하도록설계한다 진행중인단계인지, 종료단계인지 Page 79
대화설계원리 (2/2) 단순한오류를처리하는기능 Undo/Redo 기능제공 시스템에지시한것을바꾸기쉽도록 브라우저에서다른사이트로갔다가 뒤로 사용자중심의상호작용이되도록설계 사용자는자신이중심이되어도구를사용하고있다는느낌을가져야 화면의내용을너무복잡하지않게 무엇이든복잡하면일반인의외면을받는다 ( 매니아빼고 ) Niche market 을형성한실버폰이좋은예임 Page 80
메뉴선택 (1/2) 초급이나중급사용자에게적합 메뉴의구조, 동작, 배치를고려 계층구조 (hierarchical structure) 선형구조 (linear structure) 네트워크구조 (network structure) 메뉴항목의분류가중요 논리적으로같은항목은같은범주에 모든경우를포함하여분류 중복된항목은피한다 익숙하지않은항목은피한다 메뉴의종류 단일화면메뉴 풀다운메뉴 고정메뉴 Page 81
메뉴선택 (2/2) 풀다운메뉴의예제 Page 82
양식채움 (Form Fill) 인터페이스 (1/2) 자료입력에많이쓰임 자료항목, 위치, 길이 어느정도의교육이필요 ( 중급, 고급사용자에게적합 ) 화면설계 관련항목을모음 화면이름작성 화면의배치 ( 항목의순서 ) 입력자료항목의길이 정렬 선택적항목 항목간의이동 오류의정정 Page 83
양식채움 (Form Fill) 인터페이스 (2/2) 화면예제 ( 네이버가입 ) Page 84
명령어방식 (1/2) 정형적언어 (formal language) 운영체제, 텍스트편집기, 모험게임등에자주사용 고급사용자에적합 화면설계 어휘, 문법규칙, 명령어의의미를익혀야함 융통성있게창의적으로시스템에지시 < 예 > vi 의명령어 ^F 앞으로한화면전진 ^B 뒤로한화면후퇴 ^D 반화면내림 ^U 반화면올림 G 정해준줄로커서를옮김 /pattern pattern과같은다음줄로커서를옮김?pattern pattern 과같은바로전줄로커서를옮김 Page 85
명령어방식 (2/2) Page 86
명령어설계시주의사항 1. 명령어의개수를가능하면적게한다. 2. 의미있고구별되는이름을사용한다. 3. 약어는일관성있게사용한다. 4. 약어가사용되더라도명령어가제대로작동해야한다. 5. 문법구조는일관성이있어야한다. 6. 초보자를위하여문법규칙을프롬프트로안내한다. 7. 명령어메뉴는중급사용자에게도움이된다. Page 87
직접조작 (Direct Manipulation) 간략화된작업환경을보여주고그속의객체를직접조작 아이콘으로객체가표현 편집기, 비디오게임, 터치스크린, 윈도우시스템 마우스나조이스틱을사용 WYSIWYG What you see is what you get 설계시고려사항 아이콘은이해하기쉬워야 잘못된유추는피해야 사용자계층의관습에따라설계 아이콘은알맞은목적에사용되어야 조화및일관성, 배치가중요 우리가현재쓰고있는 Windows 환경이이에해당한다. Page 88
화면설계시주의사항 1. 사용자의특성을염두에둔다 2. 논리적으로관련있는항목은반전, 글자꼴, 색상으로구별 하기쉽게한다. 3. 정보를조직적으로표현하기위하여다양한정렬방식사용 한다. 4. 다중화면의경우화면사이의일관성이중요하다. Page 89
We are now 설계의정의및원리 구조적설계 소프트웨어아키텍처 프로그램설계 사용자인터페이스설계 설계서작성 Page 90
시스템설계서작성 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 오류메시지 35 3.5 사용하는파일 3.6 호출하는모듈 3.7 기능설명 4. 화일구조또는데이타베이스설계 4.1 외부화일 ( 데이타베이스 ) 의논리적구조 4.2 공유자료 4.3 파일접근방법 ( 데이타베이스관리체제 ) 5. 요구분석참조표 6. 제약사항 7. 참고사항 참고문헌부록 Page 91
Homework #3 Homework Page 92