소프트웨어 공학 (Software Engineering)

Slides:



Advertisements
Similar presentations
소프트웨어 프로세스. 1 내용  소프트웨어 프로세스  생명주기의 의미  생명주기 모델 –Waterfall Model –prototyping model –Spiral Model –Iteration Model.
Advertisements

Dept. Computer Engineering DBLAB 정보처리개론 담당 교수 : 김정석 2009 년도 1 학기.
Computer Graphics 윈도우 프로그래밍 김 창 헌김 창 헌. Computer Graphics 2 윈도우 시스템  윈도우  스크린 위에서 독립적으로 움직일 수 있는 사각형 영역  윈도우 시스템  유저와 어플리케이션간의 그래픽 스크린을 통한 인터페이스 를.
© DBLAB, SNU 화일구조. 강의 소개 - 화일구조  Instructor : Prof. Sukho Lee (301 동 404 호 )  홈페이지 :  교과목 개요 – 이 과목은 데이타 관리와 응용을 위한 화일 구조의 설계와.
2011년 신입사원 교육자료 Draft Text Here Documentation Skill
㈜맥스무비 영화관 발권 전산망 시스템.
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Chapter 2 정보시스템 아키텍처 (IS Architecture)
Introduction to Django
APPEON SOLUTION INTRODUCTION.
1.1 병렬처리의 한계와 가능성 1.2 병렬처리의 단위 1.3 병렬컴퓨터의 분류 1.4 병렬컴퓨터의 성능 척도
구조적 분석 및 설계 정보공학 분석기초 구조적 분석 1,2,3 설계원리 구조적 설계
㈜디알디 코리아 ㈜드림유비인터내셔날 지 명 원.
프로젝트 관리(1) 및 보고서 작성 방법 [4] 이현우 공정관리 예산관리 품질관리
소프트웨어 공학 (Software Engineering)
Operating Systems Overview
Toad for SQL Server 제품 소개서 – 프로넷소프트㈜.
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
Internet Computing KUT Youn-Hee Han
 DBMS의 발전 배경(1) 화일 중심 자료처리(DP)시스템의 한계 ☞ Note
Enterprise Data Warehouse
12. 데이터베이스 설계.
최 연식 ( ) EDMS를 활용한 EKP 구축 전략 2002년 09월 04일 성우시스템 주식회사 김 정훈 ( ) 최 연식 ( )
Excel OLAP Reporting / OWC를 이용한
14장. 병렬 프로세서 다루는 내용 병렬 프로세서로의 개념 병렬 처리와 병렬 컴퓨터 분류 배열 프로세서와 다중 프로세서의 개념
BPMS의 이해 (Business Process Management System)
SK 4Front KM 방법론 SK C&C.
- Make Processes Manageable -
중소기업청 인사제도 진단 PROJECT 보고서
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
『디지털 경제시대의 경영정보시스템』 김효석 · 홍일유 공저 ⓒ 법문사, 2000
1장. 데이터베이스 시스템 컴퓨터를 사용하여 정보를 수집하고 분석하는데 데이터베이스 기술이 활용되고 있음
소프트웨어 공학 (Software Engineering) 요구 분석 (Requirement Analysis)
제 1 장 소 개 시스템 분석 및 설계 허철회 2006학년도 2학기 상주대학교 컴퓨터공학과.
Module 3 : 프로세스 평가 Process Assessment.
정보처리기사 8조 신원철 양진원 유민호 이기목 김다연 윤현경 임수빈 조현진.
≫ 감성과학이란 출현 배경 2) 정의 감성존중시대의 도래 * 나가마치 – “인간이 제품에 대해 가지고 있는 욕구로서의
강의 소개, 자료구조의 개념, SW 개발과 자료구조
소프트웨어 공학 (Software Engineering)
제1장 디지털 시대의 정보기술과 정보시스템 ENIAC(1946).
정보 추출기술 (Data Mining Techniques ) : An Overview
물류단지 총량제 폐지 이후 물류시설 공급정책 방향 국 토 교 통 부.
운영체제 (Operating Systems) (Memory Management Strategies)
10. 소프트웨어 아키텍처 뷰 설계 명지대학교 융합소프트웨어학부 김정호 교수.
소프트웨어 공학 (Software Engineering)
Appendix A 구조적 시스템 개발 방법론.
Introduction to Computers
소프트웨어 공학 (Software Engineering) 요구 분석 (Requirement Analysis)
Chapter 08 구조적 분석과 설계 8.1 구조적 분석(Structured Analysis)
소프트웨어와 소프트웨어 개발 - Software Engineering -.
데이터베이스 (Database) 데이터베이스와 데이터베이스 사용자 문양세 강원대학교 IT대학 컴퓨터과학전공.
의사결정지원시스템 개요 Database DBMS D G M S MBMS Modelbase User Interface
3장 구조적 분석(SSA) 방법론 한빛미디어(주).
9장 안전관리 이론.
소프트웨어 형상관리: 목차 변경 및 형상관리의 기초 개념 형상항목 확인 및 버전관리 변경관리 감사 및 감사보고 99_11
13.1 정보시스템의 개요 13.2 정보시스템의 개발 13.3 시스템 검사 13.4 시스템 문서화
3장 구조적 분석(SSA) 방법론.
Chapter 02. 소프트웨어와 자료구조.
객체지향 패러다임에서의 코드 재사용을 위한 응집도 레벨 식별 모범 사례
성공적인 웹사이트 구축 (2) 변화 발전하는 Site의 미래를 예측 반영해야 함.
10장 OSI 7 Layer 강원도립대학교 정보통신개론.
정보 INFRA 구축 RF카드를 이용한 고객관리시스템 구축 에클라트소프트.
1차 발표: 낚였다 !! 학번: 이름: 배상하.
교육기부 진로체험기관 인증제와 지역 센터 운영 방안 한국직업능력개발원 김승보.
데이터 베이스의 내부 구조.
1. 데이터베이스 환경.
Introduction to Computer System Spring, 2019
CCNA 3 CHAPTER .1 LAN DESIGN 박명진, 문창호, 최성호.
3장. 데이터베이스 시스템 데이터베이스 시스템의 정의 데이터베이스의 구조 데이터베이스 사용자 데이터 언어
흐름도FLOWCHART 프로그래밍 과정 전단부 처리 단계 문제 분석 논리 설계
Presentation transcript:

소프트웨어 공학 (Software Engineering) 설계 원리와 아키텍처 문양세 강원대학교 IT대학 컴퓨터과학전공

Where are we in waterfall model? 설계 원리와 아키텍처 계 획 요구 분석 설 계 구 현 시 험 인수설치

In this chapter … 요구 분석이 끝나면, 소프트웨어의 내부 구조를 설계하여야 한다. 설계 원리와 아키텍처 요구 분석이 끝나면, 소프트웨어의 내부 구조를 설계하여야 한다. 지금까지는 “what”에 주안점이 있었다면, 지금부터는 “how”에 주안점을 두고 작업을 진행한다. 건축으로 치면, 설계 도면을 작성하는 작업이다.  방을 어디다 두고, 크기는 얼마로 하며, 어떤 모양으로 만들고, … We will cover … 분석에서 설계로 설계 원리 구조적 설계 소프트웨어 아키텍처 객체지향 설계 (Ch. 6) 상세 설계와 UI 설계 (Ch. 7) 설계서

설계(design) 작업 찾은 요구를 어떻게 구현할 것인가를 고민하는 단계 아키텍처 설계 설계 원리와 아키텍처 찾은 요구를 어떻게 구현할 것인가를 고민하는 단계 아키텍처 설계 소프트웨어 내부 구조 설계 - 아키텍처는 상위 수준의 설계이며 시스템의 컴포넌트와 이들의 커넥션에 초점 모듈 설계 ( 상세 설계, Ch. 7) 모듈 안의 알고리즘, 자료구조 설계 UI 설계 ( 상세 설계, Ch. 7) 데이터 설계 모듈, 애플리케이션이 공유하는 자료 설계

We are now … 설계 원리와 아키텍처 분석에서 설계로 설계 원리 구조적 설계 소프트웨어 아키텍처 설계서

분석에서 설계로… 요구 분석서 - 시스템이 해결하려는 문제에 대하여 기술한 것 설계 원리와 아키텍처 요구 분석서 - 시스템이 해결하려는 문제에 대하여 기술한 것 설계 - 분석서에 기술된 문제를 해결 방안(설계 대안)으로 바꾸는 작업

설계 작업에서는? (1/2) 설계 원리와 아키텍처 설계란 “사용자의 요구를 만족시키기 위하여 제약 조건이 반영된 (최선의) 구현 대안을 창출하는 일”이다. 분 석 설 계 구 현 사용자 요구사항 제약 조건 구축 시스템 시스템의 본질정의 구현대안 설정 시스템 구축 분석모형 설계모형 설계자는 사용자와 개발자를 동시에 만족시켜야 한다. 사용자는 설계를 보고 시스템이 어떤 기능을 하는지 이해할 수 있어야 한다. (집 주인이 집 설계도를 보고 집이 어떻게 지어질지 알 수 있어야 한다.) 개발자는 시스템이 어떻게 동작하고, 어떻게 구현하는지 이해할 수 있어야 한다. (집 짓는 사람들이 설계도를 보고 집을 어떻게 지어야 하는지 알 수 있어야 한다.)

설계 작업에서는? (2/2) 설계 원리와 아키텍처 설계 작업은 정의된 문제에 대하여 설계 원리를 적용하여 주어진 여러 제약 조건을 잘 만족시키는 최선의 설계안을 선택하는 작업이다. 대규모 소프트웨어를 설계하기 위한 작업의 분류

We are now … 설계 원리와 아키텍처 분석에서 설계로 설계 원리 구조적 설계 소프트웨어 아키텍처 설계서

설계 원리란? (1/2) 좋은 설계가 되도록 하기 위한 작업의 규범 (문제 분할, 모듈화, 추상화 등) 설계 원리와 아키텍처 좋은 설계가 되도록 하기 위한 작업의 규범 (문제 분할, 모듈화, 추상화 등) 경험에 의하여 터득한 원리(rule of thumb) (설계 결과를) 검토 및 평가 할 수 있는 기준

설계 원리란? (2/2) 설계 원리와 아키텍처 주요 설계 원리 문제의 분할, 단계적 분해(stepwise refinement): 처음엔 간단히, 차츰 세밀하게… ( 사칙연산  더하기  정수 더하기) 추상화(abstraction): 복잡한 문제를 일반화하여, 쉽게 이해할 수 있도록 하는 원리 ( 피타고라스 정리?) 모듈화(modularization): 모듈은 독립성을 가져야 함… ( 많은 라이브러리 함수를 생각하세요, 삼각함수 등) 정보 은닉(information hiding): 함수의 내부 변수 사용이 외부에 알려질 필요가 없다… ( 내정 간섭하지 마요~)

분할과 정복 (divide and conquer) 문제의 분할 설계 원리와 아키텍처 분할과 정복 (divide and conquer) 큰 문제를 한 덩어리로 다루기는 어려움 큰 문제를 작은 조각으로 나누고, 각 조각을 하나씩 해결(정복)함 분할의 결과 장점: 작은 조각(컴포넌트)은 해결이 용이함 단점: 여러 조각에 따른 통신 오버헤드가 발생함  설계자는 분할을 중지할 시점(단위)을 결정해야 함

단계적 분해(Stepwise Refinement) 설계 원리와 아키텍처 기능을 최대한으로 떼어내어 생각 점진적으로(incrementally) 구체화 상세한 내역(알고리즘, 자료구조)는 가능한 뒤로 미룸 추상화 I CAD softrware tasks: user interaction task; 2-D drawing creation task; graphics display task; drawing file management task; end. 추상화 II 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; . 추상화 III CAD system

추상화 (Abstraction) (1/2) (현실의) 복잡한 문제  추상화  개념 정립 설계 원리와 아키텍처 (현실의) 복잡한 문제  추상화  개념 정립 소프트웨어의 구조를 이루는 계층의 파악

추상화 (Abstraction) (2/2) 기능 추상화 자료 추상화 제어 추상화 입력자료를 출력자료로 변환하는 과정을 추상화 설계 원리와 아키텍처 기능 추상화 입력자료를 출력자료로 변환하는 과정을 추상화 부프로그램(subprogram)의 목적과 기능만 생각 자료 추상화 자료와 기능을 묶어서 생각 (data object 구성하는 방법)  OO Concept 제어 추상화 외부 이벤트에 대한 반응을 추상화  … 입력되면 …을 처리하고…

모듈화(Modularization) (1/6) 설계 원리와 아키텍처 1 4 1 2 3 2 1 5 4 4 5 6 3 6 2 3 5 6 문제영역 시스템 분해 시스템 구조 시스템 분해를 어떻게 해야 할 것인가?  모듈로 분해한다. 한 모듈의 규모는 어떠해야 하는가? 30 lines ~ 50 lines ??? 너무 길면 이해하기 어렵고, 너무 짧으면 성능이 저하됨

모듈화(Modularization) (2/6) 설계 원리와 아키텍처 모듈의 이식성(portability) 특정 환경에서만 동작하는 것이 아니라 일반적 환경에서 동작하면 이식성이 높다고 이야기한다. 이식성이 높은 S/W를 개발하는 것은 모든 S/W Engineer의 공통된 목표이다. 모듈을 어떻게 만들 것인가? 어떻게 모듈을 구성할 것인가?  모듈(내) 응집력(intra relationship)은 강하게,  모듈(간) 결합력(inter relationship)은 약하게 모듈의 응집력: 모듈 내 기능/요소들이 갖는 관계 모듈의 결합력: 모듈 간의 관계

모듈화(Modularization) (3/6) 설계 원리와 아키텍처 모듈의 응집력(Cohesion) 하나의 모듈은 전체 시스템이 갖는 여러 기능 중에 하나의 기능을 갖도록 설계해야… 모듈 내의 모든 요소는 하나의 목적을 가지고 있는 것이 바람직하다. Theme sentence: 한 문단의 주제를 담고 있는 문장 (vs. support sentence) 모듈의 응집력 구분 기능적 응집(functional cohesion): 잘 정의된 하나의 기능이 하나의 모듈을 이룬 경우 예) “판매 세금 계산”  (동사, 목적어) 한 쌍으로 구성 순차적 응집(sequential cohesion): 모듈 내 한 작업의 출력이 다른 작업의 입력이 되는 경우 예) “다음 거래를 읽고, 그 결과를 마스터 파일에 반영함” 교환적 응집(communication cohesion): 동일한 입력과 출력을 사용하는 여러 작업들이 모인 경우 예) “인사 기록 파일에 근무 성적을 기재하고, 급여를 갱신함” 응집력이 강함 응집력이 약함

모듈화(Modularization) (4/6) 설계 원리와 아키텍처 모듈의 응집력 구분 (계속) 절차적 응집(procedural cohesion): 공유하는 것은 없으나, 큰 테두리 안에서 같은 작업에 속하는 경우 예) “총계를 출력하고, 화면을 지우고, 메뉴를 뿌리고, 메뉴 선택 코드를 받음” 시간적 응집(temporal cohesion): 특정 시간에만 수행되는 기능을 묶어놓은 모듈 예) 초기화 루틴(변수 할당, 초기값 설정, …) 논리적 응집(logical cohesion): 유사 성격을 갖거나 특정 형태로 분류되는 처리 요소들을 하나의 모듈로 형성 예) “사칙연산에서 주어진 매개변수에 따라 다른 계산을 함”  연산간 관계가 없음 우연적 응집(coincidental cohesion): 아무 관련 없는 처리 요소들로 모듈이 형성된 경우  모듈 개념이 상실되어 이해 및 유지보수가 힘든 단점이 있음 응집력이 강함 응집력이 약함

모듈화(Modularization) (5/6) 설계 원리와 아키텍처 모듈의 결합도(Coupling) 모듈간의 상호 의존하는 정도를 의미한다. 모듈은 하나의 블랙 박스로 다른 모듈과의 독립성이 높아야 한다. 독립적인 모듈이 되기 위해서는 다른 모듈과의 결합도가 약해야 한다(loosely coupled). 모듈의 결합도 구분 자료 결합(data coupling): 모듈 간의 인터페이스가 자료 요소(파라메터)로만 구성된 경우 예) add(3, 5), sort(a) 스탬프 결합(stamp coupling): 모듈 간의 인터페이스를 통해 배열, 레코드가 전달되는 경우 (단, 배열, 레코드 내용 전체가 사용되면 “자료 결합”으로 볼 수 있음) 예) print_salary(인사 기록 레코드) 결합도가 약함 결합도가 강함

모듈화(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)하는 경우 결합도가 약함 결합도가 강함

정보 은닉(Information Hiding) 설계 원리와 아키텍처 각 모듈의 자세한 처리 내용이 시스템의 다른 부분으로부터 감추어져 있어야 ( 내부적으로 어떤 변수를 쓰던…) 각 모듈이 다른 모듈에 구애 받지 않고 설계  I/F만 잘 정의하자. 인터페이스가 모듈 안의 구체적 사항을 최소로 반영 전역변수가 없어야 모듈의 입력이 1이면 입력, 2이면 출력, …  좋은 모듈 설계가 아님  모듈화와 연관 모듈 단위의 수정, 시험, 유지보수에 큰 장점 모듈 설계 평가에 기초 모듈을 독립적으로 시험할 수 있으며, 모듈 별로 개선 및 최적화 할 수 있음

We are now … 설계 원리와 아키텍처 분석에서 설계로 설계 원리 구조적 설계 소프트웨어 아키텍처 설계서

구조적 설계 개요 (1/2) 설계 원리와 아키텍처 시스템을 이루는 모듈의 구조를 파악하는 방법  궁극적으로 S/W 모듈의 종류, 모듈 간의 관계를 파악하고자 함 모듈 분해의 계층적, 인터페이스 지향적 접근 데이터 흐름 형식에 중점 Source-transaction-sink: 변환 분석(transform analysis)  자료가 어디서 나와서 어떤 처리를 거쳐서 어디로 전달되는가? Transaction pattern: 처리 분석(transaction analysis)  처리하고자 하는 트랜잭션의 기능이 무엇인가?

구조적 설계 개요 (2/2) 설계 원리와 아키텍처 시스템 구조도(structure)의 도출  (관리자를 비롯한 높은) 사람들은 한 눈에 들어오는 구조를 원한다.  결국, 간단하게 흐름을 파악할 수 있는 구조를 그려주어야 한다. 시스템을 모듈 단위로 분할 모듈의 계층적(hierarchical) 구성 모듈 사이의 입출력 인터페이스 모듈의 이름과 기능 S4 S3 S2 S1 S5 Structure #1 S2 S1 S3 S5 S4 Structure #2 S1 S3 S5 S2 S4 Structure #3

시스템 구조도 기호 (1/3) 표준 기호 한 모듈이 다른 모듈을 호출하는 관계를 나타냄 설계 원리와 아키텍처 표준 기호 한 모듈이 다른 모듈을 호출하는 관계를 나타냄 자료(변수 및 자료 구조)의 흐름을 나타냄 제어(플래그, 태그)의 흐름을 나타냄 모듈을 나타냄 반복(iteration) 주석달기 선택(option) comment Module

시스템 구조도 기호 (2/3) 설계 원리와 아키텍처 예제 Main은 모듈 A, B, C를 호출하고, A는 W, X를 호출하며, C는 Y, Z를 호출한다. C는 Y와 Z를 반복적으로 호출할 수 있고, A는 W 혹은 X 중 하나를 호출한다. 제어 플래그 f는 W에서 A로 전달되고, 자료(데이터) a는 A에서 Main으로 전달된다. … Main A B C W X Y Z a b c f

시스템 구조도 기호 (3/3) 설계 원리와 아키텍처 기타 기호 미리 정의된 모듈(라이브러리) 입출력 모듈

시스템 구조도의 요건 (1/4) 전체적으로 균형을 이뤄야 함 ( Skew는 별로 좋지 않음) 설계 원리와 아키텍처 전체적으로 균형을 이뤄야 함 ( Skew는 별로 좋지 않음) 과다한 깊이를 가지면  하위 모듈까지 통신 오버헤드가 커짐

시스템 구조도의 요건 (2/4) 설계 원리와 아키텍처 과다한 너비를 가지면  병목현상이 나타날 수 있음 (Parallel Processing이 어려움) 입력 처리 출력

시스템 구조도의 요건 (3/4) 편중의 종류: 입력 편중, 처리(process) 편중, 출력 편중 입력 편중의 예 입력 처리 설계 원리와 아키텍처 편중의 종류: 입력 편중, 처리(process) 편중, 출력 편중 입력 편중의 예 입력 처리 출력

시스템 구조도의 요건 (4/4) 설계 원리와 아키텍처 처리 편중의 예 입력 처리 출력 출력 편중의 예 입력 처리 출력

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

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

변환 분석 방법 (2/2) 예제: 최상위 시스템 구조도 예제: 프로그램의 구조 main() { ... 설계 원리와 아키텍처 예제: 최상위 시스템 구조도 예제: 프로그램의 구조 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) 단어 계산 단어개수 검증된 파일 이름 파일 이름 상태 단어개수 파일이름 입력,검증 단어개수 계산 단어 개수 편집,출력

변환 분석의 원칙 최상위 모듈을 위한 변환 분석 하위 모듈을 위한 변환 분석 설계 원리와 아키텍처 최상위 모듈을 위한 변환 분석 ① 입력 자료 흐름과 출력 자료 흐름을 파악하여 경계를 표시한다. 즉, 입력 흐름 및 출력 흐름을 경계로 변환 센터를 식별하는 것이다. ② 최상위 모듈에 의해 직접 호출되고 제어될 다음 단계의 세 개 모듈, 즉 입력 처리 모듈, 변환 제어 모듈, 출력 처리 모듈을 만든다. 하위 모듈을 위한 변환 분석 ① 입력 처리 모듈을 분해한다.  마찬가지로, 다시 입력/변환/출력으로 분해한다. ② 출력 처리 모듈을 분해한다.  마찬가지로, 다시 입력/변환/출력으로 분해한다. ③ 변환 제어 모듈을 분해한다.  마찬가지로, 다시 입력/변환/출력으로 분해한다.

구독자 관리 시스템 (1/3) 1) 자료 흐름의 요소를 분해 입력 자료 흐름, 출력 자료 흐름, 변환 센터 설계 원리와 아키텍처 1) 자료 흐름의 요소를 분해 입력 자료 흐름, 출력 자료 흐름, 변환 센터 두 개의 입력 자료, 하나의 최종 출력 자료 출력 흐름 구독자 레코드 준비 구독자 레코드 만료일 추출 새 만료일 계산 구독자 레코드 변경 만료일 새 만료일 입력 흐름 변경 레코드 갱신기간 구독 갱신기간 입력 레코드를 파일에 출력 변환 센터

구독자 관리 시스템 (2/3) 2) 구조도의 최상위층 작성 입력, 변환, 출력 흐름을 바탕으로 최상위 구조도를 그린다. 설계 원리와 아키텍처 2) 구조도의 최상위층 작성 입력, 변환, 출력 흐름을 바탕으로 최상위 구조도를 그린다. 구독 갱신 시스템 갱신 정보 추출 갱신 레코드 저장 구독 갱신

구독자 관리 시스템 (3/3) 3) 구조도의 상세화 구조도의 각 모듈을 지속적으로 분할하여 상세 구조도를 완성한다. 설계 원리와 아키텍처 3) 구조도의 상세화 구조도의 각 모듈을 지속적으로 분할하여 상세 구조도를 완성한다. 계속적으로 분할하는 것을 요소 분해(factoring)한다고 한다. 구독 갱신 시스템 갱신 정보 추출 갱신 레코드 저장 구독 갱신 새 구독 기간 입력 구독 만료일 준비 구독자 레코드 변경 레코드 파일로 출력 구독 레코드 추출 구독 만료일 추출

마스터 파일 변경 시스템 구조도 (1/2) 설계 원리와 아키텍처 자료 처리 흐름도 (DFD)

마스터 파일 변경 시스템 구조도 (2/2) 설계 원리와 아키텍처 시스템 구조도

처리 분석(Transaction Analysis) 설계 원리와 아키텍처 처리(transaction)? 자료 흐름도의 한 프로세스에서 여러 개의 자료 흐름이 유출되는 것  현금 자동 지급기의 경우 “선택”에서 여러 분기가 일어난다. 처리흐름 T 처리 경로(action path) 처리센터 방법 ① 자료 흐름도에서 처리 센터를 식별 ② 처리 모듈을 중심으로 구조도 작성 ③ 구조도를 상세화 - 하위 구조도를 작성

처리 분석 예제: 현금 자동 지급기 (1/2) 설계 원리와 아키텍처 자료 흐름도(DFD)

처리 분석 예제: 현금 자동 지급기 (2/2) 설계 원리와 아키텍처 시스템 구조도 (상위 구조)

설계 요령 (design heuristics) (1/2) 설계 원리와 아키텍처 모듈의 결합도는 줄이고 응집력은 높이도록 최대한 노력 High fan-out은 줄이도록 노력 ...... Redundancy와 complexity를 줄이기 위하여 모듈의 인터페이스를 점검

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

사례: 비디오 대여점 (Level 0 변환 분석) 설계 원리와 아키텍처

사례: 비디오 대여점 (Level 1 변환 분석) 설계 원리와 아키텍처

사례: 비디오 대여점 (시스템 구조도) 설계 원리와 아키텍처

We are now … 설계 원리와 아키텍처 분석에서 설계로 설계 원리 구조적 설계 소프트웨어 아키텍처 설계서

소프트웨어 아키텍처 설계 원리와 아키텍처 건축 설계로 본다면… 설계와 시공에 대한 가이드가 될 큰 밑그림 일관적인 모양과 조화를 위한 스타일을 정하는 작업 스타일이라는 개념을 소프트웨어 구조에도 적용  어떻게 동작해야 할 지의 동작 메커니즘의 큰 그림을 결정  중앙 DB를 두고? C/S 모델로? 일단 시스템이 개발된 뒤에는 잘못된 구조를 바로잡기가 쉽지 않음 소프트웨어 구조는 시스템 분할, 전체 제어 흐름, 오류 처리 방침, 서브시스템 간의 통신 프로토콜을 포함

아키텍처의 중요성 좋은 구조와 나쁜 구조의 차이 소프트웨어 개발 과정은 물론 최종 제품의 품질에 광범위한 영향을 미침 설계 원리와 아키텍처 좋은 구조와 나쁜 구조의 차이 소프트웨어 개발 과정은 물론 최종 제품의 품질에 광범위한 영향을 미침

저장소 구조 서브시스템들이 단일 중앙 저장소의 자료를 접근하고 변경 설계 원리와 아키텍처 서브시스템들이 단일 중앙 저장소의 자료를 접근하고 변경 서브시스템들은 독립적이고 중앙 자료 저장소를 이용하여 상호 대화 새로운 서브시스템도 저장소를 중심으로 위치함 사례 (주로 DB를 사용하는 경우) 급여 시스템 은행 시스템과 같은 데이터베이스 관리 시스템

MVC 구조 MVC(Model, View, Control) 분리하는 이유 모델 서브시스템: 도메인의 지식을 저장 및 보관 설계 원리와 아키텍처 MVC(Model, View, Control) 모델 서브시스템: 도메인의 지식을 저장 및 보관 뷰 서브시스템: 사용자에게 보여줌 제어 서브시스템: 사용자와의 상호 작용을 관리 분리하는 이유 사용자 인터페이스, 즉 뷰와 제어가 도메인 지식을 나타내는 모델보다는 더 자주 변경될 수 있기 때문임 Excel에서 사용자는 표, 그래프, 차트 등으로 볼 수 있으나(뷰), 실제 저장은 한 군데 있으며(모델), 다른 뷰에서 각기 수정하여도(제어) 한 군데 반영됨

클라이언트 서버 구조 서버는 클라이언트라 불리는 서브시스템에게 서비스를 제공 설계 원리와 아키텍처 서버는 클라이언트라 불리는 서브시스템에게 서비스를 제공 클라이언트: 사용자로부터 입력을 받아 범위를 체크하고 데이터베이스 트랜잭션을 구동하여 필요한 모든 데이터를 수집 서버: 트랜잭션을 수행하고 데이터의 일관성을 보장한다 우리가 매일 사용하고 있는 웹 환경이 대표적인 C/S 구조에 해당함

계층 구조 (Hierarchical Structure) 설계 원리와 아키텍처 각 서브 시스템이 하나의 계층이 되어 하위 층이 제공하는 서비스를 상위 층의 서브시스템이 사용 추상화의 성질을 잘 이용한 구조 대표적인 예: 네트워크의 OSI 7 Layer 구조 장점: 각 층을 필요에 따라 쉽게 변경할 수 있음 단점: 성능 저하를 가져올 수 있음

파이프 필터 구조 (Pipe Filter Structure) 설계 원리와 아키텍처 서브시스템이 입력 데이터를 받아 처리하고 결과를 다른 시스템에 보내는 작업이 반복 서브시스템을 필터라고 하고 서브시스템 사이의 관계를 파이프라 함 대표적인 예는 UNIX/Linux 쉘

파이프 사용 예제 (in Linux) 설계 원리와 아키텍처

We are now … 설계 원리와 아키텍처 분석에서 설계로 설계 원리 구조적 설계 소프트웨어 아키텍처 설계서

시스템 설계서 작성 1. 개요 2. 시스템 구조 3. 모듈 설계(각 모듈에 대한) 4. 화일 구조 또는 데이타베이스 설계 설계 원리와 아키텍처 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. 참고사항 참고문헌 부록

Homework #3 Homework