1.3 소프트웨어 공학이란?

: 전기전자 기술자 협회(IEEE)의 소프트웨어 공학 표준에 의하면 소프트웨어 공학이란

소프트웨어의 개발과 운영, 유지보수, 소멸에 대한 체계적인 접근 방법이라고 정의.

 

- 소프트웨어 엔지니어링의 목표

: 소프트웨어 개발 작업이 결과를 예측할 수 없는 주먹구구식이 아니라

과학이나 공학에 더 가깝게 하려는 노력임.

 

아래 설명하는 요소들이 소프트웨어 공학 분야의 발전과 기술 개발의 원동력이 됨.

 

1.3.1 규모

- 규모가 큰 시스템을 개발하는 일은 작은 시스템을 개발하는 방법과 다른 방법이

동원되어야 함.

-일반적으로 소규모 시스템에 사용하던 방법은 대규모 시스템에 확대 적용하기 어려움.

-대규모 프로젝트는 엔지니어링(사용하는 방법, 절차, 도구)과 프로젝트 관리 기법이 필요.

-소규모 프로젝트에서는 개발과 관리에 비정형 방법을 사용할 수 있으나,

 대규모 프로젝트에는 정형화된 방법이 필요.

 

*소프트웨어 제품의 규모(KLOC)

-소규모: 만 줄 이하

-중규모: 십만 줄 이하

-대규모: 백만 줄 이하

-초대규모: 수백 만 줄 이상

 

1.3.2 품질과 생산성

: 엔지니어링 원리는 비용, 일정, 품질과 같은 변수를 중요하게 여김.

-소프트웨어 시스템을 개발하기 위한 비요은 대부분 인건비에 속함.

 (사람이 많이 필요한 노동집약적인 작업이기 때문)

 → 소프트웨어 프로젝트의 비용은 MM(man-month)로 측정.

-일정은 대부분의 프로젝트에서 중요한 요소.

 최근에는 제품이 시장에 나올 때까지 걸리는 기간(time to market)이 더욱 짧아지는 추세.

 → 즉 소프트웨어는 더욱 빨리 개발되어야 함.

 

*생산성

 : MM당 생산하는 소프트웨어의 라인 수.

 

-모든 사업 전략을 '품질' 중심으로 짜고 있음.

 고품질의 소프트웨어를 개발하는 것이 소프트웨어 엔지니어링의 또 다른 근본적인 목표.

 

*소프트웨어의 품질 속성

 ⓐ기능성(functionality): 소프트웨어가 사용될 때 원래 정한 또는 내재된 요구를

                                만족시키는 기능을 제공하는 능력. (적합성, 정확성, 보안성 등)

 ⓑ신뢰성(reliability): 소프트웨어가 정해진 수준의 성능을 유지할 수 있는 능력.

 ⓒ사용용이성(usability): 쉽게 이해되고 배울 수 있고 사용될 수 있는 능력.

                                (이해용이성, 학습용이성, 운용성 등)

 ⓓ효율성(efficiency): 사용되는 자원의 양에 따라 적절한 성능을 제공할 수 있는 능력.

 ⓔ유지보수성(maintainability): 정정, 개선, 적응시킬 목적으로 수정될 수 있는 능력.

                                         (변경용이성, 시험용이성, 확장성 등)

 ⓕ이식성(portability): 별도의 작동이나 수단 없이 다양한 환경에서 적응될 수 있는 능력.

                             (적응성, 설치용이성 등)

 

-품질은 많은 의미가 담긴 다차원 개념.

 →소프트웨어 품질은 하나의 숫자로 축약할 수 없음.

 →품질 개념은 프로젝트마다 다름.(프로젝트마다 개벌 전에 품질 목표를 설정하여야 함)

-일반적으로 '신뢰성'이 소프트웨어 품질의 기준을 대표함.

-품질 측정 방법 중 한가지는 출시된 소프트웨어의 단위크기(일반적으로 천 줄, KLOC)당 결함의 수.

 

*결함

 : 소프트웨어가 고장 나게 하거나 출력이 바르지 않게 하는 문제.

 

1.3.3 일관성과 재현성

 : 어떻게 하면 성공적인 결과가 되풀이 될 수 있고 품질과 생산성에 일관성을 가지게 하느냐.

 

-사용하는 방법이 프로젝트 전체에 반복 적용되어 생산된 소프트웨어의 품질에 일관성이 있어야 함.

-소프트웨어 개발 기관은 일관된 품질을 일관된 생산성으로 만들기 원함.

-ISO 9001과 CMM(Capability Maturity Model)은 기관이 방법론을 표준화 하고 일관되게

 사용할 것을 권장하고 있음.

 

1.3.4 변경

 : 오늘날 비즈니스 환경 변화가 매우 빨라 소프트웨어도 변화의 흐름을 따라갈 것을 요구.

 

-소프트웨어는 변경을 어렵게 하는 물리적인 부분이 없기 때문에 변경하기 쉽고 소프트웨어에서

 더 많은 변경이 일어날 것으로 예상됨.

-변경은 소프트웨어 공학의 중요한 성장 요인.

 

 

 

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

 

 

+ Recent posts