/
소프트웨어 공학 소프트웨어 공학

소프트웨어 공학 - PowerPoint Presentation

lindy-dunigan
lindy-dunigan . @lindy-dunigan
Follow
361 views
Uploaded On 2016-03-30

소프트웨어 공학 - PPT Presentation

Software Engineering 소개 문양세 강원대학교 IT 대학 컴퓨터과학전공 Page 2 소프트웨어 공학을 배우기에 앞서서 소프트웨어 및 소프트웨어 시스템에 대해서 정의해보고 ID: 271756

system page software chapter page system chapter software swebok embedded application ieee information knowledge dependability engineering

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "소프트웨어 공학" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

소프트웨어 공학

(Software Engineering

)

소개

문양세

강원대학교

IT

대학 컴퓨터과학전공Slide2

Page

2

소프트웨어 공학을 배우기에 앞서서,소프트웨어 및 소프트웨어 시스템에 대해서 정의해보고,소프트웨어 위기와 이에 따른 소프트웨어 공학의 필요성을 생각해 본다.또한, 좋은 소프트웨어란 무엇인지 정의해보고,소프트웨어 공학에서 사용하는 주요 모형들을 살펴본 후,소프트웨어 개발에 영향을 미치는 요소들을 생각해 본다.We will cover …소프트웨어와 시스템다루는 문제도전 과제접근 방법근본 지식

소개

In this chapter …Slide3

Page

3

소프트웨어와 우리 생활

소개

의존성

(dependability)Slide4

Page

4

In this chapter …1.1 소프트웨어1.2 다루는 문제1.3 도전 과제1.4 접근 방법1.5 근본 지식소개Slide5

Page

5

실생활과 소프트웨어(컴퓨터)리니지? 스타크? 서든어택? 테일즈러너? 블소?  Oh, NO!일상사에서… 공과금 고지서, 항공기 예약/발권, 병원 기록, 초본/등본, 스마트폰, …학교로 보면… 수강 신청, 성적 입력 및 열람, 학사 관리

, …정보 혁명의 토대는 컴퓨터이며

, 그 잠재력은? 물론,

소프트웨어이다.소프트웨어는 과거 “편리” 추구에서 현재는 “생존”에 필수적 요소가 되어가고 있다.정치, 경제(1차, 2차 3차 산업 공통), 사회, 교육, 국방, 예술, 의료, 오락, …경쟁에서의 승리  제품의 적기 공급  제품?  소프트웨어 자체 혹은 내재가 기본…소프트웨어의 결함  생명과 재산에 치명적

결과

우주왕복선 폭발

지진해일

(

쓰나미

)

예보

, …

소프트웨어의 중요성

소개Slide6

Page

6

콜롬비아, 챌린저호 폭발소개Slide7

Page

7

NEIS 오류소개Slide8

Page

8

소프트웨어 정의협의: 프로그램 자체광의: 프로그램 + 프로그램의 개발, 운용, 보수에 필요한 정보 일체(소프트웨어 생산 결과물 일체)소프트웨어 생산소프트웨어는 프로그램의 동적인 실체프로그램은 형식 언어로 표현된 지적 노동의 결과물제조업 vs. 서비스업(소프트웨어는 제작이 아니라 창조적 노력이 포함된 개발)닳아 없어지는 것이 아니라 소용없어 못쓰게 됨논리적인 요소로 구성

(유지보수가 어려움)

소프트웨어 산업(2012년 국내

SW 시장은 250억달러 규모)소프트웨어의 정의소개Slide9

Page

9

소프트웨어 산업 (1/3)소개Slide10

Page

10

소프트웨어 산업 (2/3)소개Slide11

Page

11

소프트웨어 산업 (3/3)소개Slide12

Page

12

비가시성(Invisibility) 테스트 가능(Testability)복잡성(Complexity)  특히 제3자가 보았을 경우변형성(Conformity)/변경성(Changeability)장수(Longevity)  죽지 않는다. 단지 사라질 뿐이다.복제 가능(Duplicability)  생명공학의 모태?응용에 의존(Application dependability)

 일반적으로,

몇 개 핵심 부품을 만들어

조립해 쓸 수가 없다.소프트웨어의 특성소개Slide13

Page

13

유기적으로 상호 작용하는 객체들의 모임S/W는 독립적으로 존재하는 것이 아니라 컴퓨터를 기반으로 여러 시스템이 유기적인 관계를 맺고 있다.은행의 업무 전산화 예제: 현금 자동 인출기, 중앙 컴퓨터, 계좌 DB, 은행 업무 처리 절차,입출금 전표, 은행원, …특징시너지 효과: 독립적인 의미를 갖지 않고, 통합되었을 때 의미를 가짐역동적으로 발전, 변경상충되는 요구와 이해 관계의 절충 (최적의 모범 답안이 아닌 절충안에 해당) 교통체계

소프트웨어 자체도 하나의 시스템임소프트웨어 시스템

소개Slide14

Page

14

자료의 분류, 저장, 검색에 초점데이터베이스를 대화식(interactive)으로 접근조직의 문제 해결을 위한 도구정보 시스템의 예제항공권 예약 시스템신용 카드 검색 서비스뱅킹 시스템정보 시스템의 특징대규모 자료를 관리하며, (일반적으로) 정적이 아님시스템 분석과 유지보수가 중요함MIS (Management Information System, 경영 정보 시스템) [

위키]운영,

관리, 의사결정을 위하여 정보를 제공하는 시스템DSS(Decision Support System), KDD(Knowledge Discovery in Database)

정보 시스템 (Information System)소개Slide15

Page

15

사건을 감지하여 처리하고 자동적으로 보고센서의 감지 (Ubiquitous Sensors)제어 기기의 상태 보고운영자의 입력 처리사용자 및 운영자 인터페이스제어 시스템 예제교통 제어공정 제어  컨베이어 벨트 제어수치 제어의료 시스템  초음파 검사, 메디슨…무기 ( DARPA, FBI, … 테러 방지)항공 제어

재난, 방재 산업

 산불 감지, 지진 감지

제어 시스템 (Control System)소개Slide16

Page

16

주된 기능이 계산이 아닌 시스템의 구성 요소의 일부(A system that is logically incorporated in a larger system whose primary function is not computation.)탑재 시스템 예제전자 기계 장치, 공정 제어 시스템비행기 유도, 스위칭 시스템(교환기 등)환자 감시 시스템, 레이다 추적 시스템탑재 시스템 특징대규모, 장기 사용, 테스트하기 어려움인터페이스가 복잡, 비동기, 병렬, 분산

대규모 자료를 접근, 변경, 출력

실시간 제어 인터페이스

엄격한 요구: 실시간 반응, 고장에 대한 안전, 신뢰성(오리지널) 탑재 시스템 (Embedded System)소개Slide17

Page

17

소형 디바이스에 들어가는 소프트웨어PDA, 휴대폰용 운영체제, 게임, 영상 재생, …소형 센서에 탑재되는 소프트웨어…Embedded Software를 어떻게 배워~프로그램(C, Java, Assembly, …)을 잘하고,운영체제(Windows, UNIX/Linux), DBMS를 잘 이해하는 등의기본에 충실하면 쉽게 적응할 수 있어요…안드로이드를 배워 봅시다.

(요즘의) Embedded System

소개Slide18

Page

18

기능적 분류응용 소프트웨어(Application Software): 증권 처리, 학사 관리, 워드 프로세서, …시스템 소프트웨어(System Software): 운영체제, DBMS, Compiler, …개발 과정에 따른 분류PrototypeProduct: 상품화 이전이나 완성된 소프트웨어Package: 시험을 거쳐서 상품화된 소프트웨어(주문형 소프트웨어: 고객의 목적에 맞도록 패키지된 소프트웨어)하드웨어 환경에 따른 분류

MainframeParallel Processing or Distributed Processing

PC & Workstation, Fault tolerant system모바일

디바이스  스마트폰소프트웨어의 분류 (1/2)소개Slide19

Page

19

적용 분야에 따른 분류통신용, 프로그래밍 언어, 사용자 인터페이스, 데이터베이스, 분산처리, …문서 작성, 거래 처리, 개발 도구, 멀티미디어, …전자 정부, 전자 상거래, 가상 도서관, …소프트웨어의 분류 (2/2)소개Slide20

Page

20

네 가지 중요 성질서브 시스템: 밀접한 연관이 있는 여러 서브시스템으로 구성기능적 분할: 규모가 작은 부속 시스템(서브 시스템)들로 나눌 수 있음시스템 경계: 시스템과 주변 환경을 구분하는 경계, 입력과 출력이 만나는 곳자동화 경계: 자동화된 부분과 수동작업 부분을 나누는 경계시스템소개Slide21

Page

21

In this chapter …1.1 소프트웨어1.2 다루는 문제1.3 도전 과제1.4 접근 방법1.5 근본 지식소개Slide22

Page

22

제품으로 만든 소프트웨어견고한(industrial strength) 소프트웨어학생이나 아마추어가 만든 소프트웨어 수준이 아님이식의 용이함, 사용의 편리함 등 품질 요소가 고려되어야 함견고하지 않으면, 사용자 불편을 넘어서 재산과 인명에 피해를 줄 수 있음소프트웨어 (개발의) 문제점고비용지연과 낮은 신뢰도

유지보수와 재작업

소개Slide23

Page

23

(1) 고비용LOC로 계산한 소프트웨어 비용 사례(작은 프로그램도) 5만 라인은 넘음  5만 라인은 4천만원 내지 1억 2천만원 정도의 비용이 듦 (인건비)1억원의 소프트웨어가 1천만원 정도의 하드웨어에서 실행됨

소프트웨어 위기

소개Slide24

Page

24

(2) 지연과 낮은 신뢰도계획에서 벗어난 컴퓨터 관련 개발 프로젝트600여 회사를 조사하였더니 35% 이상 예상대로 작동하지 않는 사례방위산업 보고: 70% 이상이 소프트웨어 오류에서 기인아폴로 로켓의 초기 실패도 소프트웨어에서 기인자동차 급발진 사고도 소프트웨어 문제일 가능성이 높음 다른 요소(하드웨어)와 다름전기, 기계 시스템:

노후화에 의한 물리적 특성에 의해 오류가 발생함소프트웨어: 노후화에 의한 것이 아니며

, 주로 설계

, 개발 과정에 유입된 오류에 의한 것챌린저호 사고: 소프트웨어 결함에서 기인소개Slide25

Page

25

(3) 유지보수와 재작업소프트웨어의 유지보수가 필요한 이유여느 제품처럼 부품이 마모되거나 교체할 필요가 있어서 유지보수 하는 것이 아님시스템에 남아 있는 오류가 있기 때문에 유지보수가 필요함많은 오류가 시스템 가동된 후에, 혹은 오랜 사용 후에 발견됨 (오류가 아니더라도) 소프트웨어는 자주 변경됨소프트웨어는 자주 업그레이드 됨 (기능 및 서비스 추가)하드웨어 등의 동작 환경이 변할 경우도 변경이 필요함코드에 (사용자 및 개발자의) 의도가 잘 드러나지 않음

시간이 지날 수록 의도가 숨겨지며, 여러 사람이 관련된 경우 특히 그러함

소개Slide26

Page

26

소프트웨어 개발의 또 다른 문제점개발 예산이 초과되고, 일정이 지연되는 경우가 많다.개발 일정과 비용 예측이 부정확하다.과거 프로젝트에 대한 경험이 잘 축적되지 않을 뿐 아니라, 과거 데이터가 현재에 잘 적용되지 않는 경우가 많다.프로그래머 개인 역량에 따라 소프트웨어 개발 성패가 좌우된다.프로그래머 개인의 능력과 경험이 중요하여, 작업의 정량적인 분석이 어렵다.잘 키운 슈퍼 프로그래머 하나가 열 … 안 부럽다.

소프트웨어 품질을 평가하기가 어렵다.체계적인 시험이 없으면

, 운영 중에 많은 오류가 발생한다.

다른 공산품과 같은 불량품 관리, 품질 보증에 대한 확실한 정량적 개념이 없다. 다른 공산품의 경우, “불량률 0에 도전,” “무재해 100만시간 달성 목표”소개Slide27

Page

27

In this chapter …1.1 소프트웨어1.2 다루는 문제1.3 도전 과제1.4 접근 방법1.5 근본 지식소개Slide28

Page

28

소프트웨어 공학소프트웨어 공학의 정의질 좋은 소프트웨어를 경제적으로 생산하기 위하여 공학, 과학 및 수학적 원리와 방법을 적용하는 것 - Watts Humphrey, SEI소프트웨어의 개발, 운용, 유지보수 및 소멸에 대한 체계적인 접근 방법 - IEEE Computer Society품질, 효율, 비용, 인정에 관한 공학적인 접근 원리 - F. Brooks소프트웨어 공학의 목표품질 좋은 소프트웨어를

최소의 비용으로계획된 일정에 맞추어 개발한다.

 품질(Quality), 생산성

(Productivity)소개Slide29

Page

29

다루는 문제사용자의 요구를 만족시키기 위하여, 소프트웨어를 체계적으로 개발하는 것소프트웨어 공학에서 다루는 주요 요소규모 문제품질과 생산성일관성과 재현성변경

소개Slide30

Page

30

(1) 규모 문제수십 만, 수백 만 줄의 프로그램은, 수백 줄의 프로그램을 개발하는 데 사용하는 방법과는 다른 방법을 적용해야 함엔지니어링 식 접근 방법 – 방법, 절차, 도구 사용소개Slide31

Page

31

(2) 품질과 생산성엔지니어링 작업에서는 비용, 일정, 품질과 같은 변수가 중요비용: Man-Month로 측정(인건비와 직결)일정: 짧은 time-to-market (기술의 급격한 발전에 따라 갈수록 짧아짐)품질

소개Slide32

Page

32

(3) 일관성과 재현성일관성프로젝트의 결과를 어느 정도 정확하게 예측가능더 높은 품질의 제품을 생산 (기관/회사는 일관성 있는 품질 수준을 유지해야)프로세스의 표준화가 필요ISO 9001CMM(Capability Maturity Model)재현성개발하는 시스템 마다 높은 품질과 생산성을 갖도록 만드는 것개발 능력,

결과의 재현성  일관성과 유사한 개념

소개Slide33

Page

33

(4) 변경소프트웨어는 계속 진화하고 변경됨비즈니스 환경 및 소프트웨어 기술도 빠르게 발전변경을 조절하고 수용하는 것이 또 하나의 과제소개Slide34

Page

34

In this chapter …1.1 소프트웨어1.2 다루는 문제1.3 도전 과제1.4 접근 방법1.5 근본 지식소개Slide35

Page

35

접근 방법프로젝트를 수행하는 동안 얻은 품질과 생산성은 여러 가지 요인에 의해 좌우됨프로젝트 삼각 균형(triangle seesaw)높은 품질과 생산성은 좋은 기술, 좋은 프로세스(혹은 방법), 잘 훈련된 인력을 사용하여 얻을 수 있음소프트웨어 공학의 기본 접근법소프트웨어를 개발하는 프로세스를 개발된 제품, 즉 소프트웨어와 분리함적절한 “소프트웨어 프로세스”

의 설계와 관리는 소프트웨어 공학의 중요 연구 목표임

소개Slide36

Page

36

단계적 프로세스소개제2장에서 소개할 폭포수 모형과 유사Slide37

Page

37

일반적인 개발 단계소개단계초점

주요작업과 기술

결과물

분석

시스템을

위하여 무엇을 만들 것인가

?

1.

분석 전략 수립

(3

)

2.

요구 결정

(3

)

3.

사용 사례 분석

(4

)

4.

구조적 모델링

(5

)

5.

동적 모델링

(6

)

요구 명세서

설계

시스템을

어떻게 구축할 것인가

?

6.

설계 전략 수립

(7

)

7.

아키텍처 설계

(7

)

8.

인터페이스 설계

(9

)

9.

프로그램 설계

10.

데이터베이스

,

파일 설계

(8

)

설계 명세서

구현

시스템의

코딩과 단위 시험

11.

프로그래밍

(10

)

12

.

단위

테스팅

(10

)

13

.

시스템 안정화 및 유지보수

(11

)

새 시스템

,

유지보수 계획

테스팅

시스템이

요구에 맞게 실행되나

?

14.

통합

테스팅

(2

)

15.

시스템

테스팅

(2

)

16.

인수

테스팅

(2

)

17.

시스템의 설치

(2

)

18.

프로젝트 관리 계획

테스팅

결과 보고서Slide38

Page

38

In this chapter …1.1 소프트웨어1.2 다루는 문제1.3 도전 과제1.4 접근 방법1.5 근본 지식소개Slide39

Page

39

SE와 다른 분야와의 관계소개Slide40

Page

40

SWEBOK (1/2)소개SWEBOK: Software Engineering Body of Knowledge [IEEE, 2004]Slide41

Page

41

SWEBOK (2/2)소개Slide42

Page

42

In this chapter …1.1 소프트웨어1.2 다루는 문제1.3 도전 과제1.4 접근 방법1.5 근본 지식소개Slide43

Page

43

Homework #1소개

Related Contents


Next Show more