소프트웨어 공학 Lecture #7: 상세 설계

Slides:



Advertisements
Similar presentations
선진한국, 이렇게 만들자 재단법인 한국선진화포럼. 민생이 보는 선진화  윤택한 경제생활 ( 산업화 )  믿고 사는 사회생활 ( 민주화 ) - 개인의 재산, 자유와 권리를 보호하는 사회 모르는 사람과 믿고 협력하는 사회  함께 가는 공동생활 ( 복지사회 ) - 역경에.
Advertisements

전통한옥 실내공간의 구성과 특성. 상류주택의 안채는 각 지방의 평면형을 적용하기도 하나 이에 관계없이 자유롭게 평면을 이 루고 있음을 알 수 있다. 이런 것은 주로 평면의 형태에서 풍수 ( 風水 ), 도참 ( 圖讖 ) 에 관계된 일자형 ( 一字形 ), 월자형 ( 月子形.
사용자를 위한 효율적인 UI 란 ? 부서 : IT 사업부 디자인팀 발표자 : 현인철. 목 차목 차 1.UI (User Interface) 란 ? 2. UI 를 고려한 디자인의 필요성 3. 성공적인 UI 를 위한 방법 4. UI 분석과 평가법 5. 효과적 UI 제작을 위한방법.
건축설계 박정훈.
전남행복수업 design 독서ㆍ토론 수업 지원 자료 활용 목포유달초등학교 김미향.
6.1 사용사례 6.2 객체 모델링 6.3 동적 모델링 6.4 시스템 설계 6.5 객체 설계 6.6 디자인 패턴
전남행복수업 design, 독서·토론수업 연구의 개요를 말씀드리겠습니다..
운동화 전문 매장 관리 시스템 - 시스템 개발 계획안 - 소프트웨어공학 4조 ‘04 조수민 ‘04 이준희 ‘04 최재원
소프트웨어 공학 Lecture #9: 테스팅 최은만 저 6차 개정판 1.
오늘 뭐하(조) Software Engineering Team Project APP만들기 팀장 팀원 심중섭
12 프로젝트 실습.
데이터 모델링 방법론 2003년 03월.
데이터베이스 시스템.
실전 데이터모델링 & 데이터베이스 설계와 구축
작업분석(Task Analysis) 숙명여자대학교 임순범.
소비자 만족도 설문조사 결과.
Private & Confidential
제약 조건 부모 테이블 자식 테이블 입 력 수 정 삭 제  관계형성을 통한 참조 무결성
캡스톤 디자인2 최종발표 유경현 김기윤 Team : 너 지금 어디야.
팀 명: Con Spirito 팀 원: 경주리 김다정 김소담 최은미
제 3 장 엔티티-관계(ER) 모델을 사용한 데이타 모델링
Chapter 3. Architecture AI & HCI Lab 김 주 영.
12. 데이터베이스 설계.
2장. UML 기본 개념.
데이터 웨어 하우스 이병규 김기훈.
화면(UI) 기반 도메인모델 작성 2014년 8월.
Data Modeling Database 활용을 위한 기초 이론 Database의 개요 Data Modeling
Database 소개.
소프트웨어설계 UML 학기.
제 2 장 데이터베이스 시스템 개념과 아키텍처 Fundamentals of Database Systems
자격증 모의 테스트 시스템 담당 교수 : 이 상 문 교수님 팀명 : CSCLAB
윤 홍 란 4 장 클래스 작성 윤 홍 란
1장. 데이터베이스 시스템 컴퓨터를 사용하여 정보를 수집하고 분석하는데 데이터베이스 기술이 활용되고 있음
Rhapsody + MFC 개발 가이드.
제 7 장 엔터티-관계를 사용한 개념적 데이타 모델링
설계 단계 개념적 설계 ER 다이어그램 논리적 설계
2015. 인문소양교육.
4. 관계 데이터베이스 (Relational Database)- 7, 8장
ER-Win 4.0 Database Modeling Ⅰ. Logical Design
마을살이 제천덕산면을 중심으로 농촌공동체연구소장 한석주.
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall
소프트웨어 공학 (Software Engineering)
비주얼 프로그래밍 1분반 화/목.
프로젝트 포트폴리오 요약 프로젝트 종류 프로젝트 이력 역할 주요 기술 : Windows System Application
CACM 구현 public class CACM { public CACM(File file)
학습목표 학습목표 본 장은 데이터베이스를 구성하는 개체, 속성, 관계 등을 다룬다. 특별히 데이터베이스의 구조를 테이블에 기초하여 조직하는 관계 데이터 모델은 개체(entity)와 관계(relationship) 들이 테이블의 집합 형태로 되어 간단하고 이해하기 쉬우며.
작업분석(Task Analysis) 숙명여자대학교 임순범.
Memento (GOF Pattern) TP Version 1.0
UI CDP(Career Design Program) 소개
UX 기반 소프트웨어 및 디지털콘텐츠 UI 설계
데이터베이스 개발 단계.
소프트웨어 공학 (Software Engineering) 상세 설계 (Detailed Design)
게임 엔진 : 프로젝트 PPT_2 참참참 김 현 원.
유지보수 제안서 200 Web agency ######.
POS System(Point-Of-Sales System)
2장 시스템 분석/설계 개요 한빛미디어(주).
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
시스템 분석 / 설계 개요 2장.
상세 개념적 모델링. 상세 개념적 모델링 정규화를 하는 이유 데이터의 중복성 제거 데이터 모형의 단순화 Entity, Attribute의 누락 여부검증 데이터 모형의 안전성 검증.
발표자 : 조윤혜 발표일 : 담당 교수 : 성미영 교수님
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
ER-관계 사상에 의한 관계 데이터베이스 설계
합성. 그리고 몽타주. 평생교육학과 도은아.
구조 유압장비 광명119구조대 임영채.
산점도 (Scatter Diagram) (1) 개요
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
‘그’라고 말하는 것은 ‘나’라고 말할 수가 없기 때문이네
2 비주얼 베이직 시작하기 천리 길도 한 걸음부터! 기초부터 다지자..
실습#5 인터랙티브 프로토타입 2011년 2학기 숙명여자대학교 임순범.
Presentation transcript:

소프트웨어 공학 Lecture #7: 상세 설계 최은만 저 6차 개정판 1

학습 목표 설계 패턴 클래스 설계 사용자 인터페이스 설계 데이터 설계

상세 설계 상세 설계 목적 패러다임에 따른 작업 설계 모델을 작동하는 소프트웨어로 변환 아키텍쳐-모듈 사이의 추상 수준의 갭을 줄이기 위함 패러다임에 따른 작업 구조적 방법 프로시저 안의 로직 (알고리즘) 설계 객체지향 방법 클래스 안의 메소드 설계

7.1 설계 패턴 디자인 패턴이란? 디자인 패턴 구성 요소 소프트웨어 설계에서 자주 발생하는 문제에 대한 일반적이고 반복적인 해결책을 말한다. 여러가지 상황에 적용될 수 있는 일종의 템플릿 디자인 패턴 구성 요소 패턴의 이름과 구분 문제 및 배경 – 패턴이 사용되는 분야 또는 배경 솔루션 – 패턴을 이루는 요소들, 관계, 협동과정 사례 – 적용 사례 결과 – 패턴의 이점, 영향 샘플 코드 – 예제 코드

설계 패턴 패턴의 분류 Gamma의 23개 패턴

팩토리 메소드 패턴 객체 생성을 위한 인터페이스의 정의 위임(delegation) 형태 사용 이유 RequiredClass의 생성을 팩토리 메소드를 가진 MyClass에게 위임 팩토리 메소드는 createObjectOfrequiredClass() 사용 이유 베이스 클래스에 속하는 객체 중 하나가 필요한데 그 아래에 있는 자식 객체 중 어떤 것이 필요한지 실행 시간까지 알 수 없을 때

추상 팩토리 패턴 클래스의 집합의 종류를 지정하여 관련된 객체의 집합을 생성할 수 있게 하는 패턴 추상 팩토리 패턴이 필요한 경우 하나의 업체에서 가전제품을 생산하기 위한 하드웨어를 제공함에도 불구하고 호환성이 취약하다. 여러 생산자가 만든 장치들을 혼합하여 사용할 때 취합하기 어렵다. 추상 팩토리 적용 사례

어댑터 패턴 이미 개발된 클래스, 즉 레거시 시스템의 인터페이스를 다른 클래스의 요구에 맞게 인터페이스를 변환해주는 것 이미 만들어져 있는 클래스를 사용하고 싶지만 인터페이스가 원하는 방식과 일치하지 않을 때 사용 패턴 적용 방법 위임을 이용 상속을 이용 <상속 이용 예>

싱글톤 패턴 시스템에서 단 하나의 인스턴스만을 갖도록 할 필요가 있는 경우 사용 패턴 사용 요령 프린터 스풀러 파일 시스템 등 클래스의 유일한 인스턴스를 넣을 위치를 정한다. 생성자의 접근 수정함수를 private로 지정 싱글톤을 얻기 위한 클래스 S에 public static 접근 메소드를 포함한다. 싱글톤을 얻는 방법은 생성자에게 위임

컴포지트 패턴 객체 집합 속에 또 다시 객체 집합을 갖는 경우 패턴 사용 집합 속에 포함될 객체와 집합을 가지고 있는 객체, 이들 모두가 자기 자신과 동일한 타입(메소드와 데이터)의 객체 리스트를 가질 수 있도록 도와준다. 기본 클래스와 이를 포함하는 컨테이너 클래스를 구분하지 않고 처리하는 재귀적 합성을 이용할 수 있다.

반복자 패턴 시스템의 유사한 객체를 다룰 때, 동일한 인터페이스를 이용하여 접근할 수 있도록 만드는 패턴 처리하려는 자료구조가 다른 형태로 바뀌더라도 클라이언트가 영향을 받지 않음

옵서버 패턴 1대 다의 객체 의존관계를 정의한 것 한 객체가 상태를 변화시켰을 때 의존 관계에 있는 다른 객체들에게 자동적으로 통지하고 변경 객체 하나를 변경하였을 때, 다른 객체에 통보하여 갱신하기 위한 옵저버 객체를 둔다.

상태 패턴 이벤트 의존 애플리케이션에 적합한 패턴 시스템이 동작하면서 발생되는 이벤트에 따라 변경이 이루어 질 수 있도록 설계 롤플레잉 게임 예제 MyGameState 타입의 state를 가지고 있다. State 는 다형성이 적용됨. 상태 객체를 이용

퍼싸드 패턴 서브시스템의 내부가 복잡하여 클라이언트 코드가 사용하기 힘들 때 사용 간단한 인터페이스만 알아도 서브시스템 주요 기능을 사용 복잡한 것을 단순하게 보여줌 내부 시스템을 몰라도 사용 가능

7.2 클래스 설계 분석 단계에서 아직 확정되지 않은 클래스 내부 부분 중 구현에 필요한 중요한 사항을 결정하는 작업 클래스 추출 및 클래스 간 관계 분석 상태와 오퍼레이션의 관계를 상세히 설계해야 함 클래스가 가지는 속성 값에 따라 오퍼레이션 구현이 달라짐 객체의 상태 변화 모델링 필수

클래스 인터페이스의 정의 왜 클래스의 인터페이스 정의가 중요한가 API(Application Program Interface) 클래스 구현 클래스 사용 클래스 확장 API(Application Program Interface) 서브시스템의 서비스 인터페이스

클래스 인터페이스의 정의 협약에 의한 설계(Design by Contract) 소프트웨어 컴포넌트에 대한 정확한 인터페이스 명세를 위하여 선행조건, 결과조건, 불변조건을 나타내는 설계 방법 선행조건(precondition) 오퍼레이션이 호출되기 전에 참이 되어야 할 조건 결과조건(postcondition) 오퍼레이션이 수행된 후 만족하여야 하는 조건 불변조건(invariant) 클래스 내부가 실행되는 동안 항상 만족하여야 하는 조건 리스트에 있는 노드가 항상 오름차순으로 되어야 함

클래스 상태 모델링 클래스에 정의하는 여러 오퍼레이션의 동작 효과를 이해하는데 큰 도움을 준다 객체가 논리적으로 가질 수 있는 상태만을 나타냄 스택을 나타내는 객체

클래스 재사용 – (1) 프레임워크 실정에 맞도록 커스터마이즈 할 수 있게 고안된 재사용 가능한 부분적인 응용 프로그램 객체지향에서 재사용 빈도가 높은 것 자료 처리나 이동 통신과 같은 특수한 기술을 목표로 함 응용 프레임워크 재정의 할 수 있는 후크 메소드(hook method)가 있어 확장성을 향상 후크 메소드 응용 도메인의 인터페이스와 동작이 특수한 경우 약간의 차이를 체계적으로 분리할 수 있음

클래스 재사용 – (1) 프레임워크 프레임워크의 위치에 따라 구분 프레임워크 확장하는데 사용되는 기술 인프라 구조 프레임워크 미들웨어 프레임워크 엔터프라이즈 응용 프레임워크 프레임워크 확장하는데 사용되는 기술 화이트박스 프레임워크 프레임워크의 내부 구조에 대한 사전 지식이 필요 블랙박스 프레임워크 상속보다는 위임 방법을 사용

클래스 재사용 – (2) 재구성 연관 관계의 구현이 정확하도록 방향과 다중성을 살핌 재사용도를 높이기 위한 상속을 재검토 상속 : 유사한 클래스들 사이에 재사용을 가능하게 함 많은 코드 재사용 중복을 줄이며 오류의 가능성을 줄임 구현 의존도를 낮추기 위한 상속을 재검토

클래스 재사용 – (3) 최적화 접근 경로를 최적화하기 위하여 연관 관계를 추가 객체를 속성으로 축소 복잡한 계산은 연기 효율성과 명확성 사이에 균형을 이루어야함 시스템의 효율성은 높이지만 시스템을 더 복잡하게 하고 이해하기 어렵게 함

7.3 사용자 인터페이스 설계 사용자의 입장을 더욱 중시함 모든 소프트웨어는 사용자의 만족이 큰 목적이 됨 소프트웨어 시스템에 있어서 사용자의 만족 그 기능과 사용자 인터페이스 시스템의 기능이 정확하고 완벽해야 함

사용자 인터페이스 유형 사람과 컴퓨터 사이의 대화를 체계적으로 표현 사람 : 컴퓨터 시스템에 명령을 내리고 자료를 전달 컴퓨터 : 사람에게 처리된 정보나 처리 상태, 도움말 등을 전달

사용자 인터페이스 유형 그래픽 사용자 인터페이스(Graphic User Interface) 웹 인터페이스 명령어 인터페이스 직접 조작형 인터페이스 웹 인터페이스 인터넷과 웹브라우저를 통하여 페이지를 열람하고 조작하는 인터페이스 명령어 인터페이스 정해진 명령 문자열을 입력하여 시스템을 조작하는 인터페이스 텍스트 사용자 인터페이스 자연어에 가까운 문장을 입력하여 시스템을 조작하는 인터페이스

사용자 인터페이스 설계 원리 좋은 사용자 인터페이스 사용자와 시스템간의 대화설계서에서 따라야 할 큰 원칙 직관적으로 사용 사용하는 도중에 오류가 적음 사용자와 시스템간의 대화설계서에서 따라야 할 큰 원칙 일관성 적절한 사용자 지원 적당한 피드백 최소의 사용자 입력 사용자를 배려하는 사용자 중심의 설계

사용자 인터페이스 설계 원리 사용자 인터페이스를 만들 때 기본 가이드라인을 따르는 것이 좋음 배우기 쉽고 쓰기 쉬운 인터페이스를 만들라 효율성을 높이는 기능을 제공하라 사용자가 도움을 받거나 오류를 수정하기 쉽게 하라 입력 자료의 오류를 최소화 사용자에게 피드백을 제공하라 끌리는 레이아웃과 설계를 창조하라 익숙한 용어와 이미지를 사용하라

화면 설계 화면 설계를 위한 원리 UI컨트롤 화면을 설계하는 동안 사용자의 특성을 기억한다 논리적으로 관련 있는 항목들은 빈 줄 등으로 구별하기 쉽게 한다 정보를 조직적으로 표현하기 위하여 다양한 정렬 방식을 사용한다 다중 화면의 경우 화면 사이의 일관성이 중요하다 여러 가지 다른 배치로 시험한다 UI컨트롤 메뉴바 명령 버튼 다이얼로그 박스 텍스트 박스 토글 버튼 리스트 버튼 드롭다운 리스트 박스 라디오 버튼 체크 박스

화면 설계 – UI컨트롤

화면 설계 쉽게 배울 수 있고 사용할 수 있는 자료 입력 화면 가이드라인 입력 양식 항목의 입력이 끝났음을 알리기 위한 키를 반드시 정한다. 콤보 박스를 사용하여 입력하게 하면 입력 오류를 줄일 수 있다. 입력 양식 처리할 자료를 요청하고 모으는데 사용하는 양식

출력물 설계 출력물은 다양한 종류가 있고 다양한 기술이 사용 출력물의 대부분은 인쇄된 리포트 리포트는 매력적이고 전문적이어야 하며 무엇보다 읽기 쉬워야 함 모든 리포트는 머리말과 꼬리말이 있어야 한다 항목은 논리적인 순서로 디스플레이하고 그루핑 되어야 한다

7.4 데이터 설계 엔티티 관계 다이어그램(Entity-Relationship Diagram) ER 다이어그램 관계형 데이터베이스를 위한 주요 모델링 도구 관계를 나타내는 방법 테이블 이름을 함수 이름 속성들을 매개변수 기본 키는 밑줄 ER 다이어그램 테이블보다는 엔티티를 강조 관계형 데이터베이스 모델링에 가장 널리 사용되는 도구 표준화 된 표현 없음

데이터베이스 설계 예시 비디오 대여 시스템 ERD를 작성 데이터 요소들을 엔티티에 배정 시스템의 엔티티를 파악하기 위하여 클래스 다이어그램을 리뷰 1:1, 1:M, M:N 관계를 결정 데이터 요소들을 엔티티에 배정 데이터 사전에 있는 모든 자료 요소가 엔티티와 관련되어있는지 검토

데이터베이스 설계 예시 모든 테이블에 대하여 3차 정규형으로 만든다 자료 사전의 모든 요소를 검토 기본 키, 보조 키, 외부 키를 파악 자료 사전의 모든 요소를 검토 자료 사전에 있는 모든 데이터 엔티티들이 완전하고 바르게 문서화 되었는지 확인 최종 ERD와 정규화 된 테이블을 생성한 후에는 데이터베이스로 변환

객체와 테이블 관계형 데이터베이스를 객체지향 프로그램에서 사용하는 경우 관계형 데이터베이스 자체를 설계 애플리케이션에서 DBMS와 어떻게 통신하는지 설정 매핑 되는 과정에 테이블 개념 및 정규화 규칙은 클래스와 관계에도 적용 객체 안의 속성은 테이블 내부의 열(column)에 해당되는 테이블 속성으로 매핑 속성 : 객체지향과 관계형 데이터베이스에서 공유하는 단어

객체와 테이블 데이터베이스의 테이블은 항상 기본키를 가져야 함 기본키가 될 수 있는 속성 null이 될 수 없는 값 자주 변경되지 않아야 함

객체와 테이블 객체에서 반복되는 속성은 별도의 테이블로 구성 연관을 갖는 두 클래스는 기본키와 외부키로 매핑 연관 : 두 객체 사이에 양방향 링크를 정의한 것 집합 관계는 관계형 데이터베이스에서 매핑할 수가 없다 집합관계는 연관으로 바꿔야 함 집합 개념의 클래스를 위한 테이블이 기본키를 제공 부분 개념의 클래스를 위한 테이블은 외부키로 구현

Questions?