소프트웨어공학동향 - kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 ·...

56
소프트웨어 소프트웨어 공학 공학 (Software Engineering (Software Engineering) 소프트웨어 소프트웨어 공학 공학 동향 동향 문양세 문양세 강원대학교 강원대학교 IT IT대학 대학 컴퓨터과학전공 컴퓨터과학전공

Upload: others

Post on 27-Apr-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어소프트웨어 공학공학 (Software Engineering(Software Engineering))

소프트웨어소프트웨어 공학공학 동향동향웨어웨어 공학공학 동향동향

문양세문양세강원대학교강원대학교 ITIT대학대학 컴퓨터과학전공컴퓨터과학전공

Page 2: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향In this chapter …In this chapter …

소프트웨어 공학은 어떻게 발전했는지 살펴보고,

소프트웨어 공학 관련 도구, 엔지니어링 기법 등을 소개한다.웨어 공학 관련 도구, 엔지니어링 기법 등을 개한다

We will cover …• 소프트웨어 공학의 역사

• CASE (Computer Aided Software Engineering)

• 컴포넌트 기반 소프트웨어 개발

• 웹 엔지니어링

• 소프트웨어 재사용소프트웨어 재사용

• 소프트웨어 리엔지니어링

• 실시간 소프트웨어 설계

Software Engineeringby Yang-Sae MoonPage 2

Page 3: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

We are now …We are now …소프트웨어 공학 동향

소프트웨어 공학의 역사

CASE (Computer Aided Software Engineering)

컴포넌트 기반 소프트웨어 개발컴포넌트 기반 소프트웨어 개발

웹 엔지니어링

소프트웨어 재사용

소프트웨어 리엔지니어링소프트웨어 리엔지니어링

실시간 소프트웨어 설계

Software Engineeringby Yang-Sae MoonPage 3

Page 4: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어소프트웨어 공학공학 –– 방법론방법론(Methodology)(Methodology)소프트웨어 공학 동향

소프트웨어 개발 과정에서 사용되는 여러 가지 방법에 대한

연구연구

모형화 방법, 설계 방법, 코딩 , 테스트 방법

• 프로세스 중심 방법론

• 자료 중심 방법론

• 객체 지향 방법론

Software Engineeringby Yang-Sae MoonPage 4

Page 5: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어소프트웨어 공학공학 –– 도구도구(Tools)(Tools)소프트웨어 공학 동향

개발 방법을 자동화 하는 방법 및 소프트웨어

요구 분석 도구요구 분석 도구

CASE (Computer Aided Software Engineering)( )

• 상위(upper) CASE

• 하위(lower) CASE• 하위(lower) CASE

소프트웨어 개발 환경

Software Engineeringby Yang-Sae MoonPage 5

Page 6: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어소프트웨어 공학공학 –– 프로세스프로세스(Processes)(Processes)소프트웨어 공학 동향

소프트웨어 생명 주기에서 방법과 도구가 적용되어야 할

순서를 정의한 것순서를 정의한 것

개발 작업, 결과물, 절차, 작업 사이의 선후 관계

프로젝트 관리 기술

Software Engineeringby Yang-Sae MoonPage 6

Page 7: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향소프트웨어소프트웨어 공학의공학의 발전발전 (1/3)(1/3)

1970년대 초: 구조적 프로그래밍

• 구조적 코딩구조적 코딩

• 하향식 프로그래밍

• 정보 은닉(Parnas)( )

• 추상화(Dijkstra)

• 단계적 세분화(Wirth)

1970년대 중: 설계 방법론

• 구조적 설계(Yourdon과 Constantine)

• JSP 설계 방법(Jackson)

• Warnier-Orr 설계 방법

1970년대 말: 분석 방법론

• 구조적 분석(DeMarco, Gane과 Sarson)

Software Engineeringby Yang-Sae MoonPage 7

• SADT(SofTech)

Page 8: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향Who is Edsger W. Dijkstra?Who is Edsger W. Dijkstra?

Software Engineeringby Yang-Sae MoonPage 8

Page 9: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향Who is Edsger W. Dijkstra?Who is Edsger W. Dijkstra?

Software Engineeringby Yang-Sae MoonPage 9

Page 10: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향소프트웨어소프트웨어 공학의공학의 발전발전 (2/3)(2/3)

1980년대 초: 자동화 도구 및 객체지향 프로그래밍

• 코드 자동 생성코드 자동 생성

• 소프트웨어 공학 도구

• 객체지향 프로그래밍(Smalltalk, C++)( )

1980년대 말: 컴퓨터 응용 소프트웨어 공학대 퓨터 응용 웨어 공학

• 분석을 위한 대화식 그래픽 도구

• 분석, 설계 지원 도구

• 프로그래밍 환경

• 통합 소프트웨어 공학 환경

• 사용자 인터페이스 관리 시스템

Software Engineeringby Yang-Sae MoonPage 10

Page 11: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향소프트웨어소프트웨어 공학의공학의 발전발전 (3/3)(3/3)

1990년대 초: 객체지향 소프트웨어 공학

• 객체지향 분석, 설계객체지향 분석, 설계

• 객체지향 분석, 설계 도구

• 소프트웨어 리엔지니어링

1990년대 중: 객체지향 분산처리대 중 객체지향 처리

• 소프트웨어 재사용

• 설계 패턴

• 객체 분산 처리 구조(CORBA, OLE/COM, ...)

• 분산 객체 프로그래밍(JAVA)

Software Engineeringby Yang-Sae MoonPage 11

Page 12: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

We are now …We are now …소프트웨어 공학 동향

소프트웨어 공학의 역사

CASE (Computer Aided Software Engineering)

컴포넌트 기반 소프트웨어 개발컴포넌트 기반 소프트웨어 개발

웹 엔지니어링

소프트웨어 재사용

소프트웨어 리엔지니어링소프트웨어 리엔지니어링

실시간 소프트웨어 설계

Software Engineeringby Yang-Sae MoonPage 12

Page 13: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향CASE?CASE?

목표

• 노동 집약적인 소프트웨어 개발 방식을 자동화• 노동 집약적인 소프트웨어 개발 방식을 자동화

• 도구의 유기적인 통합

개발용 컴퓨터의 특성 개발 방법론 관리 절차 등 소프트웨어 개발을• 개발용 컴퓨터의 특성, 개발 방법론, 관리 절차 등 소프트웨어 개발을

모두 고려한 도구 제공

소프트웨어를 위한 CAD/CAM소프트웨어를 위한 CAD/CAM

여러 원천 기술과 고성능 워크스테이션과의 결합으로 탄생

Software Engineeringby Yang-Sae MoonPage 13

Page 14: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향CASE CASE 원천원천 기술기술 (1/2)(1/2)

구조적 기법

• 쉽게 이해할 수 있는 시스템 모델• 쉽게 이해할 수 있는 시스템 모델

• 하향식, 기능식 분해 방법

프로토타이핑 기술

• 프로토타입 용 언어, 화면 레이아웃 설계, 보고서 설계

자동 프로그래밍 기술

• 4 세대 언어 (4GL: 4 Generation Language)( g g )

• 자료 선언문, 질의어, 조작어, 데이터 처리 및 보고서 작성 기능

Software Engineeringby Yang-Sae MoonPage 14

Page 15: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향CASE CASE 원천원천 기술기술 (2/2)(2/2)

정보 저장소 기술

• 소프트웨어 요구 분석 설계서• 소프트웨어 요구 분석, 설계서

• 응용 문제에 관련된 영역 지식

프로세스 정의와 프로젝트 관리 정보• 프로세스 정의와 프로젝트 관리 정보

• 소프트웨어 메트릭 정보

분산 처리 기술

• 클라이언트/서버, 공동 작업 환경

Software Engineeringby Yang-Sae MoonPage 15

Page 16: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향소프트웨어소프트웨어 개발개발 환경환경 (1/3)(1/3)

정의

“소프트웨어 생명주기 전체에 걸쳐 프로그래밍 지원 능력을 제공하는소프트웨어 생명주기 전체에 걸쳐 프로그래밍 지원 능력을 제공하는

도구의 통합된 집합이며, 이는 하나의 명령어로 접근하도록 되어 있다. 환경은 일반적으로 설계, 편집, 컴파일, 로드, 테스트, 형상 관리, 프로, , , , , ,젝트 관리를 위한 도구를 포함한다.”

언어 중심 환경

• 프로그래밍 단계 지원

• Lisp, Smalltalk의 인터프리터 중심 개발 환경(코딩, 수행, 디버깅 환경)

• 설계나 프로젝트 관리를 위한 기능은 부족설계나 로젝 관리를 위한 기능은 부족

Software Engineeringby Yang-Sae MoonPage 16

Page 17: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향소프트웨어소프트웨어 개발개발 환경환경 (2/3)(2/3)

구문 중심 환경

구문 중심 편집기 (syntax directed editor)• 구문 중심 편집기 (syntax-directed editor)

• Cornell Program Synthesizer, Granada/Aloe, Mentor, Pecan

프로그래밍 정보의 보관 추상 구문 트리(Ab t t S t T )• 프로그래밍 정보의 보관: 추상 구문 트리(Abstract Syntax Tree)

• 구현 단계나 테스트 단계만을 지원

툴킷(Toolkit) 환경

• 코딩 도구(컴파일러 편집기 링커 디버거)와 버전 제어 및 형상 관리• 코딩 도구(컴파일러, 편집기, 링커, 디버거)와 버전 제어 및 형상 관리

를 위한 도구들의 모임

• Unix Programmer’s Workbench• Unix Programmer s Workbench

• 도구의 확장이 용이

• 공통의 사용자 인터페이스가 없음

Software Engineeringby Yang-Sae MoonPage 17

• 공통의 사용자 인터페이스가 없음

Page 18: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향소프트웨어소프트웨어 개발개발 환경환경 (3/3)(3/3)

방법 중심 환경

분석이나 설계 단계의 특정 방법을 지원• 분석이나 설계 단계의 특정 방법을 지원

• Teamwork, System Architect, Accelerator

Di i 기능 자료 사전 정의 일관성 검증 기능• Diagramming 기능, 자료 사전 정의, 일관성 검증 기능

• 단점

특정 방법에 고정 특정 방법에 고정

프로젝트 관리를 위한 기능 없음

Software Engineeringby Yang-Sae MoonPage 18

Page 19: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향상위상위 CASE (Upper CASE) (1/2)CASE (Upper CASE) (1/2)

소프트웨어 개발 초기의 일을 지원

분석 및 설계 과정의 지원분석 및 설계 과정의 지원

지원 기능

• 여러 가지 방법론을 지원하는 Diagramming 도구

• 모델의 정확성, 일관성을 확인하기 위한 오류 검증 기능

• 프로토타이핑을 지원하는 도구

• 설계 사전

• 분석 설계 결과의 오류, 일관성 검증

Software Engineeringby Yang-Sae MoonPage 19

Page 20: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향상위상위 CASE (Upper CASE) (2/2)CASE (Upper CASE) (2/2)

사용자 인터페이스 설계 및 개발 도구

화면 구성 요소의 레이아웃• 화면 구성 요소의 레이아웃

• 프로그래밍과의 연결

사용자 인터페이스 관리 시스템• 사용자 인터페이스 관리 시스템

프로토타이핑 도구

Software Engineeringby Yang-Sae MoonPage 20

Page 21: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향상위상위 CASECASE의의 이용이용

장점

• 높은 생산성 향상: 40%• 높은 생산성 향상: 40%

• 분석, 설계 자료의 효율적인 관리 및 재사용

단점단점

• Learning curve (학습 곡선: 사람은 자신이 배워 좋은 방법이라 여기

는 것을 쉽사리 버리지 못한다.)는 것을 쉽사리 버리지 못한다.)

• 적합한 도구의 선택과 교육이 중요

일관성 검증일관성 검증

• 모든 그림 요소들이 제대로 연결되어 있는가?

• 각 프로세스의 출력이 적어도 하나씩 있는가?• 각 프로세스의 출력이 적어도 하나씩 있는가?

• 자료흐름에 모두 이름이 붙어 있는가? 또한 자료사전에 있는가?

• 프로세스의 이름은 유일한 이름인가?

Software Engineeringby Yang-Sae MoonPage 21

프로세스의 이름은 유일한 이름인가?

• 자료 흐름이 상위 프로세스와 균형을 이루고 있는가?

Page 22: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향하위하위 CASE (Lower CASE)CASE (Lower CASE)

프로그래밍 지원 도구

컴파일러 링커 로더 디버거• 컴파일러, 링커, 로더, 디버거

• 구문 중심 편집기

테스트 도구• 테스트 도구

정적 분석기

동적 분석기 테스트 기준 분석기 가설 검증기 회귀 분석 동적 분석기(테스트 기준 분석기, 가설 검증기, 회귀 분석)

비주얼 프로그래밍 도구

• Power Builder

• Visual Basic

Software Engineeringby Yang-Sae MoonPage 22

Page 23: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향통합통합 CASE (Integrated CASE)CASE (Integrated CASE)

장점

각 도구 사이에 각 단계 사이에 정보(모형 프로그램 문서 자료)가• 각 도구 사이에 각 단계 사이에 정보(모형, 프로그램, 문서, 자료)가자유롭게 전이

• 형상관리 품질 보증 문서 생성 등을 위한 노력의 감소• 형상관리, 품질 보증, 문서 생성 등을 위한 노력의 감소

• 프로젝트 관리의 향상

통합 수준

• 자료 교환: 자동 변환 장치에 의한 자료 변환

• 공통 도구: 동일한 사용자 인터페이스

• 자료 통합: 공통 자료 저장소 사용

• 완전 통합: 메타 자료 관리, 구동 장치

Software Engineeringby Yang-Sae MoonPage 23

Page 24: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

We are now …We are now …소프트웨어 공학 동향

소프트웨어 공학의 역사

CASE (Computer Aided Software Engineering)

컴포넌트 기반 소프트웨어 개발컴포넌트 기반 소프트웨어 개발

웹 엔지니어링

소프트웨어 재사용

소프트웨어 리엔지니어링소프트웨어 리엔지니어링

실시간 소프트웨어 설계

Software Engineeringby Yang-Sae MoonPage 24

Page 25: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향컴포넌트컴포넌트 기반기반 소프트웨어소프트웨어 개발개발

목적

개발 생산성 높임• 개발 생산성 높임

• 빨리 좋은 품질의 소프트웨어 개발 가능

컴포넌트 기반 개발 과정

• (주로) 객체지향 기술 이용

• 이미 개발된 컴포넌트를 사용하여 시스템을 구성

• 언어, 방법, 도구, 관리 등의 여러 요소를 함께 적용

• 소프트웨어 개발에 사용하는 블록은 프로그래밍 언어에 제약을 받지

않아야 하며, 규모가 크고 캡슐화된 단위여야 한다.

Software Engineeringby Yang-Sae MoonPage 25

Page 26: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향컴포넌트란컴포넌트란 무엇인가무엇인가??

밀접한 관계에 있는 소프트웨어의 패키지로서 독립적으로 개발되어 분

배될 수 있는 단위이며 다른 컴포넌트와 조립될 수 있도록 제공하는 서비배 수 있 위이며 다 와 수 있 록 제공하 서비

스와 사용하는 서비스를 인터페이스로 정의한 것[D’Souza,1999]

밀접한 관계에 있는 소프트웨어의 패키지밀접한 관계에 있는 소프트웨어의 패키지

독립적으로 개발되어 분배될 수 있는 단위

제공하는 서비스에 대하여 명시적으로 잘 정의된 인터페이스가 있음제공하는 서비스에 대하여 명시적으로 잘 정의된 인터페이스가 있음

다른 것으로부터 제공되어야 할 서비스에 대하여 명시적으로 잘 정의된

인터페이스가 있어야 함인터페이스가 있어야 함

다른 컴포넌트와 조립될 수 있고 컴포넌트 자체를 수정하지 않고 컴포넌

트의 성질을 맞게 고칠 수 있어야 함

Software Engineeringby Yang-Sae MoonPage 26

Page 27: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향컴포넌트의컴포넌트의 특성특성 (1/3)(1/3)

패키지의 단위

제공하는 인터페이스 리스트• 제공하는 인터페이스 리스트

• 요구되는 인터페이스 리스트

외부 명세• 외부 명세

• 수행 코드

검증 코드• 검증 코드

• 설계

독립된 배포 단위

• 쪼개어져 일부만 전달될 수 없음

Software Engineeringby Yang-Sae MoonPage 27

Page 28: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향컴포넌트의컴포넌트의 특성특성 (2/3)(2/3)

컴포넌트 명세는

• 클라이언트가 해당 컴포넌트를 사용할 수 있는 모든 인터페이스와 그 컴포넌• 클라이언트가 해당 컴포넌트를 사용할 수 있는 모든 인터페이스와 그 컴포넌

트가 조립될 환경에서 제공되어야 할 인터페이스를 나타낸다.

• 내부 충실적(self-contained)이어야 한다.

• 플러그 인 및 교환 가능하여야 한다.

인터페이스와 구현을 완전히 분리하여 인터페이스 명세는인터페이스와 구현을 완전히 분리하여, 인터페이스 명세는

컴포넌트가 무엇을 제공하고, 사용될 때 무엇을 요구하는지 정의

하여야 한다.하여야 한다.

컴포넌트 조립

• 조립될 수 있는 컴포넌트 선택

• 제공하는 인터페이스와 요구하는 인터페이스의 연결

Software Engineeringby Yang-Sae MoonPage 28

Page 29: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향컴포넌트의컴포넌트의 특성특성 (3/3)(3/3)

컴포넌트 조립

Software Engineeringby Yang-Sae MoonPage 29

Page 30: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향컴포넌트의컴포넌트의 종류종류 (1/2)(1/2)

Sun 진영: Java 컴포넌트

JavaBeans: Java 언어를 이용하여 컴포넌트를 구축하기 위한 컴포넌• JavaBeans: Java 언어를 이용하여 컴포넌트를 구축하기 위한 컴포넌

트 기술

• EJB(Enterprise JavaBeans): 기업의 비즈니스 로직을 서버로 옮기는• EJB(Enterprise JavaBeans): 기업의 비즈니스 로직을 서버로 옮기는

과정을 단순화한 서버 컴포넌트 모델

Microsoft 진영: COM+ 컴포넌트

• 컴포넌트 분야에서 Microsoft가 정의한 별도 표준• 컴포넌트 분야에서 Microsoft가 정의한 별도 표준

• 컴포넌트 소프트웨어의 기초는 인터페이스의 바이너리 표준인 COM으로 시작으로 시작

• COM 인터페이스는 IDL이라 불리는 인터페이스 정의 언어로 정의

Software Engineeringby Yang-Sae MoonPage 30

Page 31: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향컴포넌트의컴포넌트의 종류종류 (2/2)(2/2)

OMG 표준: CORBA 컴포넌트

OMG(Object Management Group)에서 다양한 플랫폼과 언어에서 객• OMG(Object Management Group)에서 다양한 플랫폼과 언어에서 객

체 사이의 분산 통신을 지원하기 위해 설계

• 다른 기종 사이에 수행되기 위하여 CORBA는 바이너리 보다는 원시• 다른 기종 사이에 수행되기 위하여, CORBA는 바이너리 보다는 원시

코드 표준을 사용함

Software Engineeringby Yang-Sae MoonPage 31

Page 32: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

We are now …We are now …소프트웨어 공학 동향

소프트웨어 공학의 역사

CASE (Computer Aided Software Engineering)

컴포넌트 기반 소프트웨어 개발컴포넌트 기반 소프트웨어 개발

웹 엔지니어링

소프트웨어 재사용

소프트웨어 리엔지니어링소프트웨어 리엔지니어링

실시간 소프트웨어 설계

Software Engineeringby Yang-Sae MoonPage 32

Page 33: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향웹웹 엔지니어링엔지니어링? (1/2)? (1/2)

목적: 고품질의 웹 기반 시스템을 성공적으로 개발하며 배치하고고품질의 웹 기반 시스템을 성공적으로 개발하며 배치하고

유지 보수하기 위하여 엔지니어링 및 경영 관리 원리를 확립

하고 사용하는 것하고 사용하는 것

웹 기반 응용 시스템의 특성

• 네트워크: 네트워크 상에 수행되며 다양한 클라이언트에 대하여 서비

스 해야 함

• 컨텐트 중심: End User에게 텍스트, 그래픽, 오비오, 비디오 컨텐트를

제공하는 것

• 계속적인 진화: 시간 단위로 수정됨

Software Engineeringby Yang-Sae MoonPage 33

Page 34: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향웹웹 엔지니어링엔지니어링? (2/2)? (2/2)

웹 엔지니어링의 작업 분류

단순 정보: 단순 네비게이션 및 링크를 제공하는 읽기 전용 컨텐츠• 단순 정보: 단순 네비게이션 및 링크를 제공하는 읽기 전용 컨텐츠

• 다운로드: 해당 서버에서 정보를 다운로드

커스텀 기능 사용자가 특정 목적으로 컨텐츠를 조작하는 기능• 커스텀 기능: 사용자가 특정 목적으로 컨텐츠를 조작하는 기능

• 인터액션: 채팅, 게시판 등을 이용한 그룹 사이의 의사 소통

사용자 입력 양식 입력이 주어지는 경우• 사용자 입력: 양식 입력이 주어지는 경우

• 트랜잭션 중심: 웹 상에서 트랜젹션(예: 상품 주문) 처리

• 서비스 중심: 응용 프로그램이 사용자에게 서비스(예: 이자율 계산) 제공

포탈 다른 웹 컨텐츠나 서비스에 대하여 정리하여 소개• 포탈: 다른 웹 컨텐츠나 서비스에 대하여 정리하여 소개

• 데이터베이스 접근: 대규모 데이터베이스 질의를 통한 정보 획득

Software Engineeringby Yang-Sae MoonPage 34

Page 35: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향웹웹 엔지니어링엔지니어링 프로세스프로세스 모델모델

공식화1 계획1 분석1 고객 평가1페이지 생성

엔지니어링1공식화1 계획1 분석1 고객 평가1및 테스트1

엔지니어링1

구조설계 네비게이션 설계 인터페이스 설계

컨텐트 설계 프로덕션

공식화2 계획2 분석2 고객 평가2페이지 생성및 테스트2

엔지니어링2공식화 계획 분석 객 평가및 테스트2

엔지니어링

Software Engineeringby Yang-Sae MoonPage 35

Page 36: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향웹웹 엔지니어링엔지니어링 프로세스프로세스 (1/2)(1/2)

공식화

웹 응용의 목표와 목적 범위를 정함• 웹 응용의 목표와 목적, 범위를 정함

계획

• 비용 예측, 리스크를 파악하여 개발 일정 정의

분석

• 기술적인 요구 확립, 그래픽 디자인에 대한 요구도 정의

엔지니어링엔지니어링

• 컨텐트 설계, 프로덕션 ( 예술적 감각이 있는 아트팀 수행)

• 구조 설계 네비게이션 설계 인터페이스 설계• 구조 설계, 네비게이션 설계, 인터페이스 설계

Software Engineeringby Yang-Sae MoonPage 36

Page 37: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향웹웹 엔지니어링엔지니어링 프로세스프로세스 (2/2)(2/2)

페이지 생성 및 테스트

자동화 도구를 이용하여 웹 페이지를 구축하는 작업• 자동화 도구를 이용하여 웹 페이지를 구축하는 작업

고객 평가

• 웹 엔지니어링 프로세스가 반복될 때마다 사용자의 평가가 필요

• 수용된 변경 요구는 다음 프로세스에 반영

Software Engineeringby Yang-Sae MoonPage 37

Page 38: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향웹웹 구조구조 설계설계 (1/3)(1/3)

선형 구조: 보여지는 순서가 정해져 있음

그리드 구조: 웹 페이지의 내용이 이차원적으로 분류된 구조

계층적 구조: 계층 구조의 수직적 분기를 따라 제어 흐름이계층적 구조: 계층 구조의 수직적 분기를 따라 제어 흐름이

내려가는 구조

네트워크 구조: 진정한 웹 구조. 웹 응용의 컴포넌트가 자유

자재로 제어를 넘겨서 네비게이션이 자유로운 구조

Software Engineeringby Yang-Sae MoonPage 38

Page 39: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향웹웹 구조구조 설계설계 (2/3)(2/3)

선형 구조 그리드 구조

Software Engineeringby Yang-Sae MoonPage 39

Page 40: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향웹웹 구조구조 설계설계 (3/3)(3/3)

계층 구조 네트워크 구조

Software Engineeringby Yang-Sae MoonPage 40

Page 41: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향네비게이션네비게이션 설계설계

네비게이션 경로:웹 내부의 내용과 서비스를 접근할 수 있는 경로웹 내부의 내용과 서비스를 접근할 수 있는 경로

네비게이션 사용자 파악네비게이션 사용자 파악

• 사용자의 목적과 역할에 따라, 네비게이션 방법이 다름

• 예: 일시 방문자 등록된 고객 특별 사용자 등• 예: 일시 방문자, 등록된 고객, 특별 사용자 등

네비게이션 링크 파악네비게이션 링크 파악

• 텍스트 링크, 아이콘, 버튼, 이미지 등 여러 옵션 중 가장 알맞은 네비

게이션 링크 파악게이션 링크 파악

• 텍스트 기반인 경우, 네비게이션 링크를 표시할 색상, 이미 방문한 링

크 색상 등을 결정

Software Engineeringby Yang-Sae MoonPage 41

Page 42: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향인터페이스인터페이스 설계설계 가이드가이드

작은 오류라도 사용자가 웹 사이트를 떠나게 할 수 있다.

모니터를 읽는 속도는 인쇄물 읽는 속도보다 25% 정도 느리다모니터를 읽는 속도는 인쇄물 읽는 속도보다 25% 정도 느리다.

가급적 “공사중”이란 표시는 피한다.

사용자는 스크롤 없이 한 화면에 모든 내용이 표시되기를 원한다.

네비게이션 메뉴와 헤드바는 일관성 있게 설계하고, 모든 페이지에서 보

이 설계한다이도록 설계한다.

미학적인 부분이 기능적인 부분을 대신할 수는 없다. (예를 들어, 반응

시간이 짧은 “간단한 버튼”이 반응 시간이 오래 걸리는 “예쁜 버튼”시간이 짧은 “간단한 버튼”이 반응 시간이 오래 걸리는 “예쁜 버튼”

보다 효과적일 수 있다.)

네비게이션 옵션은 초보자에게도 분명하고 쉽게 이해할 수 있어야 한다네비게이션 옵션은 초보자에게도 분명하고 쉽게 이해할 수 있어야 한다.

Software Engineeringby Yang-Sae MoonPage 42

Page 43: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향웹웹 테스트테스트 과정과정

웹 응용에 포함된 컨텐츠에 오류가 있는지 살핀다. (책의 내용에 오타, 탈자가 있는지를 조사하는 것과 유사하다.)자가 있 지 사하 것과 유사하다 )

네비게이션 오류를 찾아내기 위해 웹 설계 모델을 검토한다. (설계 내용

을 보고, 네비게이션이 설계된 데로 잘 동작하는지 시험한다.), 동 )

웹 페이지를 하나씩 단위 테스트한다.

통합 테스트를 수행한다 (웹의 구조를 감안하여 순서를 정하고 그 순통합 테스트를 수행한다. (웹의 구조를 감안하여, 순서를 정하고, 그 순

서에 따라서 통합 테스트를 수행한다.)

웹 응용이 여러 환경에서 잘 수행되는지 테스트한다 (다양한 운영체제 웹 응용이 여러 환경에서 잘 수행되는지 테스트한다. (다양한 운영체제, 브라우저, 하드웨어 플랫폼 등…)

...

Software Engineeringby Yang-Sae MoonPage 43

Page 44: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

We are now …We are now …소프트웨어 공학 동향

소프트웨어 공학의 역사

CASE (Computer Aided Software Engineering)

컴포넌트 기반 소프트웨어 개발컴포넌트 기반 소프트웨어 개발

웹 엔지니어링

소프트웨어 재사용

소프트웨어 리엔지니어링소프트웨어 리엔지니어링

실시간 소프트웨어 설계

Software Engineeringby Yang-Sae MoonPage 44

Page 45: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향소프트웨어소프트웨어 재사용재사용

새로운 개념은 아님

• 함수 라이브러리(X Window, Math 등)함수 라이 러리( , 등)

• 원시코드가 주로 재사용

정의정의

• “이미 개발한 시스템과 비슷한 새 시스템의 개발이나 유지보수에 드

는 노력을 줄이기 위하여 여러 가지 경험과 지식을 재적용하는 것”는 노력을 줄이기 위하여 여러 가지 경험과 지식을 재적용하는 것

재사용 대상

응용 분야에 관한 지식• 응용 분야에 관한 지식

• 개발 경험

• 설계에 관한 결정

• 시스템의 구조에 관한 지식

Software Engineeringby Yang-Sae MoonPage 45

• 요구 분석 사항, 설계, 문서

Page 46: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향소프트웨어소프트웨어 부품부품

서브루틴 라이브러리

• GUI 라이브러리 함수라이 러리 함수

• 수치 계산 함수

코드 블럭코드 블럭

• 블랙 박스와 같은 재사용 코드 블록

파라미터를 지정하여 인스턴스화• 파라미터를 지정하여 인스턴스화

Modular Programming

Ada의 패키지

객체 부품객체 부품

• 재사용과 확장이 용이

Software Engineeringby Yang-Sae MoonPage 46

Page 47: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

We are now …We are now …소프트웨어 공학 동향

소프트웨어 공학의 역사

CASE (Computer Aided Software Engineering)

컴포넌트 기반 소프트웨어 개발컴포넌트 기반 소프트웨어 개발

웹 엔지니어링

소프트웨어 재사용

소프트웨어 리엔지니어링소프트웨어 리엔지니어링

실시간 소프트웨어 설계

Software Engineeringby Yang-Sae MoonPage 47

Page 48: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향소프트웨어소프트웨어 리엔지니어링리엔지니어링

역공학

• 완제품으로부터 설계를 해독해 내는 작업완제품 부터 설계를 해독해 내는 작업

• 하드웨어에서의 역공학 복제

• 소프트웨어에서의 역공학 유지보수, 기능 향상소프트웨어에서의 역공학 유지보수, 기능 향상

목적목적

• 스파게티 소스, 암호화된 소스, 중복된 소스 Good Source

소프트웨어 유지보수 비용을 줄임• 소프트웨어 유지보수 비용을 줄임

• 노후 시스템(legacy system)을 새롭게 변혁(renovation)

Software Engineeringby Yang-Sae MoonPage 48

Page 49: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향아파트아파트 리모델링리모델링??

Software Engineeringby Yang-Sae MoonPage 49

Page 50: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향리엔지니어링의리엔지니어링의 추상화추상화 수준수준

요구분석설 계

구분석(제약사항, 목적 등) 설 계 구 현

정공학 정공학

역공학 역공학

설계복구 설계복구

재공학 개선재공학(개선)재공학(개선)

재구조화 재구조화 재구조화

Software Engineeringby Yang-Sae MoonPage 50

Page 51: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향리엔지니어링의리엔지니어링의 정의정의

역공학(Reverse Engineering): 시스템을 이루는 부품을 찾아

내고 관계를 파악하며 다른 형태로 표현하기 위하여 대상 시내 관계를 파악하며 다른 형태 현하기 위하여 대상 시

스템을 분석하는 과정

재구성(R t t i ) 대상 시스템의 기능은 변화 없이 같재구성(Restructuring): 대상 시스템의 기능은 변화 없이 같

은 추상 수준에서 표현 형태를 바꾸는 작업

리엔지니어링: 대상 시스템을 새로운 요구에 맞도록 개조

(renovation)하는 작업( )하는 작업

Software Engineeringby Yang-Sae MoonPage 51

Page 52: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향리엔지니어링의리엔지니어링의 목적목적

복잡한 시스템을 다루는 방법

• 역공학 도구: 코드에서 원하는 정보를 추출 (예를 들어, 설계도?)역공학 구 에서 원하는 정 를 추출 (예를 들어, 설계 )

다른 뷰의 생성

여러 가지 다양한 표현으로 원시코드를 이해• 여러 가지 다양한 표현으로 원시코드를 이해

잃어버린 정보를 회복

• 잦은 변경에 의하여 잃어버린 정보를 복구

부작용의 발견

• 원래의 요구사항과 비교 검토

고수준의 추상을 합성고수준의 추상을 합성

재사용이 용이

Software Engineeringby Yang-Sae MoonPage 52

Page 53: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향리엔지니어링리엔지니어링 기술기술 (1/2)(1/2)

리엔지니어링 기술의 접근 방법

• 단순한 프로그램 제어의 재구조화단순한 램 제어의 재구 화

• 노후 시스템의 설계 사양을 복원

• 변경이 힘든 경우, 새로운 시스템의 부분 요소로 캡슐화변경이 힘든 경우, 새로운 시스템의 부분 요소로 캡슐화

리엔지니어링 기술의 특성리엔지니어링 기술의 특성

• 논리적 모델링

슬라이싱( li i )• 슬라이싱(slicing)

비용 절감 효과에 대한 예측

Software Engineeringby Yang-Sae MoonPage 53

Page 54: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향리엔지니어링리엔지니어링 기술기술 (2/2)(2/2)

데이터베이스 리엔지니어링

• DB 패러다임의 변화 (데이터 자체의 진화 DBMS의 진화 )• DB 패러다임의 변화 (데이터 자체의 진화, DBMS의 진화, …)

• 서로 다른 DB 시스템간의 개발 (Oracle vs. MS SQL)

사용자 인터페이스 리엔지니어링

• 그래픽 중심의 사용자 인터페이스로의 변환그래픽 중심의 사용자 인터페이스로의 변환

분산 시스템으로의 리엔지니어링

• 메인 프레임에서 분산 클라이언트/서버 시스템으로의 전환

객체지향 시스템으로의 리엔지니어링객체지향 시스템으로의 리엔지니어링

• 절차 중심의 노후 시스템을 객체 지향 시스템으로 변환

Software Engineeringby Yang-Sae MoonPage 54

Page 55: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

We are now …We are now …소프트웨어 공학 동향

소프트웨어 공학의 역사

CASE (Computer Aided Software Engineering)

컴포넌트 기반 소프트웨어 개발컴포넌트 기반 소프트웨어 개발

웹 엔지니어링

소프트웨어 재사용

소프트웨어 리엔지니어링소프트웨어 리엔지니어링

실시간 소프트웨어 설계

Software Engineeringby Yang-Sae MoonPage 55

Page 56: 소프트웨어공학동향 - Kangwonysmoon/courses/2010_2/se/10.pdf · 2016-06-02 · 소프트웨어공학동향 In this chapter … 소프트웨어공학은어떻게발전했는지살펴보고,

소프트웨어 공학 동향실시간실시간 소프트웨어소프트웨어 설계설계

실시간 소프트웨어

• 프로그램 설계에 있어서 시간과 순서의 개념이 매우 중요한 경우램 설계에 있어서 시간과 순서의 개념이 매우 중 한 경우

• 예) 환자 감시 시스템, 공정 제어 등

실시간 시스템에서의 이슈실시간 시스템에서의 이슈

• 시간과 관련된 시스템의 성능

신뢰도 오류에서의 회복• 신뢰도, 오류에서의 회복

실시간 시스템 설계 기법

• 연속적으로 수집되거나 만들어지는 자료 흐름

• 시스템 안에서 전달되는 제어 정보와 관련된 제어 처리

• 멀티태스킹 환경에서 일어나는 변환의 인스턴스

• 시스템의 상태와 상태 천이 과정

Software Engineeringby Yang-Sae MoonPage 56