LECTURE 3 구조적분석 Structured Analysis Pragmatic Programmer s Tip: 요구를모으지말고파헤쳐라. 최은만, CSE 4039 소프트웨어공학
구조적분석 정의 사용자의요구분석사항을파악하기위하여자료의흐름과가공절차를그림중심으로표현하는방법 처리중심 (process-oriented) 분석기법 세부작업순서 배경도작성 상위자료흐름도작성 하위자료흐름도작성 자료사전작성 소단위명세서작성 최은만, CSE 4039 소프트웨어공학 ) 2
구조적분석 특징 그림중심의표현 하향식 (top-down partitioning) 원리를적용 사용자의업무요구사항을쉽게문서화 사용자분석자간의의사소통을위한공용어 실체의모형 ( 추상적표현 ) 을추출 표현방법 Yourdon과 Demarco의방법 Gane과 Sarson의방법 최은만, CSE 4039 소프트웨어공학 ) 3
자료흐름도 구성요소 자료흐름 (Data Flow) 처리 (Process) 자료저장소 (Data Store) 예 단말 (Terminator) 자료원 1.0 프로세스 자료도착지 최은만, CSE 4039 소프트웨어공학 ) 4
식빵공장의 DFD 포장재 옥수수 1.1 옥수수 밀가루 계란 우유 박스에넣은식빵 1 식빵만들기 식빵 2 식빵 포장 3 빵을배달 포장된식빵 밀가루 계란 우유 1.2 반죽을만듦 옥수수씻고고르기 반죽 깨끗한옥수수 1.4 식빵을구워냄 1.3 버터와버무림 준비된반죽 최은만, CSE 4039 소프트웨어공학 ) 5
자동색인시스템의자료흐름도 최은만, CSE 4039 소프트웨어공학 ) 6
처리 (Process) 입력자료흐름을출력자료흐름으로변환 원으로표현하고그안에처리의이름을적는다 처리의이름은 처리가하는일또는 처리를수행하는행위자로기술한다 고유번호가주어짐 차후소단위명세의대상 1.1 임대비용계산 3.4.5 고객별명세서작성 3 간호사 최은만, CSE 4039 소프트웨어공학 ) 7
자료의흐름 (Data flow) 자료흐름은변형되어이동중인자료군을나타냄 이동방향을표시한화살표로나타냄 화살표위에자료군의이름을붙임 자료저장소에연결된자료의흐름은저장소에자료군을운반하여저장함을뜻함 초기환자자료 불충분메시지 치료계획철 1 초기치료계획 2 환자상태환자상태기록 감염정도 환자철 환자상태 환자상태자료 최은만, CSE 4039 소프트웨어공학 ) 8
자료저장소 (Data store) 머물고있는자료군의집합 ( 파일, 데이터베이스, 서 류철등 ) 자료저장소는한쌍의평행선으로표현 신용카드사용전표 신용카드사용내역철 1 신용카드사용내역기록 2 고객별명세서작성 사용내역서 고객철 최은만, CSE 4039 소프트웨어공학 ) 9
단말 (Terminal) 대상시스템밖에서의사전달하는사람, 부서또는다른 자동화시스템 단말은사각형으로표현하고그명칭을부여 명칭은한개인, 부서를기술하기보다는그역할을기술 분석실 분석기록 조회 병원행정 의료기록시스템 의료비자료 의사 증상, 처방 최은만, CSE 4039 소프트웨어공학 ) 10
자료흐름도작성 단계적분할에의하여단계적으로표현 배경도 (context diagram) 작성 개발하려는시스템과외부세계와의인터페이스를식별 시스템분석의범위를설정 시스템전체를나타내는하나의처리와관련된단말들로표시 ( 그림 3.4) 중간단계의자료흐름도 자료흐름도내의하나이상의처리가하위자료흐름도로분할되는자료흐름도 ( 그림 35 3.5 a) 최하위단계의자료흐름도 자료흐름도내의모든처리가더이상분할되지않는자료흐름도 모든처리들이소단위명세서로설명됨 ( 그림 3.5 b) 최은만, CSE 4039 소프트웨어공학 ) 11
자료흐름도작성원칙 명명원칙 처리의이름은동사형명사와단일직접목적어를사용하라 어떤경우에도다적용될수있는포괄적인명칭은피하라 < 부적절한예 > 입력자료 가격을책정하고상품목록을기록 출력자료 변환된자료흐름의명칭 새로운신용카드 고객관리 고객상태 자료흐믈은처리를거쳐변환될때마다새로운이름을부여 < 예 > 사과닦은사과껍질을닦다껍질을벗기다벗긴사과 속을파내다 씨를빼낸사과 자르다 자른사과 최은만, CSE 4039 소프트웨어공학 ) 12
자료흐름도작성원칙 자료흐름의균형 처리중심으로입력과출력자료의흐름은어디서나일치되어야함 A 1 B 2 D A 1.2 1.1 B C 3 13 1.3 E C A 1 B 2 D A 1.2 1.1 F C 3 1.3 E 자료사전 : F = B + C 최은만, CSE 4039 소프트웨어공학 ) 13
자료흐름도작성원칙 자료흐름의분할및통합 자료흐름은통합또는분할이가능 < 예 > 치료 의사진단자료 초기자료 계획수립 환자병력자료 환자병력자료기록 처리와자료저장소간의자료흐름 처리 -> 자료저장소 ( 자료수정, 삽입, 삭제 ) 처리 <- 자료저장소 ( 자료검색 ) 최은만, CSE 4039 소프트웨어공학 ) 14
자료흐름도작성원칙 입력만되는자료저장소 (black hole) 와출력만되는자료저장소 (white hole) 는없어야함 < 예 > 환자철 치료보고 치료계획보고 실자료철 모든처리를한장에그리는것보다단계적으로나누어그리는것이이해하기좋음 한장에 7 ±2 개의처리가적당 최은만, CSE 4039 소프트웨어공학 ) 15
과도하게세분화된프로세스 최은만, CSE 4039 소프트웨어공학 ) 16
If-then-else else 논리표현 최은만, CSE 4039 소프트웨어공학 ) 17
파일읽기중복 최은만, CSE 4039 소프트웨어공학 ) 18
물리적개체가표현된잘못된예 최은만, CSE 4039 소프트웨어공학 ) 19
자료흐름의이름이잘못된예 최은만, CSE 4039 소프트웨어공학 ) 20
자료사전작성 자료사전 (data dictionary) 형식 자료흐름도에나타나는자료에대한정의를모은것 자료항목이름 = 자료항목의구성을나타내는수식 자료항목구성표기법 + 자료요소가다른요소와연결되어있음 'or' 의의미, 즉택일을의미 '' 문자형상수를의미 [ ] 하나또는그이상의선택형요소를나타낼때사용 { } 중괄호안의요소가반복되는것을나타냄 { } x 중괄호안의요소가적어도 x번이상반복됨 { } y 중괄호안의요소가많아야 y번반복됨 {} y x 중괄호안의요소가 x 번이상 y 번이하반복됨 최은만, CSE 4039 소프트웨어공학 ) 21
자료사전작성 < 예> 구독자 _ 전화번호 = [ 지역번호 ] + 국번 + '-' + 가입자 _ 번호지역번호 = '(' + '0' + 첫자리 + { 십진수 } 2 0 + ')' 국번 = { 십진수 } 4 3 가입자 _ 번호 = { 십진수 } 4 4 첫자리 = 2 3 4 5 6 자료흐름도에서쓰인자료항목들이 ' 가나다 ' 순으로사전처럼정리되어야함 최은만, CSE 4039 소프트웨어공학 ) 22
소단위명세서작성 소단위명세서 (mini-spec) 자료흐름도의최하위처리가어떤기능을하는가를기술한것 기술방법 1) 구조적영어 (structured english) 영어에서쓰이는단어중연산이나제어구조를표현하는데쓰이는단어 (if then else, case, repeat, until, while 등 ) 를제한해서사용 < 예 > IF 청구액 > 50만원 IF 납입지체일 > 60일 ELSE THEN 사고해결부서에통고 ELSE ( 신용도가이직은좋음 ) 재청구서발송 IF 납입지체일 > 60 일 THEN 재청구서발송신용평가서에기록 ELSE 재청구서발송 최은만, CSE 4039 소프트웨어공학 ) 23
소단위명세서작성 2) 의사결정표 (decision table) - 여러가지다른조건에대하여다른처리를해야할경우 대금지급지급 X X 미지급 X X 미지급잔고있음 X X 없음 X X 영수증발송 O O 청구서발급 O O 안내장발송 O O 최은만, CSE 4039 소프트웨어공학 ) 24
사례 : 비디오대여점의배경도 최은만, CSE 4039 소프트웨어공학 ) 25
배경도를위한자료사전 자료사전 ( 배경도 ) 1. 자료흐름새고객 = 이름 + 주소 + 전화번호 + 신용카드번호 + 신용카드유효기간 대여 = 전화번호 +{ 비디오번호 } m 1 + 대여비디오개수 대여영수증 = 전화번호+ 고객이름+ 고객주소 + { 비디오번호+ 비디오제목 + 대여료 + 반납일 }m 1 + 총대여금 + 총지불액 + 외상액고객이서명하여야하며영수증은안받아갈수도있다. 새비디오 = 비디오번호 + 비디오제목 + 날짜 + 대여료새비디오에관한정보 일일매상보고 = 대여된비디오 + 매상 + 반납된비디오 + 정시반납 + 연체반납 + 총연체일 + 징수된연체료총액 최은만, CSE 4039 소프트웨어공학 ) 26
Level 0 DFD 최은만, CSE 4039 소프트웨어공학 ) 27
Level 0 를위한자료사전 자료사전 (Level 0) 1. 자료저장소고객파일 = 전화번호 + 고객이름 + 고객주소 + 고객군구 + 고객시도 + 우편번호 + 신용카드종류 + 신용카드번호 + 신용카드만료일전화번호 = [ 지역번호 ] + 국번 + 가입자번호대여파일 = 고객전화번호 + 고객이름 + 대여일 + 비디오번호 + 비디오제목 + 반납예정일 + 반납일 + 대여료 + 연체료 2. 자료흐름새고객 = 이름 + 주소 + 전화번호 + 신용카드번호 + 신용카드유효기간대여 = [ 전화번호 고객이름 ] + { 비디오번호 비디오제목 } m 1 지불액 = 화폐단위반납 = 비디오번호 + 고객전화번호연체료 = 화폐단위 최은만, CSE 4039 소프트웨어공학 ) 28
비디오대여를위한 Level 1 DFD 최은만, CSE 4039 소프트웨어공학 ) 29
소단위명세서 프로세스번호 : 1.0 프로세스번호 : 2.0 프로세스이름 : 고객등록프로세스이름 : 마감보고서작성설명 : 고객입력화면출력 ; 설명 : Read 대여파일 ; While(ans == 'n') n) { count 당일대여횟수 ; 고객전화번호, 동호수, 대여금총액계산 ; 취향등입력화면의각필드를 Read 현금출납기 ; 입력받음 ; print 확인메시지 ; 고객파일에저장 ; print 더이상의고객입력을원하는가?; ans = read(); } count 당일반납 ; count 당일연체반납 ; 당일연체료총액계산 ; count 당일대여횟수 ; 대여금총액계산 ; Format, print 마감보고서 최은만, CSE 4039 소프트웨어공학 ) 30
Exercise: 음료자동판매기 다른가격의여러종류의음료판매 1000, 500, 100, 50, 10원동전사용 일반사용자 충분한금액이있으면선택가능음료가표시 언제든반환가능 관리자두가지모드 음료채워넣기위한모드 동전수거모드 DFD 와 DD 작성 고객 음료수자판기 음료수 A 음료수 B 음료수 C 음료수 D 가격과 버튼 동전반환 총금액 버튼 동전 잔돈없음 삽입구 램프 동전 음료수 반환구 나오는곳 최은만, CSE 4039 소프트웨어공학 ) 31
Q&A 디자인스튜디오 스스로해보고 다음강의시간에질의 샘플제시 최은만, CSE 4039 소프트웨어공학 ) 32