소프트웨어 공학 Introduction 박 수 용 서강대학교 컴퓨터공학과
What is Engineering To build technical artifact Root on basis of science knowledge With an economic context Within a society context Further society to support people
What is Software Engineering To build Software System Root on basis of computer science knowledge With an economic context Within a society context Further society to support people
Program Vs. Software Program = Software ? Program = Set of executable computer instructions Software = Computer program and related documents including analysis, design, project planning etc.
소프트웨어 공학에 대한 또다른 정의 “소프트웨어 공학이란 소프트웨어의 품질과 생산성을 향상시키기 위하여 사용자의 요구사항을 체계적으로 분석하여 설계 및 구현, 구 현된 시스템의 시험 그리고 유지보수 및 폐기 시까지 소프트웨어 전 수명주기 간에 걸쳐 이루어지는 체계적인 접근법을 말한다.” - Sommerville, in “Software Engineering” “The application of a systematic, disciplined, quantifiable approach to development, operation, and maintenance of software; that is, the application of engineering to software. ( 소프트웨어의 개발, 운영 및 유지보수에 체계적이고, 훈련이 잘 된 정량적인 접근 방법을 적용하는 것으로, 소프트웨어 개발및 관리를 공학적으로 접근하는 것을 말한다)” - Definition by IEEE Computer Society
Origin of Software Engineering Back to 1968 NATO Software Engineering Conference Initiated by awareness of software crisis Concluded that software engineering should use the engineering disciplines
Software Crisis Late Delivery Over Budget Inconsistent with the specification Difficult to understand Too costly to modify or improve
Software Crisis (Cont.)
한가한 교차로 통행량의 증가 복잡한 도로 신호등이 도리어 운전자에게 불편함 신호등이 없으므로 불편하고 도리어 정체가 심하여짐 신호등 없이 교통 흐름 제어가 불가능
Goal of Software Engineering Produce quality software on time within budget that satisfies user’s needs. Produce quality system and service Eventually, make business profit through software
Elements of a Software Organization PEOPLE SOFTWARE TECHNOLOGY PROCESSES
소프트웨어 공학기술 개요
S/W 개발 절차 S/W 제품, 시스템, 서비스 개발 S/W 요구사항 정의 S/W 요구사항 분석 S/W 아키텍처 S/W 설 계 구 현 S/W 테스팅
Water Tap Example – Water Tap
Water Tap Example – Wrong Approach Problem to coding! Requirement Statement Heat sensor reports heat. 2. Water flows. 3. Flush in 10 seconds.
Water Tap Example- What went wrong? When water goes too hot, recursion occurs.
Water Tap Example – Wrong Approach Problem Reported! Requirement Statement 1. Avoid recursion.
Water Tap Example – Wrong Approach What’s going on…?
Water Tap Example – Wrong Approach Is THIS what you call a “SYSTEM?”
Water Tap Example – Right Approach Analyze the Problem first! Requirement Statement 1. Heat sensor reports heat. 2. Water flows. 3. Flush in 10 seconds. System Start Sensor Report / (Water On & 10 sec. Timer) Ready Time Out / Init. System Water Flow Hmm Make it precise Flush Water Time Out Water Stop & 10 Sec. Timer Wait Time Out / (Flush On & 10 sec. Timer)
Water Tap Example – Right Approach Design Requirement Statement Heat sensor reports heat. 2. Water flows. 3. Flush in 10 seconds. Water control Subsystem Flush Subsystem Heat Sensor Subsystem Ok Let’s Design Water control Subsystem Flush Subsystem Control Subsystem Heat Sensor Subsystem
Water Tap Example – Right Approach Implement Requirement Statement Heat sensor reports heat. 2. Water flows. 3. Flush in 10 seconds. class heat-sensor { … public; int is-this-hand(); } int heat-sensor::is-this-hand() {…} OK. Let’s Implement
Water Tap Example – Right Approach Problem reported! Requirement Statement 1. Heat sensor reports heat. 2. Water flows. 3. Flush in 10 seconds. Water control Subsystem Flush Subsystem Heat Sensor Subsystem Ok Analyze the Problem class heat-sensor { … public; int is-this-hand(); …} int heat-sensor::is-this-hand() { … }
Water Tap Example – Right Approach Flexible system!
S/W 상품의 세계화 과정 창의적 아이디어 - 틈새시장 - 필요성 - 개선안 IT 요소기술 - AI, DB 계속적인 수정 보완 요구 고객 요구 수요 반복작업 경쟁력 저하 추가적인 아이디어 고품질 요소기술 SE 공학 기술 도입 상품화 및 국내시장 개척 해외경쟁력 확보 다량화 지속적 S/W 경쟁력 유지 시제품 개발 인력의 효율화 가능 - 요구 사항 관리 - 제품의 체계화/규격화 - 재사용 - 생산성 강화 - 품질 강화 - Time-to-market 향상 - 고급화 IT 요소기술 - AI, DB - Multimedia - Java - Network
소프트웨어 공학 기술 범위 소프트웨어 요구 사항 소프트웨어 설계 소프트웨어 구현 소프트웨어 시험 소프트웨어 유지 보수 소프트웨어 형상 관리 소프트웨어 공학 관리 소프트웨어 공학 프로세스 소프트웨어 공학 도구 및 방법 소프트웨어 품질 자료 출처: "Guide to Software Engineering Body of Knowledge (SWE BOK)"
소프트웨어 공학 기술간 관계도 개발 기술 지원 기술 유지보수 (진화) 요구공학 테스트 정형 기법 재 사 용 프로젝트 관리 아키텍처 & 디자인 유지보수 (진화) 요구공학 테스트 개발 기술 정형 기법 재 사 용 프로젝트 관리 지원 기술 프로세스 도구 및 환경 자료 출처: ICSE, 2003