[소프트웨어 공학] 1. Introduction
What is Software?
소프트웨어는 프로그램(소스코드) 뿐만 아니라, 그와 관련된 문서와 데이터를 모두 총칭하는 말이다.
Why Software Project Fail?
Lack of SW mind - 소프트웨어의 개발 및 유지보수가 쉽고 빠르게 되는 줄 알고 있다.
Lack of appropriate SE skills - 실력 자체가 부족하다.
Insufficient software project management - 프로젝트 관리를 하지 않는다.
Why is Software Development So Difficult?
Communications - 개발자와 클라이언트의 의사소통이 어렵다.
Sequential nature of system
Development - 사람이 직접 개발하기 때문이다. (Manufacturing이 아니다)
Project characteristics - 프로젝트가 다양하다.
Characteristics of personnel - 사람들의 성격이 다양하다.
Management issues - 일정관리나 직원관리가 어렵다.
Costs of Software Development
Analysis & Design (40%) - 요구사항을 제대로 이해하기 위해서 많은 시간을 투자하게 된다.
Coding (20%) - 실제적인 코딩은 아주 적은 시간이 소요된다.
Testing (40%) - 에러를 최대한 줄여 a/s 비용을 최소화한다.
Development vs Maintenance
Maintenance (66%) - 유지보수 비용이 훨씬 많이 든다.
Development (33%)
Sources of Errors in Software Developments
Documentation & Others (35%) - 코드와 문서의 불일치 혹은 문서없음이 가장 많은 비중을 차지한다.
Coding (30%)
Logic design & Misunderstanding (20%)
Functionality & Misunderstanding (15%)
Programming Paradigm Evolution
항상 생산성과 품질을 향상시키기 위해 발전하고 있다.
요즘 트렌드는 Service-Oriented Architecture, Saas(Software as a Service), Open Source Market, Offshore Outsourcing, Cloud computing 등이 있다.
What is Software Enginnering
The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software ( IEEE, 1991) - 응용 프로그램 개발에 있어서 체계적이고, 규범화하고 수치화하여 접근하는 방법을 말한다.
What you do when you have two or more people working on a project ( NRC Canada 1997)
소프트웨어 공학이 중요해진 이유.
소프트웨어 개발에 있어서 항상 시간과 노력 그리고 비용까지 전부 예측할 수 있어야 한다.
소프트웨어의 수요가 증가하고, 이제는 하드웨어 비용보다 소프트웨어 비용이 더 높아졌고, 중요해졌기 때문에 소프트웨어의 규모는 점점 커진다. 따라서 유지보수의 역할의 중요성이 커졌고, 소프트웨어 품질이 중요해졌다.
소프트웨어 공학의 최종목표는 소프트웨어 품질의 향상이다.