이론공부/시험공부

소프트웨어 공학 (1~2주차)

chobyeonggyu03 2024. 9. 9. 14:13
반응형

 

 

 소프트웨어 공학이란?

 

- 전문적이고 cost적으로 효율적인 소프트웨어를 개발하기 위한 이론과 방법, 도구들을 공부하는 학문

 

- 시스템의 초기 단계부터 사용 후 유지보수단계까지 소프트웨어 생산의 모든 측면을 다루는 학문

 

 


- 더 많은 시스템들이 소프트웨어에 의존되어 가는 중

 

- 선진국들에서 소프트웨어는 이미 핵심적인 부분으로 소프트웨어에 대한 의존도가 높음

 

- 소프트웨어 관련되어 시스템에 들어가는 비용 비용이 하드웨어와 관련된 시스템들에 들어가는 비용보다 높음

 

- 소프트웨어는 처음 개발할 때 드는 초기 개발비용보다 유지 및 보수할 때 더 많은 비용이 소모됨

 

 

 

 

 

 

 

 

 

소프트웨어의 두가지 종류

 

1) 일반적인 소프트웨어 (Generic Software)

 

- 일반 소비자들이 구매할 수 있는 독립 실형 소프트웨어

 

ex) graphics programs, project management tools 등등

 

 

 

2) 맞춤제작 소프트퉤어 (Custom Software)

 

- 특정 소비자들과 그들의 니즈를 충족시키기 위해 맞춤형으로 제작한 소프트웨어

 

ex) embedded control systems, air traffic control software, traffic monitoring systems 등등

 

 

 

 

 

 

 

 

 

 좋은 소프트웨어 제품의 필수적인 요소들

 

 

- Maintainability ( 유지 보수성) : 변하는 비즈니스 환경에따라 소프트웨어가 변하는 것은 필연적이므로 변하는 소비자들의 니즈들을 충족시킬 수 있도록 계속 발전할 수 있게 유지보수적인 측면을 신경써 만들어져야 한다.

 

- Dependability( 신뢰성, 독립성) : 신뢰성, 안정성, 보안성 등이 보장될 수 있고, 시스템이 고장나거나 시스템 실패가 발생했을 때 물리적, 경제적 측면에서 손해를 야기하지 않도록 만들어야한다. 

 

- Efficiency ( 효율) : 메모리와 프로세서 사이클 등의 시스템 자원들을 낭비하지 않도록 만들어져야 한다.

 

- Acceptability (수용성) : 다른 소프트웨어들과 호환이 잘 되어야 한다.

 

 

 

 

 

 

 

 

 소프트웨어 공학에서 하는 일

 

 

 

● Software Specification ( 요구 공학

- 고객과 엔지니어가 소프트웨어의 운영제한사항들과 목표를 정의함 (  수정할 부분이 생기면 다시 돌아가서 다시 수정하는 작업을 반복함 )

 

- '요구 공학'임

 

● Software Development ( 소프트웨어 개발

 

- 아키텍처 설계, 상세 설계등 소프트웨어와 프로그래밍을 어떻게 할지 설계하고 구현함 (디자인이 완벽하게 끝나고 구현하는 것보다는 디자인하고 구현하는 과정이 계속해서 반복되는 구조가 대부분임)

 

- CTIP를 통헤 지속적으로 테스트하고 통합하는 걸 반복함

 

(여기서 CTIP이란 'Continuous Test and Integration Platform' 의 약자로 지속적으로 테스팅하고 지속적으로 통합하는 과정을 의미함)

 

 

● Software Validation ( 소프트웨어 검증

 

- 소프트웨어가 고객들의 니즈에 맞게 제작되었는지 확인함

 

- V&V를 통해 소프트웨어의 정확성과 품질을 평가함

 

(여기서 V&V란 'Verification and Validation' 의 약자로 지속적으로 테스팅하고 지속적으로 통합하는 과정을 의미함)

 

 

● Software Evolution ( 소프트웨어 업그레이드

 

- 변화하는 시장과 고객들의 니즈들을 반영해 소프트웨어를 계속해서 변화시키고 발전시킴

 

- 소프트웨어 업그레이드과정에서 유지보수부분이 매우 중요함

 

 

 

 

 

 

 

 

 소프트웨어 프로젝트의 다양성

 

- 소프트웨어 시스템은 매우 다양하기 때문에 모든 시스템에 적용가능한 Silver Bullet같은 만능 솔루션이 존재하지 않음

 

- 사용되는 소프트웨어 공학 방법과 도구들은 애클리케이션의 유형, 고객의 요구사항, 개발 팀의 작업환경등에 따라 달라지기에 어떤 프로젝트를 진행하느냐에 따라 각각에 맞는 소프트웨어 공학 방법과 도구들을 활용해야함

 

 

 

 

 

반응형