소프트웨어 공학 (Software Engineering)

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

4. 디자인패턴. 학습목표 디자인패턴의 이해  크리스토퍼 알렉산더  Each pattern describes a problem which occurs over and over again in our environment, and then describes.
© Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System models 배재대학교 멀티미디어 정보공학 연구실 발표자 : 이 상 조
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
소프트웨어 공학 Lecture #5: 모델링 최은만 저 6차 개정판 1.
Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
제 2 장 객체지향의 이해.
제 4 장 관계 학기 소프트웨어설계.
데이터베이스 및 설계 금오공과대학교 컴퓨터공학부 이 이섭.
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
8장: 객체지향 기초 - Software Engineering -.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터과학 전공탐색 배상원.
자바 5.0 프로그래밍.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
Power Java 제14장 배치 관리자.
소프트웨어 공학 (Software Engineering)
Method & library.
27장. 모듈화 프로그래밍.
강의 개요. 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
소프트웨어 공학 (Software Engineering)
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
CHAPTER 04. 프로그래밍 언어 인간과 컴퓨터의 대화_진화하는 소통. 진화하는 컴퓨터
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
제 5 장 집합연관, 복합연관, 인터페이스, 실체화 (교재: J. Schmuller 저/곽용재 역, 초보자를 위한 UML 객체지향설계, 제3판, 정보문화사, 2006) 학기 소프트웨어설계.
Clipping 이진학.
웹디자인
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
04. DBMS 개요 명지대학교 ICT 융합대학 김정호.
Power Java 제11장 상속.
Part 1 개요 Chapter 1 : 컴퓨터와 프로그램 그리고 자바 Chapter 2 : 자바의 환경
컴포넌트 다이어그램 컴포넌트 정의 컴포넌트 다이어그램의 UML 표기법 컴포넌트와 클래스 컴포넌트 다이어그램의 간단한 예
웹사이트 분석과 설계 (화면 설계) 학번: 성명: 박준석.
C# 07장. 객체 지향 개념.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
Lecture 04 객체지향 페러다임 Kwang-Man Ko
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
3. 모듈 (5장. 모듈).
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
학습내용 프로토콜 계층화 OSI 모델의 용어 및 기능 개체 서비스 접근점 (N) 프로토콜과 (N) 서비스 서비스 프리미티브
Map Designer Solution 소개자료
웹 사이트 분석과 설계 [디자인 리서치] 학번: 이름 : 홍지애.
발표자 : 이지연 Programming Systems Lab.
9 브라우저 객체 모델.
Component Diagram 1.
.Net FrameWork for Web2.0 한석수
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Power Java 제14장 배치 관리자.
07. DB 설계 명지대학교 ICT 융합대학 김정호.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
6 객체.
Presentation transcript:

소프트웨어 공학 (Software Engineering) 객체지향 설계 문양세 강원대학교 IT대학 컴퓨터과학전공

학습 목표 객체지향 분석과 설계 객체지향 개념 UML 2.0 다이어그램 정적 모델링, 동적 모델링, 디자인 패턴 (간략히 설명)

객체지향 기술 절차적인 방법은 조그만 변화에도 영향이 큼  최근에는 객체지향 설계, 언어가 매우 일반화된 추세임 함수와 자료를 함께 클래스로 묶음으로 여러 장점을 얻을 수 있음 (예제: 스크롤러 – 여러 환경에 적용되며, 독립적인 수정/관리가 가능) 장점 추상화, 모듈화, 정보은닉 등 설계 원리에 충실 복잡함을 잘 다룰 수 있음 특징 유사성을 이용하는 방법을 제공 (클래스 도출) 뚜렷하게 구별되는 단위로 분할 코드 재사용에 의하여 생산성을 높임 빠른 속도로 적용, 산업계 표준화

6.1 객체지향 분석과 설계 객체지향 분석 및 설계의 특징 분석은 문제 영역, 설계는 솔루션 영역을 다룸 분석과 설계의 과정이 순차적(절차적)이 아님 분석과 설계 과정을 명확히 구분하기는 어려움 한번의 싸이클로 작업이 끝나지 않고, 반복적인 싸이클로 완성 분석은 문제 영역, 설계는 솔루션 영역을 다룸 문제 자체의 이해 구현 기술도 고려

객체지향 분석 설계 과정 뚜렷한 표준 프로세스는 없음 (경험적 요소에 상당히 의존적임) 사용사례는 맨 처음, 최종 목표는 클래스 다이어그램 “객체” (클래스)

객체지향 모델 여러 다양한 관점에서 시스템을 모델링 객체지향에서는 크게 세 가지 관점의 모델을 작성 기능적 모델: 사용자에게 보이는 외부 기능을 중심으로 모델 작성 정적 모델: 시스템을 구성하는 요소인 객체들의 관계를 모델링 동적 모델: 객체의 상태 변화 등 시간적 요소가 고려된 모델

학습 목표 객체지향 분석과 설계 객체지향 개념 UML 2.0 다이어그램 정적 모델링, 동적 모델링, 디자인 패턴 (간략히 설명)

6.2 객체지향 개념 객체지향에서는 주어진 문제 영역을 그 안에 존재하는 “객체의 집합”으로 보며, 객체들은 서로 정보를 주고받아 “상호작용”한다 여긴다. 객체지향 개념에서는 소프트웨어를 여러 개의 객체의 모임으로 생각하며, 객체는 데이터와 관련 함수를 모아 놓은 것이다.

객 체 객체의 정의 객체는 상태(state), 능력(behavior), 정체성(identity)을 가진다. 소프트웨어 모듈(객체) = 자료구조 + 함수 객체는 상태(state), 능력(behavior), 정체성(identity)을 가진다. 상태: 자료구조가 객체 (인스턴스) 고유의 값을 가짐 능력: 연산(operation)을 수행 할 수 있는 능력 정체성: 구별 가능성 (사과들도 각기 모양이 구분됨, 쌍둥이도 구별됨) 객체 인스턴스(instance) = 객체 비슷한 객체의 구조와 행동은 공통 클래스로 선언

클래스(Class) [1/2] 클래스(class) vs 인스턴스 (instance) 클래스의 속성(attribute) 직원클래스 홍길동 객체 클래스(class) vs 인스턴스 (instance) 클래스 : 객체의 타입(object type) 인스턴스 : 클래스에 속하는 개개의 객체 클래스의 속성(attribute) 예 : 직원 클래스 속성 : 이름, 직위, 월급, 전화 번호 등 함수 : 진급, 월급 인상, 전화 변경 등

클래스(Class) [2/2] 클래스는 유사한 개념의 객체(클래스)들을 그룹핑하는 효과 클래스는 유사한 개념의 객체(클래스)들을 그룹핑하는 효과 클래스는 객체들이 갖는 속성과 적용 연산을 정의하고 있는 틀(template) Employee Hong_kildong(); Employee* Hone_kildong = new Emplyoee();

캡슐화(Encapsulation) 캡슐화의 정의 추상화의 수단 정보은닉(information hiding) 관련된 항목을 모아서 갭슐을 씌움 예> 학사 관리 시스템 데이터 : 학번, 이름, 주소의 캡슐화 함수 : 평점 계산, 주소 변경, 수강 신청의 캡슐화 추상화의 수단 세부사항은 차후에 생각 정보은닉(information hiding) 외부의 직접적 접근 불가, 일종의 블랙박스 구현에 따라 선택 가능 문법 : public, private, protected

객체 사이의 관계 객체는 일반적으로 상호작용하여 동작 연관 (association) 객체에 있는 서비스를 호출하면 두 객체는 관계가 맺어져야 함 상호작용할 필요가 있는지 찾아내는 작업이 필요 연관 (association) 서로 상대의 존재를 알 수 있도록 관련이 맺어진 것 예) 책과 출판사 집합 관계 (set relationship) 전체 개념과 부분 개념 사이의 관계 격납(containment)의 의미 예) 디스크  트랙  섹터 Publisher Book 1 *

상속(inheritance) [1/2] 상속의 의미 슈퍼클래스(superclass), 서브 클래스(subclass) 상위 클래스의 속성과 연산을 물려 받음 슈퍼클래스(superclass), 서브 클래스(subclass) 예) 직원 : 슈퍼클래스 관리자 : 서브클래스

상속(inheritance) [2/2] 복수상속 (multiple inheritance) 두 개 이상의 수퍼클래스에서 상속 받음 인사대상 교원 학 생 대학원생 학부생 직 원

다형성(polymorphism) [1/2] 다형성의 정의 여러 형태를 가지고 있다 (=여러 형태를 받아들일 수 있다) 같은 이름의 메시지를 다른 객체 or 서브클래스에서 호출 예> getArea() 를 도형의 모양이 달라도 호출

다형성(polymorphism) [2/2] 메소드: 특정한 클래스를 위하여 오퍼레이션을 구현 하나 이상의 메소드를 가진 오퍼레이션 매개변수나 객체가 속한 클래스의 이름으로 구분 현재 코드를 변경하지 않고 새로운 클래스를 쉽게 추가할 수 있음 In Java, C++ method overloading? method overriding?

학습 목표 객체지향 분석과 설계 객체지향 개념 UML 2.0 다이어그램 정적 모델링, 동적 모델링, 디자인 패턴 (간략히 설명)

6.3 UML이란? 객체지향 소프트웨어를 모델링 하는 표준 그래픽 언어 시스템의 여러 측면을 그림으로 모델링 클래스 기술(정의)뿐 아니라, 클래스간 상호작용을 표현 하드웨어의 회로도 같은 의미

UML 역사 [1/2] 1980년대 말부터 1990년대 초에 객체지향으로 모델링 하는 과정과 모델링 언어 출현 설계와 표현 방법의 급증으로 혼란을 초래 Rumbaugh와 Booch가 1994년 두 가지 방법을 합병하기로 함 Rational Software 라는 회사 설립 1995년 Jacobson이 팀에 합류 사용 사례를 제안 1997년 Object Management Group(OMG)이 UML 표준화 추진  UML V1.0 2003년 6월 UML V2.0 제정

UML 역사 [2/2]

UML 모델의 세 가지 관점 기능적 관점: 사용자 측면에서 본 시스템의 기능 구조적 관점(정적 모델) 동적 관점(동적 모델) 시간 개념을 포함하지 않음 시스템의 구조적 측면으로, 클래스 혹은 객체의 관계, 클래스 그룹의 의존 관계 등을 다이어 그램으로 나타냄 UML: 클래스 다이어그램, 컴포지트 다이어그램, 컴포넌트 다이어그램 등 동적 관점(동적 모델) 특정 시각의 시스템 동작을 스냅 사진으로 찍어놓은 형태 시스템의 상태, 기능을 실행하는 순간의 객체들의 협력 등을 나타냄 UML: 인터랙션 다이어그램, 상태 다이어그램, 액티비티 다이어그램 등

UML 다이어그램 다이어그램 이름 개략적인 모양 설 명 사용 사례(use case) 다이어그램 액터와 사용 사례를 이용하여 시스템의 기능을 모델링 클래스 다이어그램 객체지향 시스템의 가장 근간이 되는 다이어그램으로 시스템의 정적인 구조를 나타냄 패키지 다이어그램 관련된 클래스를 패키지로 그루핑 하여 의존도를 낮추기 위하여 사용

UML 다이어그램 다이어그램 이름 개략적인 모양 설 명 순차(sequence) 다이어그램 클래스 사이의 메시지 교환을 시간이 흐름에 따라 나타냄 협동 다이어그램 순차 다이어그램과 같은 내용을 나타내지만 모양이 네트워크 형태임 상태 다이어그램 외부 자극에 대한 시스템의 동적 상태 변화를 나타냄. 외부 이벤트에 대하여 민감하게 상태를 변화시키는 객체를 모델링

UML 다이어그램 다이어그램 이름 개략적인 모양 설 명 액티비티(activity) 다이어그램 액티비티 단계별로 제어라는 흐름을 모델링 하여 시스템의 동적 특징을 나타냄 컴포넌트 다이어그램 소프트웨어 부품, 예를 들면 원시코드, 헌 타임 라이브러리, 실행 파일 등의 구성을 나타냄 배치 다이어그램 노드, 컴포넌트, 커넥터 등 시스템의 물리적 자원 배치를 나타냄

학습 목표 객체지향 분석과 설계 객체지향 개념 UML 2.0 다이어그램 정적 모델링, 동적 모델링, 디자인 패턴 (간략히 설명)

6.4 정적 모델링 정적 모델 클래스 다이어그램 시간의 개념이 개입되지 않은 모델 클래스 다이어그램이 대표적 객체, 클래스, 속성, 오퍼레이션, 연관 등을 표현

6.5 동적 모델링 클래스들의 상호작용이나 클래스의 상태 변화 등 시스템 내부의 동작 동적 모델링의 세가지 다이어그램 인터랙션 다이어그램 상태 다이어그램 액티비티 다이어그램

6.6 디자인 패턴 프로그램 개발에 자주 등장하는 문제를 기술하고 같은 작업을 반복하여 설계하지 않고 여러 번 반복하여 사용할 수 있는 문제에 대한 솔루션을 기술한 것 패턴 여러 가지 상환에 적용될 수 있는 템플릿과 같은 것 문제에 대한 설계를 추상적으로 표현한 것 문제를 해결하려는 요소들을 일반화하여 잘 정리한 것 커스텀화된 객체나 클래스의 연결을 나타낸 것 패턴의 구성 요소 패턴의 이름과 구분 : 패턴을 부를 때 사용하는 이름과 패턴의 유형 문제 및 배경 : 패턴이 사용되는 분야 또는 배경, 해결하는 문제를 의미 솔루션 : 패턴을 이루는 요소들, 관계, 협동 과정 사례 : 간단한 적용 사례 결과 : 패턴을 사용하면 얻게되는 이점이나 영향 샘플 코드 : 패턴이 적용된 원시코드

자세한 사항은 … 6.4~6.6의 UML 관련 자세한 사항은 생략 관심있는 학생은 교재의 내용을 참조하시고, 더 관심 있는 학생은 간단한 온라인 자료를 참조하시기 바랍니다. 또한, StarUML 등 UML 저작도구도 있으니 참조 바랍니다. http://blog.naver.com/iceprce?Redirect=Log&logNo=150135958399

Questions?