소프트웨어 소프트웨어 엔지니어링 작업의 결과 프로그램과 프로그램의 개발, 운용, 보수에 필요한 관련 정보 일체

Slides:



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

CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
객체지향 소프트웨어공학 2 장 객체 지향. 2.1 객체지향  절차적 패러다임 소프트웨어가 프로시저 단위로 구성됨  프로시저 추상 – 단순한 데이터에는 적합하나 복잡한 데이터를 가진 응 용문제에는 부적합  데이터 추상 – 특정한 의미를 이루는 데이터의 조각들을 모아.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Software Engineering (Introduction)
Software Engineering (Introduction)
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
제 2 장 객체지향의 이해.
제 4 장 관계 학기 소프트웨어설계.
Introduction To Computers
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
5장. 참조 타입.
07. 디바이스 드라이버의 초기화와 종료 김진홍
시스템 설계와 산업디자인 개발.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
컴퓨터과학 전공탐색 배상원.
자바 5.0 프로그래밍.
제7장 클래스와 객체.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
23장. 구조체와 사용자 정의 자료형 2.
10장. 예외처리.
자바 5.0 프로그래밍.
CHAP 12. 리소스와 보안.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
C#.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바응용.
27장. 모듈화 프로그래밍.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
LabVIEW WiznTec 주임 박명대 1.
Power Java 제11장 상속.
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
데이터 베이스 DB2 관계형 데이터 모델 권준영.
JA A V W. 06.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
( Windows Service Application Debugging )
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
Lecture 04 객체지향 페러다임 Kwang-Man Ko
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
발표자 : 이지연 Programming Systems Lab.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
Numerical Analysis Programming using NRs
.Net FrameWork for Web2.0 한석수
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
 6장. SQL 쿼리.
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
6 객체.
VAULT BASIC / VAULT PROFESSIOAL
Presentation transcript:

소프트웨어 소프트웨어 엔지니어링 작업의 결과 프로그램과 프로그램의 개발, 운용, 보수에 필요한 관련 정보 일체 프로그램 이외의 정보도 중요 S/W가 복잡해지면서 설계가 중요

소프트웨어의 종류 주문형 패키지형 임베디드 시스템 특정 고객의 수요를 만족하기 위하여 개발된 소프트웨어 예) 웹사이트, 항공-교통제어 시스템, 재정관리 시스템 패키지형 공개된 시장에서 판매 COTS(Commercial Off-The-Shelf) 임베디드 시스템 하드웨어에 탑재 변경이 어려움

소프트웨어 개발 경향 현대에 와서, 설계가 취약하면 구조가 점점 악화 소프트웨어의 수요는 높아 감 지속적인 ‘소프트웨어 위기’ 소프트웨어 엔지니어링 기법을 배워야 함

소프트웨어 수요의 증가 우주 로켓 장착 소프트웨어 (출처: Bohem의 저서 Software Engineering Economics)

소프트웨어 오류 버전업에 따른 신뢰도의 추이 (출처: Pressman의 저서 Software Engineering: Practitioner’s Approach)

소프트웨어 공학이란? 고객의 문제를 해결해 주기 위하여 대규모의 품질 좋은 소프트웨어 시스템을 정해진 시간과 비용으로 개발하거나 발전시키는 체계적인 프로세스 고객의 문제를 해결 소프트웨어 공학의 궁극적인 목표 솔루션을 구매할 수도 있음 불필요한 기능을 추가하는 것은 문제해결에 도움이 안됨 문제를 파악하고 이해하기 위하여 효과적으로 커뮤니케이션 하여야

소프트웨어 공학이란? 체계적인 개발과 발전 대규모 고품질 S/W 시스템 잘 이해하고 있는 기술을 조직된 원리와 방법으로 적용하는 과정 표준으로 받아들여진 기술 - ISO, IEEE, KS 대부분은 발전적(evolution) 개발 대규모 고품질 S/W 시스템 홀로 완성시킬 수 없기 때문에 엔지니어링 기술 필요 팀워크와 협동이 필요 작업의 분할과 시스템의 각 부분이 잘 작동하느냐가 관건 최종 제품은 충분히 좋은 품질을 가지고 있어야

소프트웨어 공학이란? 비용, 시간, 기타 제약 한정된 자원 얻는 이득이 비용을 초과하여야 더 빠르고 싸게 개발하도록 다른 기업과 경쟁 비용과 시간의 부정확한 예측으로 많은 프로젝트가 실패로 끝남

소프트웨어 엔지니어링 ‘소프트웨어 엔지니어링’이란 말은 1968년 NATO 컨퍼런스에서 처음 언급 소프트웨어 개발에 엔지니어링 원리가 도입되어야 함을 처음으로 인식 엔지니어링은 자격증 제도가 필수 공공을 보호할 목적 엔지니어의 설계 작업은 수학, 과학, 경제 등의 원리를 적용할 수 있도록 충분한 연습이 필요 도덕적 윤리 의식도 필요

엔지니어링 발전원리 엔지니어링 원리의 발전 단계[Shaw, 1996]

소프트웨어 공학의 정의 IEEE W. Humphrey 목표 소프트웨어의 개발, 운용, 유지보수 및 파기에 대한 체계적인 접근 방법 W. Humphrey 질 좋은 소프트웨어를 경제적으로 생산하기 위하여 공학, 과학, 수학적 원리에 의하여 소프트웨어를 개발하는 것 목표 품질 좋은 소프트웨어를 최소의 비용으로 계획된 일정에 맞추어 개발하는 것

소프트웨어 공학의 분야 분 야 의 미 사 례 요리와의 비유 방법(method) 소프트웨어 제작에 사용하는 기법이나 절차 구조적 분석, 설계 방법, 객체지향 분석, 설계 방법 익히는 방법 (구이, 찜, 훈제 등) 도구(tools) 자동화된 시스템 설계 도구 프로그래밍 도구 테스트 도구 요리도구 (프라이팬, 압력 솥, 오븐 등) 프로세스(process) 도구와 기법을 사용하여 작업하는 순서 Unified Process eXtreme Programming 조리 순서(recipe) 패러다임(paradigm) 접근 방법, 스타일 구조적 방법론 객체지향 방법론 음식 스타일(한식, 일식, 중식, 퓨전 등)

소프트웨어 공학 관련자 사용자 고객 소프트웨어 개발자 개발 관리자 소프트웨어를 사용하는 사람들 소프트웨어에 대하여 비용을 지불하는 사람 소프트웨어 개발자 요구분석가, 데이터베이스 전문가, 기술문서 작성자, 프로그래머, 테스트 엔지니어, QA 엔지니어 개발 관리자 프로젝트 관리, 비즈니스 경영

소프트웨어 품질 사용용이성(usability) 효율성(efficiency) 신뢰성(reliability) 빨리 배우고 작업을 쉽게 하는 성질 효율성(efficiency) CPU 시간과 메모리 같은 자원을 낭비하지 않음 신뢰성(reliability) 요구한 기능을 실패 없이 할 수 있는 성질 유지보수성(maintainability) 쉽게 변경할 수 있음 재사용성(reusability) 부품이 다른 프로젝트에서 사용될 수 있는 성질.

소프트웨어 품질 관점

소프트웨어 프로세스

소프트웨어 공학의 핵심기술 추상(abstraction) 분석과 설계 방법 사용자 인터페이스 프로토타이핑 소프트웨어 구조 소프트웨어 프로세스 재사용 측정(measurement) 도구와 통합 환경

객체지향 (Object-Oriented) 개념 소개

객체지향 절차적 패러다임 객체지향 패러다임 소프트웨어가 프로시저 단위로 구성됨 프로시저 추상 데이터 추상 단순한 데이터에는 적합하나 복잡한 데이터를 가진 응용문제에는 부적합 데이터 추상 특정한 의미를 이루는 데이터의 조각들을 모아 grouping 시스템의 복잡도를 줄이는데 도움 예) 레코드나 구조체 객체지향 패러다임 프로시저 추상을 데이터 추상 관점으로 구성

객체지향 패러다임 문제를 해결하기 위한 모든 계산이 객체(object)라는 것을 기본으로 수행되는 방법 객체는 클래스의 인스턴스. 클래스는 자료가 추상화된 것이며, 동시에 객체를 조작하는 프로시저에 대한 추상 실행 프로그램은 특정 작업을 수행하기 위하여 모인 객체의 집합

구조 비교 절차적 패러다임 객체지향 패러다임

클래스와 객체 객체 실행되는 소프트웨어 시스템에 존재하는 구조화된 데이터의 덩어리 성질(property)를 가짐 객체의 상태(state)를 나타냄 행위(behavior)를 가짐 어떤 식으로 작용하고 반응하는지를 나타냄 실세계에 존재하는 객체의 행위를 시뮬레이션 할 수도 있음

객 체

클래스 클래스 객체지향 프로그램에서 추상화의 단위 유사 객체들을 정의 소프트웨어 모듈 인스턴스 인스턴스의 구조(속성)를 나타냄 행위를 구현하는 메소드를 가짐

클래스와 인스턴스의 구별 영화 영화 필름 KR-200402라는 번호가 붙은 영화 필름 SF(Science Fiction) 인스턴스들을 가지고 있다면 클래스 클래스에 의하여 정의된 집합에 포함된 일개의 멤버라면 인스턴스 영화 클래스, 인스턴스는 개별 영화 영화 필름 클래스, 구체적인 영화가 담긴 타이틀 KR-200402라는 번호가 붙은 영화 필름 ‘영화 필름’이라는 클래스의 인스턴스 SF(Science Fiction) ‘영화 장르’라는 클래스의 인스턴스

인스턴스 변수 클래스 안에 정의된 변수로 각 인스턴스에 존재하는 데이터와 같다. 속성 (attribute) 단순한 데이터 예) name, dateOfBirth, juminbunho 관계 (association) 한 클래스의 인스턴스와 타 클래스의 인스턴스와의 연관 관계 예) supervisor, courseTaken

변수와 객체 변수 한 객체가 어느 한 시점에 여러 다른 변수에 담겨 있을 수도 있음 변수의 타입 객체를 refer(객체를 담고 있는 그릇) 주어진 시점마다 다른 객체를 담고 있을 수 있음 한 객체가 어느 한 시점에 여러 다른 변수에 담겨 있을 수도 있음 변수의 타입 변수가 담고있는 객체의 유형(클래스)을 결정

클래스 변수 클래스 변수는 속하는 모든 인스턴스가 공유 static 변수로 선언 어떤 인스턴스가 클래스 변수의 값을 저장하면 클래스에 속한 다른 객체가 변수의 값의 변화를 알 수 있음 클래스 변수는 디폴트, 상수 값 저장에 적합 특정 클래스 안에 존재하는 알고리즘에 의해 사용되며, lookup table 및 유사 구조체

메소드 메소드 클래스의 행위를 구현하는 데 사용한 일종의 프로시저 여러 개의 클래스가 같은 이름의 메소드를 가질 수 있음 동일한 추상 오퍼레이션을 각 클래스에 맞게 다르게 구현할 수 있음 사각형의 면적 구하는 메소드는 원의 면적을 구하는 메소드와는 다르게 구현

메소드 메소드를 통하여 객체의 속성을 조작 Employee KimHankook; KimHankook.promote(engineer, manager);

상 속 (Inheritance) 슈퍼 클래스 상속 구조 상속(inheritance) 서브 클래스의 공통적인 기능(feature)들을 가짐 상속 구조 슈퍼 클래스와 서브 클래스 사이의 관계를 나타냄 삼각형 화살표는 일반화(generalization)을 나타냄 상속(inheritance) 슈퍼 클래스에 정의한 기능들을 서브 클래스가 묵시적으로 소유하는 것

상속 구조의 예 상속(inheritance) 슈퍼 클래스에 정의한 기능들을 서브 클래스가 묵시적으로 소유하는 것 Account MortgageAccount SavingsAccount ChequingAccount 상속(inheritance) 슈퍼 클래스에 정의한 기능들을 서브 클래스가 묵시적으로 소유하는 것

ISA 관계 일반화를 확인하려면 Is-a 관계를 만족시키는지를 체크 “A saving account is an account.” (보통예금 구좌는 은행구좌의 일종이다.) “A graduate student is a student.” (대학원생은 학생의 일종이다.) “A school is a university.”가 성립하나? Is-a 관계가 아님. ‘대학교는 학교의 일종이다.’가 되어야 함

기하학에서의 상속구조

상속 구조 상속된 모든 기능이 서브클래스에서도 의미가 통하는지 확인

다형성 하나의 추상 오퍼레이션이 서로 다른 클래스에서 다른 방법으로 구현될 수 있는 객체지향의 성질 같은 이름을 가진 여러 개의 다른 메소드가 있어야 함 어떤 메소드가 실행될지는 변수 안에 있는 객체의 종류에 좌우 됨 If-else나 switch 문장을 줄여주는 효과

상속, 다형성, 변수

추상 클래스 (Abstract Class) 오퍼레이션은 의미가 있는 가장 높은 상속구조에서 선언되는 것이 바람직함 오퍼레이션은 그 수준에서 구현되지 않고 추상화 될 수 있음 이런 클래스를 추상 클래스라 함 인스턴스가 생성될 수 없음 그림에서 Shape2D, EllipticalShape, Polygon, SimplePolygon: 개념만을 간직한 클래스로서 인스턴스를 생성하지 않음

추상 클래스 (Abstract Class) 슈퍼 클래스가 추상 오퍼레이션을 가지고 있다면 서브 클래스 어딘가에는 그 오퍼레이션의 구체적 메소드를 가지고 있어야 Leaf 클래스는 모든 오퍼레이션의 구체적 메소드를 가지고 있거나 상속 받아야 함

Overriding 재정의 메소드는 상속될 수도 있지만 서브 클래스에 새 버전이 구현될 수도 있음 제한 확장 최적화 예) circle에서는 scale(x, y)가 의미가 없음 확장 예) SavingAccount에서 마이너스가 될 때마다 일정한 수수료가 부과 됨 최적화 예) circle의 getPerimeterLength 메소드는 Ellipse의 메소드보다는 간단히 구현 됨

실행될 메소드 선택 방법 현재 클래스에 오퍼레이션을 위하여 구현된 메소드가 있다면 그 메소드를 선택 없다면 상속구조 바로 위에 있는 슈퍼클래스를 조사. 그 메소드가 있다면 선택, 구현된 메소드를 발견할 때까지 step 2를 반복 메소드를 발견할 수 없다면 오류 Java나 C++에서는 프로그램이 컴파일 되지 않음

용어 정리 Virtual function 가상함수 Overriding 재정의 Overloading 중복정의 구현내용 없이 operation의 정의만 하는 함수 Overriding 재정의 superclass에서 정의된 method가 subclass에서 재정의 됨 같은 이름을 가지고 있으나 구현 알고리즘(코드)은 다름 Overloading 중복정의 같은 클래스 내 이름이 같은 여러 operation을 정의 Polymorphism 다형성 같은 이름의 operation을 여러 클래스에서 정의

다른 개념들 추상 모듈화 캡슐화 객체 – 실재 또는 개념적으로 존재하는 것 클래스 – 객체의 모임 슈퍼클래스 – 서브클래스 오퍼레이션 – 메소드 속성과 관계 – 인스턴스 변수 모듈화 코드가 완전히 클래스로만 구성됨 캡슐화 자세한 사항을 클래스 안에 감춤 정보은닉을 가능하게 함 프로그래머가 클래스 안의 자세한 사항을 알 필요가 없음