*소프트웨어 공학

: 사용자가 있는 실용적인 소프트웨어, 즉 이를 통하여 비즈니스 업무나 제조 활동 등에서

발생하는 문제를 해결해 주는 프로그램을 다룸.

즉 소프트웨어에 있는 직접 똔느 간접적인 손해가 따를 수 있는 심각한 문제를 해결하기 위한 것.

 

*소프트웨어 제품

: 고객의 문제를 해결하기 위하여 구축하며 비즈니스를 운영하기 위하여 사용.

소프트웨어 구축에서 중요한 점은 정확히 작동하는 것.

→소프트웨어 시스템은 높은 품질이 요구됨.

 

소프트웨어 공학이 다루는 문제는 제품으로 만든 알찬 소프트웨어(industrial strength)임.

 

1.2.1 고비용

 

1. LOC(Lines of Code)

 : 소프트웨어의 규모를 측정하는 데 사용.(가장 보편적)

 

2. MM(Man-Month)

 : 소프트웨어 개발에 드는 비용을 나타내는 데 사용.

   주된 비용은 인건비.

 

   생산성은 MM당 생산하는 프로그램의 LOC로 측정.

   (새로 프로그램을 작성하기 위한 생산성은 일반적으로 MM당 300~1000LOC)

 

1.2.2 개발 지연과 낮은 신뢰도

 

- 600여 회사를 조사하였더니 35% 이상이 계획에서 벗어난 컴퓨터 관련 개발 프로젝트였음.

  (계획에서 벗어났다함은 일정이 조금 지연되거나 예산이 초과된 것이 아니라 관리할 수 없을 정도가

  되어버린 프로젝트를 의미)

-방위 산업 보고에 의하면 장비 고장의 70% 이상이 소프트웨어에 의한 것이라고 함.

 

→ 결국 엔지니어링 원리를 적용하는 시스템 제작에서 소프트웨어가 가장 취약한 부분이라는 것을 발견하게 됨.

 

-소프트웨어 고장은 다른 요소(기계, 전기시스템 등)의 고장과는 다름.

 : 다른 엔지니어링 원리를 적용하는 제품의 고장은 노후화 되면서 진행되는 물리적 또는 기계적

   특성의 변화 때문.

   소프트웨어 제품은 세월이 흐르면서 마모되는 것이 없음. 즉 소프트웨어에서는 설계와 개발 과정에

   유입된 오류에 의해서만 고장이 발생.(소프트웨어 시스템은 일정 기간 올바로 작동되다가 고장을

   일으킬 수도 있지만 고장의 원인인 버그는 처음부터 있던 것)

 

1.2.3 유지보수와 재작업

 

1. 유지보수

-소프트웨어가 배포, 설치된 후에는 유지보수 단계로 들어감.(시스템에 남아 있는 오류가 있기 때문에 유지보수)

-버그가 없더라도 소프트웨어는 자주 변경됨.(업그레이드, 환경의 변화로 인해)

 

-유지보수 비용은 소프트웨어 개발 비용을 초과함.

 

-유지보수 작업은 현재 소프트웨어를 기반으로 함.

 → 현재 소프트웨어를 이해하는 과정 필요.(여기에 상당한 노력과 비용이 듦)

 

2. 재작업

- 소프트웨어 개발에서 가장 큰 문제 중 하나는 의도했던 바가 잘 이해되지 않는다는 점.

  : 처음엔 요구가 잘 정의되었다고 생각했는데 개발이 진행되면서 시스템에 대한 이해도 깊어지고

    새로운 요구가 자꾸 추가됨. 그로 인해 계속 변경을 요구하게 되고 변경 때문에 재작업을 하게 됨.

- 개발 비용 중 30~40%가 변경으로 인한 재작업.

-변경과 재작업이 소프트웨어 위기에 대한 주요 원인.

 

 

 

[출처]소프트웨어공학론(최은만 저, 정익사)

+ Recent posts