1. Software Engineering Overview
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
소프트웨어 공학에 대한 또다른 정의 “소프트웨어 공학이란 소프트웨어의 품질과 생산성을 향상시키기 위하여 사용자의 요구사항을 체계적으로 분석하여 설계 및 구현, 구 현된 시스템의 시험 그리고 유지보수 및 폐기 시까지 소프트웨어 전 수명주기 간에 걸쳐 이루어지는 체계적인 접근법을 말한다.” - 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
Program Vs. Software Program = Software ? Program = Set of executable computer instructions Software = Computer program and related documents including analysis, design, project planning etc.
한가한 교차로 통행량의 증가 복잡한 도로 신호등이 도리어 운전자에게 불편함 신호등이 없으므로 불편하고 도리어 정체가 심하여짐 신호등 없이 교통 흐름 제어가 불가능
S/W 개발 절차 S/W 제품, 시스템, 서비스 개발 S/W 요구사항 정의 S/W 요구사항 분석 S/W 아키텍처 S/W 설 계 구 현 S/W 테스팅
Water Tap Example – Water Tap
Water Tap Example- What went wrong? When water goes too hot, recursion occurs.
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 – 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
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 Engineering in a Nutshell Development of software systems whose size/complexity warrants a team or teams of engineers Multi-person construction of multi-version software[Parnas 1987] SCOPE: study of software process, development principles, techniques, and notations GOAL: production of quality software, delivered on time, within budget, satisfying customers’ requirements and user’ needs Software engineers must posses a broad range of skills Mathematics Computer science Economics Management Psychology
Importance of Software: The Business Implications of Software Change Rate of change Time Degree of risk Business Software Rate of change Time Opportunities Business Software When it takes longer to change the software than to change the business, the business is at risk When software changes faster than the business, the business creates strategic opportunities
외국의 S/W 공학센터 현황 미국 SEI (Software Engineering Institute) 품질 좋은 S/W가 국방 시스템에 가장 중요한 요소라는 것을 인식 하여 1984년 DoD에 의하여 S/W공학 기술을 실용적으로 진보시 키기 위하여 카네기멜론대학 내에 설립하였음 ※ 2003년 1월에 독일 프랑크푸르트에 SEI-Europe을 설립 세계 최고 수준의 S/W공학 연구소로서 S/W공학 기술을 선도하고 있으며, 새로운 S/W공학 기술에 대한 창조(create), 적용(apply) 및 확산(amplify)을 전략으로 삼고 있음 수입액은 2004 회계연도에 8,560만 달러이며, 371명의 연구원 을 비롯해서 약 510명이고, 이외에 방문 연구원이 약 90명임
외국의 S/W 공학센터 현황 미국 SEI (Software Engineering Institute) 주요 연구 분야는 S/W 아키텍처, S/W 제품계열(Product Line), S/W 컴포넌트 조립, CMMI, S/W공학 측정 및 분석, 위험관리, S/W 시스템 통합, S/W 및 시스템 성능 기술 등임 가장 알려진 CMM(Capability Maturity Model), CMMI를 비롯하 여 CURE(COTS Usage Risk Evaluation) 방법, ATAM(Architecture Tradeoff Analysis Method), "Framework for Software Product Line Practice" 등을 개발하였음
외국의 S/W 공학센터 현황 독일 IESE (Institute for Experimental Software Engine ering) S/W 기업들이 S/W 개발 프로세스를 정립하고 효율적으로 S/W 제 품을 개발할 수 있도록 밀접한 지원을 하기 위하여 1999년 Fraunhofer 연구소 소속으로 설립하였음 S/W공학 기술인 컴포넌트 기반 개발(CBD), 제품계열, 품질공학, 요 구공학, S/W 프로세스 기술 등을 산업계에서 실제 활용할 수 있도록 20여개 프로젝트를 통해 연구 개발하고 있음
외국의 S/W 공학센터 현황 독일 IESE (Institute for Experimental Software Engine ering) 예산은 2004 회계연도에 약 753만 유로이며, 컨설팅 및 기술이전 을 통해 얻은 2004년 수입은 약 250만 달러이고, 연구원은 약 150 명이고, 미국 메릴랜드에 USA 센터가 있음 가장 알려진 S/W 컴포넌트 기반 개발 방법론인 KobrA를 비롯하여 S/W 제품계열 방법론인 PuLSE, 요구공학 방법론인 RE-KIT, 품질측 정 방법인 GQM 등을 개발하였음
외국의 S/W 공학센터 현황 유럽 ESI (European Software Institute) 정보화 사회의 개발과 기업의 경쟁력을 향상을 지원해 주기 위하여 스페인 정부의 지원 하에 EC(유럽공동체)에 의하여 1993년에 설립 되었으며 스페인에 본부를 두고 있음 S/W의 품질과 생산성 향상 기술인 S/W 프로세스 개선, S/W 재사용 , S/W 제품계열, 모델 주도형 개발(MDD), 서비스 중심 공학, 품질관 리 기술 등을 주로 연구 개발하고 있음 2004년 총 수입은 약 684만 유로이고, 연구개발 이외에 S/W공학 기술의 컨설팅 및 기술이전을 통해 얻은 2004년 수입은 약 190만 유로임 연구원은 약 76명이고, 멕시코, 브라질, 불가리아, 중국, 호주 등 5 개국에 ESICenter를 두고 있음
외국의 S/W 공학센터 현황 아일랜드 CSE (Centre for Software Engineeri ng) 아일랜드 S/W 개발기관들의 S/W 품질과 개발 생산성을 향상 시켜주기 위해 지원해주고 Best Practice를 구축하기 위하여 1991년 더블린시티대학 내에 설립했음 S/W공학 절차와 기법을 구축할 수 있도록 서비스를 해주고, S/W공학 프로세스, 제품, 인력 및 조직, 기술의 컨설팅, CMM 과 ISO 9001 훈련과 컨설팅, 프로젝트 관리 훈련을 실시함 S/W공학 관련 기술에 대한 교육훈련 서비스를 하고 있으며, S/W공학 학사 과정도 운영하고 있음 많은 유럽의 S/W공학 프로젝트에 참여하여 S/W 개발에 있어 새로운 아이디어와 Best Practice를 확산시키고 있음
외국의 S/W 공학센터 현황 캐나다 CSER (Centre for Software Engineering Resea rch) 첨단 S/W공학 연구를 위해 NSERC(Natural Sciences and Engineering Research Council of Canada)의 자금을 지원받아 수 행하는 산⋅학⋅연 컨소시엄으로 1996년에 설립되었음 S/W공학의 협동 연구를 통하여 Best Practice들을 증진시키고, 연 구 개발된 기술을 통하여 대학의 S/W공학 교육과정의 질을 향상시 켜 고급 인력을 양성하고자 함 현재 3 단계 사업을 수행하고 있으며 정부 투자는 400만 달러이고, 기업의 현물 투자는 680만 달러임
외국의 S/W 공학센터 현황 호주 SEA (Software Engineering Australia) S/W 개발 회사들의 경쟁력 향상을 지원해 주기 위하여 연방 정부의 통신정보기술부(DCITA)에 의해 1999년에 설립되었으며, 2003년 부터는 독립적인 비영리 기관으로 운영되고 있음 S/W공학 관련 교육 서비스와 S/W 비즈니스 인증 프로그램인 SoftwareMark 프로그램을 주로 하고 있으며, 호주의 7,000여개 S/W 기업과 연계가 되어 있음 호주는 2003년에 설립한 NICTA(National ICT Australia) 내의 ESE(Empirical S/W Engineering)에서 S/W 제품계열, S/W 아키텍 쳐, 요구공학, 프로젝트 관리 기술 등을 개발하고 있음 ※ NICTA의 연구원은 약 300명이며, 2003년부터 5년간 약 1.3억 달러 투자예정
외국의 S/W 공학센터 현황 중동 RITSEC (Regional Information Technology and Software Engineering Center) 중동 아랍 지역의 정보기술의 개발과 S/W 기업의 지원을 위하여 유 엔의 UNDP와 경제사회 개발을 위한 아랍펀드(AFESD)의 지원 하에 1992년 이집트 카이로에 설립되었음 S/W공학 능력을 향상시키고 IT 도구, 제품 및 서비스를 이용하고 개 발하는 것을 지원하며, 전자상거래와 원격교육 등과 같은 우선순위 가 높은 것들을 개발할 수 있도록 지원함 미국과 유럽의 S/W공학 연구기관들과의 협력을 긴밀히 하여 좋은 연구결과가 나오고 있음
외국의 S/W 공학센터 현황 일본 SEC (Software Engineering Center) S/W 개발능력 강화와 선진 S/W 개발 기술 연구를 통하여 S/W 기업 의 경쟁력 향상을 지원하기 위하여 독립행정법인인 IPA(IT Promotion Agency) 내에 2004년 10월에 설립되었음 S/W공학 기술의 연구개발, 표준화, 인력 양성 및 기술보급을 하며, 특히 임베디드 S/W와 컴포넌트 S/W의 개발능력을 강화하기 위한 연구를 하고 첨단 S/W공학 기술을 개발함 2004 회계년도 예산은 약 14.8억엔이고, 내부연구원 30명과 초빙 연구원 120명 등 150명으로 발족했으며, 참여하고 있는 기관은 기 업 56개, 대학 14개, 해외연구기관 2개, 협회 4개임
외국의 S/W 공학센터 현황 중국 NSEC (National Software Engineering Cent er) 중국 산업계에서 S/W공학 석사학위자 수요가 매년 약 30,000명이 될 것으로 예측되어 각 SEC에서 S/W공학 인력을 양성하고 있으며, S/W공학 기술에 대한 연구도 수행하고 있음
한국의 S/W산업 실태 한국 크게 뒤져있는 한국의 S/W 산업 투자 전체 개발비에서 S/W가 차지하는 비중 미국 스위스 네덜란드 핀란드 . 일본 프랑스 남아프리카공화국 싱가포르 한국 자료 출처: 중앙경제, 2007-3-28 (13127호) 40판, E4 ‘기획’면, ‘국산 부실 소프트웨어 비상 : 결함 있는 SW 리콜 비용 더 들어’
Best jobs in America
Elements of a Software Organization People Software Technology Processes
They must consider professional obligations above all else!!! The People Element Software Engineers technology is a means to an end re-use; innovate only when necessary advance the state of practice economics drive the development creativity is exhibited in design They must consider professional obligations above all else!!!
Effective Software Engineers Technical Competence given, you must be technically astute and know how to stay that way Software Processes you must understand the relationship between effec tive processes, business goals, and the product Business bottom-line: you must make money!
Effective Software Engineers Communicators written and oral skill are essential without these skills it is impossible to be effectiv e Change Advocates how do you sell, plan, and execute organizationa l change relies on good communication and organizationa l reasoning skills
Effective Software Engineers Management clear understanding of planning, tracking, and over sight techniques Leadership must be ready and able to assume leadership roles Sales you can have great ideas, but you still must convinc e others that they are great
Teaming Rarely is software of any value written by one person in today’s market Effective teaming is essential for success unfortunately, we learn to develop software as an in dividual computer scientists are often introverted and lack t eaming experience computer scientists tend to be idealists
Leadership and Management Leadership Management you can be a good manager and a bad leader you can be a bad leader and a good manager good managers and good leaders in one person is a rare trait and one to cultivate you may get farther on good leadership than on go od management Leaders inspire and motivate Managers are organize and prioritize
Elements of a Software Organization People Software Technology Processes
What is “process”? A process is a sequence of steps performed for a given purpose “a series of actions or operations conducing to an end;”1 The concept of software process is rarel y presented in undergraduate educati on 1- Webster’s Ninth Collegiate Dictionary
The Software Development Process Developed in 5 general phases requirements analysis design build test Developers follow these phases whether or not they are conscience of it
The Software Lifecycle Software lifecycle - “cradle to grave” existenc e of a software product or system: software development lifecycle + maintenance, enhancement, and deco mmission/transition
Software Lifecycle Models Two general schools of thought “big bang” approach the product is delivered all at once cyclical approach the product is developed and delivered in increments
Elements of a Software Organization People Software Technology Processes
Technology Technology is applicable to all phases and act ivities of software development requirements tracking tools management information systems configuration management tools CASE tools compilers, optimizers, IDEs, debuggers profilers, performance analysis tools, test analysis t ool
Questions and/or Comments People Software Technology Processes
결 론 I. 소프트웨어 공학은 컴퓨터학의 기술 및 지식을 기반으로 경제성, 사회 성을 고려하여 목표하는 기간 및 예산 안에 사용자의 요구사항및 품질을 만족시키는 SW 상품을 개발하는 것을 목표로 하고 있다. II. SW는 현재 및 미래산업에서의 중요성과 가치가 증가하는 추세이며 이러한 상황에서 SW 개발의 기반이 되는 기술이 SW 공학기술 이다. III. 해외에서는 SW 공학기술의 발전을 위하여 많은 노력을 하고 있으며 우리도 우리나라 산업전반의 경쟁력 향상을 위하여 SW 공학기술의 투자 가 필요하다.