• 검색 결과가 없습니다.

제 1 장 소프트웨어 공학의 개요

N/A
N/A
Protected

Academic year: 2022

Share "제 1 장 소프트웨어 공학의 개요"

Copied!
14
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

1-1

제 1 장

소프트웨어 공학의 개요

¾ 내 용

1.1 소프트웨어 공학의 역사 1.2 소프트웨어의 특징

1.3 국내 소프트웨어 산업 현황 1.4 요약

연습 문제

1.1 소프트웨어 공학의 역사

¾ 소프트웨어의 정의

4프로그램과 프로그램의 개발, 운용, 보수에 필요한 관련 정보의 일체

¾ 소프트웨어 공학의 정의

4소프트웨어 개발에 공학적인 측면을 적용하는 것

( IEEE 컴퓨터학회 : 소프트웨어의 개발, 운용, 유지 보수를 위한 체계적인 접근 방법 )

¾ 소프트웨어 공학의 목표

4사용자의 요구를 만족시키면서 , 주어진 시간에 최소의 비용으로 고품질 소프트웨어의 생산

(2)

1-3

¾ 소프트웨어의 진화

4소프트웨어의 생산성과 품질을 향상시키기 위함

[그림 1.1] 소프트웨어의 진화

1950 1960 1970 1980 1990 2000

• 배치 기반 S/W

• 제한된 목적의 S/W

• 높은 유지 보수 비용

• 다중 사용자 기반 S/W

• 실시간 S/W

• 데이터베이스의 사용

• 공용 목적의 S/W의 생산

• 분산 시스템

• 가전제품 S.W

• 저 비용 H.W의 개발

• 강력한 데스크탑 시스템

• 객체지향 기반 S/W

• 전문가 시스템 S/W

• 병렬 처리 S/W

• 네트워크 컴퓨터

• 컴포넌트 지향기반 S/W

• 도메인 지향기반 S/W

• 웹 기반 S/W

2010

¾ 소프트웨어 공학의 역사

1970 1980 1990 2000

• 구조적 프로그래밍 (구조적 코딩,

하향식 프로그래밍, 정보 은닉, 추상화)

• 설계 방법론 대두 ( 시스템의 설계 및

명세화가 요구)

• 소프트웨어 개발의 자동화 시도 ( 코드 자동 생성, 객체

지향설계 등을 지원)

• 분석 및 설계 통합 도구의 개발 ( 대화식 및 그래픽

지원 도구, 사용자 인터페이스의 발전)

• 객체 지향 소프트웨어 공학 (소프트웨어의 재사용,

분산 객체지향 소프트웨어의 구조 및 설계 지원)

• 컴포넌트 지향 소프트웨어 공학 ( DCOM, CORBA, … )

• 도메인 지향 소프트웨어 공학

(3)

1-5

1.2 소프트웨어의 특징

¾소프트웨어 특징

(1) 소프트웨어는 기존의 생산 과정과는 다른 생산 과정을 가진다.

- H/W와 S/W 모두 잘 정의된 설계로부터 좋은 제품이 생산되지만, H/W는 생산 과정에서 S/W 에서 발생할 수 없는 품질 문제를 발생 시킬 수 있음

- 극히 적은 비용으로 복제 및 대량 생산이 가능 - 실체의 감지가 어려움.

- H/W와 S/W 모두 생산자에 의존적이지만, 생산자들의 관계와 작 업 내용은 차이가 많이 남

-노동 집약적이며 완전 자동화가 어려움 - 제품의 생산에 대한 접근 방법도 많이 차이가 남

¾ 소프트웨어의 특징 (계속) (2) 소프트웨어는 노후 되지 않는다.

-H/W는 초기의 설계나 제조의 결함에 의하여 고장이 발생할 가능성이 큼 - 초기에 고장이 없으면, 일정기간 동안 고장 발생은 매우 낮음

- 시간이 지남에 따라 H/W에 누적된 먼지, 진동, 남용, 온도의 변화, 그 외 많은 외 적인 요소에 의하여 고장 발생률이 높아짐

- S/W는 H/W에 영향을 미치는 외부 요소에 영향을 받지 않음 - 초기에 발견되는 에러는 소프트웨어의 고장률을 높이게 함

- 에러의 수정 후 S/W의 고장률은 거의 발생하지 않는다는 것은 희망일 뿐임 - 유지보수에 의한 결함 발생 가능성이 높아짐에 따라 S/W의 고장률도 높아짐

(4)

1-7

¾소프트웨어의 특징 (계속)

시간 [그림 1.3] 소프트웨어의 고장률 : 유지보수 시점

시간 고장률

[그림 3]

하드웨어의 고장률

이상형 현실 유지 보수에 따르는 고장률의 증가 고장률

¾소프트웨어의 분류 4시스템 소프트웨어

다른 S/W를 서비스하기 위하여 제작된 프로그램의 집합 4실시간 소프트웨어

외부에서 입력되는 이벤트를 모니터링, 분석, 제어하는 S/W로서, 주어진 짧은 시간에 응답을 줄 수 있어야 한다.

4비즈니스 소프트웨어

비즈니스 업무 처리를 위한 S/W로서, 월급, 회계, 창고 관리 등을 지원하는 S/W 4공학 및 과학 소프트웨어

수치 계산을 주로 처리하는 S/W로서, 천문학, 분자 생물학, 자동 공정, 우주선 궤 도 계산, 시뮬레이션 등을 지원하는 S/W

(5)

1-9

¾소프트웨어의 분류(계속)

4임베디드(Embedded) 소프트웨어

램에 저장되어 제한된 특정 기능을 제어하는 S/W로서, TV나 전자 오븐을 위한 버튼 제어, 자동차 연료 제어계 기능, 브레이크 시스템 등을 지원

4개인 컴퓨터 소프트웨어

문서 작성기, 스프레드 쉬트, 그래픽스, 오락, 데이터베이스 관리, 재정 관리, 외부 네트워크의 접속 등을 지원하는 S/W

4인공지능 소프트웨어

주어진 문제를 해결하기 위하여 수치적인 방법 이외로 해결하는 S/W로서, 지식 기반의 전문가 시스템, 패턴 인식, 게임, 신경망뮬레이션 등을 지원하는 S/W

¾소프트웨어 개발의 어려움 4조합 가능한 기능이 많아 복잡함 4기능 변경 요구가 자주 발생

4소프트웨어의 구조와 처리과정을 볼 수 없음 4개발 진행 과정의 파악이 어려움

4다른 공학에 비하여 상대적으로 소프트웨어 공학의 이론 체계가 미성숙

¾소프트웨어 공학의 필요성

4신뢰성 있는 고품질 소프트웨어 시스템의 개발 4효율적인 소프트웨어 개발 방법론의 개발

(6)

1-11

4프로그래밍 기법만으로 소프트웨어를 개발 할 경우(a)보다 소 프트웨어 공학 기법에 의한 소프트웨어의 개발(b) 이 개발 후 유지 보수 비용이 줄어듬

¾ 소프트웨어 공학의 필요성 (계속)

[그림 1.4] 소프트웨어 공학의 필요성 프로그래밍

기법 유 지 보 수

분 석 설 계 구현, 시험

유지 보수

(a) (b)

¾ 소프트웨어 품질 요소

4소프트웨어 개발 시 고려되어야 할 소프트웨어 품질 요소 4발주자 측면

- 최소 비용, 생산성, 융통성 4사용자 측면

- 기능의 정확성, 이해 용이성, 사용 용이성, 일관된 통합 4유지 보수자 측면

- 이식성, 재사용성, 유지 보수성, 상호 운용성 4모든 측면에서 효율성과 신뢰성이 품질에 영향을 미침

(7)

1-13

¾소프트웨어 품질 요소(계속) (1) 정확성

- 사용자의 요구에 맞게 정확히 수행되는지를 나타내는 요소 - 정확성의 확인 : 실험 및 요구 분석의 형식적 표현 분석을 사용 (2) 신뢰성

- 주어진 기간 동안 소프트웨어가 정상적으로 작동되는지를 나타내는 요소 - 정확성이 높을 수록 신뢰성 또한 향상됨

(3) 사용 용이성

- 사용자가 소프트웨어를 얼마나 잘 사용할 수 있는지를 나타내는 요소 - 사용자 인터페이스는 사용 용이성에 많은 영향을 주며, 정확성 및 성능에

기본적으로 영향을 받음

- 인간적 요소(Human factor)에 대한 품질 요소

¾소프트웨어 품질 요소(계속) (4) 유지보수성

- 만들어진 소프트웨어의 오류 수정 및 제품 기능의 향상 정도를 나타내는 요소

- 모듈화가 잘 된 소프트웨어는 유지보수가 용이

- 소프트웨어의 수명을 보존하기 위하여 신중한 설계와 변경이 필요 (5) 재사용성

- 소프트웨어를 다른 분야 소프트웨어 개발 시 사용 가능한 정도를 나타내는 요소

(8)

1-15

¾ 소프트웨어 품질 요소(계속) (6) 생산성

- 소프트웨어 생산 과정의 효율적 생산 정도를 나타내는 요소 - 생산성에 영향을 미치는 요소

① 프로그래머의 능력

개인의 기본 능력 및 응용 분야에 대한 경험이 필요

② 팀 의사 전달

프로젝트의 조직이 복잡해지면서, 개발자, 유지보수자, 사용자 간의 상호작용 관계가 많아짐으로 체계적인 팀 조직이 필요

③ 제품의 복잡도

소프트웨어의 제품 개발과 유지보수에 필요한 노력은 그 규모와 복잡도에 비선형적으로 비례

¾ 소프트웨어 품질 요소(계속) (6) 생산성(계속)

④ 기술 수준

소프트웨어 개발에 사용되는 기술로써, 개발 모델, 개발 도구, 프로그래 밍 언어 등에 대한 숙련도에 따라 생산에 영향을 미침

⑤ 관리 기술

공동작업에 따른 인력 관리, 일정과 자원, 조직의 계획과 실행 및 분석이 필요

- 소프트웨어의 생산성은 프로젝트의 수행 경험과 숙련도에 좌우

(9)

1-17

¾ 소프트웨어 엔지니어의 역할 4프로젝트 요구 사항의 정확한 분석

4소프트웨어의 구조 및 사용자 인터페이스의 설계 4자료구조 및 데이터베이스의 설계

4소프트웨어의 시험 및 통합 4사용자 지침서 및 개발 문서의 작성 4성능 측정 방법과 모델의 설계

4소프트웨어의 유지 보수 방법과 기술 개발

4소프트웨어 개발 및 유지 보수를 위한 도구의 사용법 습득 4프로젝트의 계획 관리 등

¾소프트웨어 개발 단계 (1) 요구분석 단계

- 개발 계획, 문제 정의, 요구 분석 및 명세, 설계 - 사용자들의 요구사항을 수집하여 통합 설계 지원 (2) 개발 단계

- 구현, 통합, 시험, 운영

- 체계적이며 분할된 개발 과정을 통해 신뢰성 있는 품질을 지원 (3) 유지보수 단계

- 유지보수

- 개발 후 사용 시 문제점 보완 및 기능 추가 등을 지원

(10)

¾ 국내 소프트웨어 산업 현황

498년 IMF구제금융이후 민간기업의 부채비율 200% 달성과 비용

절감차원에서 정보화관련 투자를 삭감하면서 성장세가 주춤 41999년에는 IMF이전상황으로 회복

41999년 이후 국내 소프트웨어 산업은 예년의 성장세 회복할 것 으로 전망

1.3 국내 소프트웨어 산업 현황

¾국내 소프트웨어 산업 현황 (계속) (1) 패키지 소프트웨어 산업의 경우

- 정부의 소프트웨어 불법복제 단속 및 정품사용홍보에 힘입어 민간 및 공공부문의 정품사용 마인드가 확립되어 가고 있어서 시장확대 를 주도

- 부문별로는 통신용, 사무용, 안티바이러스용, 교육용 소프트웨어 상품들의 성장률이 높은 것으로 분석된다. 특히, IMF이후 해외시장 진출에 주력한 소프트웨어 개발사들이 기업용, 인터넷관련, 컴포넌 트 소프트웨어 등에 있어서 성과를 보이고 있으며 향후 잠재력도 높 은 것으로 판단

(2) 컴퓨터관련서비스산업의 경우

- 98년 하반기부터 정부의 정보화투자 확충, 통신, 금융권 등의 신규 시장 확대에 따라 98년 이전의 성장세를 유지

- 2000년에는 기업의 구조 조정이 막바지에 이르러 신규 수요가 증대 되고 있으며, 금융 및 통신(인터넷) 부문에 대한 신규 시장이 급속히

(11)

1-21

¾연도별 국내 소프트웨어 산업의 매출규모 추이 497년까지 매년평균 40%이상의 고성장세를 유지

498년의 경우 IMF 경제체제하에서 급격한 시장 감소로 급감

498년말부터 정부의 소프트웨어 산업경기 활성화 정책과 더불어

민간 부문의 전산관련 투자 수요가 증가

499년 국내 소프트웨어산업은 98년 대비 32%의 매출규모 증가

1,000,000 2,000,000 3,000,000 4,000,000 5,000,000 6,000,000 7,000,000 8,000,000 9,000,000 10,000,000

92 93 94 95 96 97 98 99 2000

(단위 : 백만원)

(년도) (한국소프트웨어산업협회, 2000)

[그림 1.5] 소프트웨어 산업의 매출 규모

¾세계 및 국내시장 성장률 비교

4국내소프트웨어산업은 환율상승과 국내매출액 격감으로 98년 세계 시장에서의 비중이 0.81%로 떨어졌으나 99년 환율의 안정 및 국내 경기활성화에 힘입어 99년 세계시장에서의 비중이 1.12%로 다시 상승하여 1%대를 회복

4그러나, 아직 세계 시장에서의 비중이 1%대로 국내 소프트웨어산 업이 세계 시장에서 차지하는 비중은 극히 미미한 상황

0.00 5.00 10.00 15.00 20.00 25.00 30.00 35.00 40.00 45.00 50.00

1992 1993 1994 1995 1996 1997 1998 1999 2000 비중 세계시장성장률 국내시장성장률 (성장률)

(년도)

(12)

1-23

1.4 요약

¾

소프트웨어 공학의 목표 고품질의 소프트웨어의 생산

¾

소프트웨어의 품질 요소

최소 비용, 생산성, 융통성, 기능의 정확성, 이해 용이성, 사용 용이성, 일관된 통합, 이식성, 재사용성, 유지 보수성, 상호 운용성 등

¾

소프트웨어의 개발 단계

개발 계획, 요구사항 분석, 설계, 구현, 시험, 유지 보수

(1)대부분의 공학에 적용 가능한 원칙과 기본 원리는 무엇인가 ? (2)건축 공학, 기계 공학 등이 다루는 대상과 소프트웨어 공학이 다루는

제품의 본질적인 차이점을 설명하시오.

(3)최근에 사용한 소프트웨어를 분야별로 분류해 보시오.

(4)소프트웨어를 개인이 개발할 때와 그룹이 개발할 때 그 과정의 차이점 은 무엇인가?

연습 문제

(13)

[1] 윤청, 소프트웨어 공학, 생능, 2000 [2] 왕창종, 소프트웨어공학, 정익사, 2000 [3] 최은만, 소프트웨어공학, 사이텍미디어, 2001

[4] 한국소프트웨어산업협회, 소프트웨어 산업의 시장 동향 보고서, 한국 소프트웨어산업협회, 2000

[5] R. S. Pressman, Software Engineering : A Practitioner's Approach 5/E, McGRAW-HILL, 2001

[6] S. Ian, Software Engineering 6/E, Addison-Wesley, 2001 [7] G. L. Engel, Program Criteria for Software Engineering

Accreditation Programs," IEEE Software, Vol. 16, No. 6, pp. 31-34, 1999

[8] M. E. Fayad, M. Laitinen, and R. P. Ward, Thinking Objectively:

Software Engineering in the Small,?Communication of ACM, Vol. 43, No. 3, pp. 115-118, 2000

[9] J. Z. Gao, C. Chen, Y. Toyoshima, and D. K. Leung, Engineering on the Internet for Global Software Production," IEEE Computer, Vol.

32, No. 5, pp. 38-47, 1999

¾참고 문헌

[10] D. Garlan, D. P. Gluch, and J. E. Tomayko, "Agents of Change:

Educating Software Engineering Leaders," IEEE Computer, Vol. 30, No. 11, pp. 59-65, 1997

[11] R. Gisselquist, "Engineering in Software," Communication of ACM, Vol. 41, No. 10, pp. 107-108, 1998

[12] T. B. Hilburn, "Software Engineering Education: A Modest Proposal," IEEE Software, Vol. 14, No. 6, pp. 44-48, 1997 [13] J. W. Moore, "An Integrated Collection of Software Engineering

Standards," IEEE Software, Vol. 16, No. 6, pp. 51-57, 1999 [14] D. L. Parnas, "Software Engineering Programs are not Computer

Science Programs," IEEE Software, Vol. 16, No. 6, pp. 19-30, 1999 [15] C.V. Ramamoorthy, "Advances in Software Engineering," IEEE

Computer, Vol. 29, No. 10, pp. 47-58, 1996

[16] H. Sharp, H. Robinson, and M. Woodman, "Software Engineering:

Community and Culture," IEEE Software, Vol. 17, No. 1, pp. 40-47, 2000

[17] S. Tockey, "A Missing Link in Software Engineering," IEEE

(14)

[18] A. I. Wasserman, "Toward a Discipline of Software Engineering,"

IEEE Software, Vol. 13, No. 6, pp. 23-31, 1996 [19] Pressman's Software Engineering Resources [20] Software Engineering Institute(SEI)

[21] Sommerville's Software Engineering Resources [22] Software Engineering Resources

[23] IIT Software Engineering Group's Resources [24] Yahoo!-Software Engineering Resources [25] WWW Virtual Library - Software Engineering [26] Software Engineering Archives

[27] A bibliography of introductory material for formal methods [28] Index to Object-Oriented Information Sources

[29] Component Software Resources [30] UML Korea

[31] Software Pattern Definitions [32] COCOMO II

참조

관련 문서

Electrical Engineering | Computer Science & Engineering | Chemical Engineering | Convergence IT Engineering (CiTE) | School of Electrical Engineering and Computer

Gorski, "Extending GQM by argument structures,", Balancing Agility, Formalism in Software Engineering, Springer Berlin

위의 예에서 얻을 수 있는 교훈은 엔지니어 생산 직원 감독관 운영자 또는 작업자와 같은 , , , 기업 내의 특정 그룹 내에서 안전성에 대한 최상의 효과를 얻으려면 가능한 모든

"Dynamic simulations of molten carbonate fuel-cell

"Collaborative variational autoencoder for recommender systems." Proceedings of the 23rd ACM SIGKDD international conference on knowledge discovery

Jung, “Fabrication and Characterization of DBR Porous Silicon Chip for the Detection of Chemical Nerve Agents”, Journal of the Chosun Natural Science, Vol.. Koh, “1-D

These indicators differ, for example, in "new universities", where the numbers are respectively 22 and 28 hours, while for institutes included in the CURL

Spalart, "Linear and nonlinear stability of the Blasius boundary layer", Journal of Fluid Mechanics, Vol. Hussaini, "Linear and Nonlinear PSE for