학교수업/소프트웨어 공학

[소프트웨어 공학] 1. Introduction

laboputer 2015. 10. 21. 21:46

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)



소프트웨어 공학이 중요해진 이유.

소프트웨어 개발에 있어서 항상 시간과 노력 그리고 비용까지 전부 예측할 수 있어야 한다.

소프트웨어의 수요가 증가하고, 이제는 하드웨어 비용보다 소프트웨어 비용이 더 높아졌고, 중요해졌기 때문에 소프트웨어의 규모는 점점 커진다. 따라서 유지보수의 역할의 중요성이 커졌고, 소프트웨어 품질이 중요해졌다.


소프트웨어 공학의 최종목표는 소프트웨어 품질의 향상이다.