소프트웨어 공학 (Software Engineering)

Slides:



Advertisements
Similar presentations
Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Advertisements

StarUML UOS, SELab. Jinhan Kim.. University of Seoul, Software Engineering Laboratory 1. StarUML 특징  StarUML™ 은 UML(Unified Modeling Language)
Book Review 작지만강한기업에 투자하라 - 랄프 웬저. 목차 1.- 랄프웬저에 대하여 2. 심리에대하여 3. 어떤기업에 투자할것인가 ? - 합리적인 주가의 성장주, - 작은기업 - 작지만 강한기업의 3 가지 지지대 4. 종목발굴의 아이디어 - 테마 - 나쁜뉴스.
제 2 장 UML. 2 Contents  UML 이란 ?  UML 역사와 역할  UML 구성요소 Things Relationships Diagrams  UML 확장  Summary.
Introduction to UML © copyright 2001 SNU OOPSLA Lab.
학습목표 UML 소개 2010 학년도 2 학기. 학습목표 2 이번 시간의 학습목표 이번 시간을 정상적으로 이수하면 우리들은 … UML(Unified Modeling Language) 의 개념을 설명할 수 있다. UML 의 구성요소를 설명할 수 있다.
1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
Chapter 2 정보시스템 아키텍처 (IS Architecture)
UML의 모델링의 본질 다이어그램으로 쉽게 보이는 UML
C++ Espresso 제1장 기초 사항.
객체지향 프로그래밍.
Chap05 상속 5.1 상속의 개요 5.2 멤버 변수의 상속 5.3 메소드의 상속과 오버라이딩(Overriding)
Internet Computing KUT Youn-Hee Han
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
8. 객체와 클래스 (기본).
C++ 프로그래밍 2009년 2학기 전자정보공학대학 컴퓨터공학부.
C++ 프로그래밍 2007년 1학기 전자정보공학대학 컴퓨터공학부.
소프트웨어공학 UML 학기.
[INA470] Java Programming Youn-Hee Han
10장 객체-지향 프로그래밍 II ©창병모.
C++ Component System KASA 김성헌.
2장. UML 기본 개념.
자바 5.0 프로그래밍.
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
프로그래밍 언어론 제 9 장 객체 지향 개념 객체 지향 방법론 객체 모델링 객체 지향 언어 C++ 객체 지향 언어 CLOS
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
화면(UI) 기반 도메인모델 작성 2014년 8월.
명품 JAVA Essential.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
소프트웨어설계 UML 학기.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
윤 홍 란 4 장 클래스 작성 윤 홍 란
2010학년도 2학기 객체지향의 이해.
Power Java 제7장 클래스와 객체.
C ++ 프로그래밍 시작.
김 정 석 Web Programming 김 정 석
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
시스템 분석 및 설계.
Rhapsody + MFC 개발 가이드.
2009학년도 1학기 상지대학교 컴퓨터정보공학부 고 광 만
명품 C++ 프로그래밍 1장. C++ 시작.
DirectX 3D 7개월차 김성도 3D 5인 프로젝트.
어서와 Java는 처음이지! 제9장 인터페이스, 패키지.
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
Java Chapter 4 ~ 주차.
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
삼안 인트라넷 메뉴얼.
JA V A W. 07 Sb.L.
Chapter 02. 소프트웨어와 자료구조.
[ 단원 06 ] 상속과 다형성.
UML과 객체지향 모델링 UML의 개요 객체지향 모델링.
Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성
3장,4장 발표 서정우.
Part 3 객체지향 Chapter 5 : 객체지향 개념 Chapter 6 : 클래스 : 속성
6장 클래스(상속).
2015년 2학년 1반.
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
Java 5장. 객체지향 개념 public class SumTest {
컴퓨터 계측 및 실습 C++ 기초 영남대학교 기계공학부.
자료구조 강의소개 정성훈 연락처 : 이메일 : 연구실 : 연219호 연락처 : 이메일 : 홈페이지: 정성훈.
노인학대예방 교육 교육강사 시 설 장 송나겸 보성실버센터.
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
C++ 언어의 특징
한상철 (Han, Sangchul) 상허연구동 102호 ( )
발 표 자 : 7조 손 창 국 윤 오 성, 박 진 완 객체 지향 프로그래밍 C++
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?