1강. 소프트웨어 공학개요

파트 1 요약

sw(엄격한 의미에서): 프로그램 및 프로그램을 구성하는 데이터 번들
(넓은 의미): 비즈니스 의사 결정 및 기술 문제 해결을 지원하는 도구를 포함한 범위

기능별 소프트웨어 분류: 시스템 소프트웨어와 응용 소프트웨어로 나뉩니다.
시스템 소프트웨어: 다음과 같이 컴퓨터를 실행하는 소프트웨어 자체를 말합니다. 나. 운영체제, 프로그램 등
응용 소프트웨어: 사용자의 실제 작업을 담당하고 지원하는 소프트웨어를 말하며 웹 브라우저, 사무용 소프트웨어 및 게임 소프트웨어를 포함합니다. (Enterprise Resource Management ERP와 같은 특수 소프트웨어 포함!)

사용자별 분류 : 일반 소프트웨어와 맞춤형 소프트웨어로 구분
일반 소프트웨어: 무한한 수의 사람들이 설치하고 사용할 수 있는 “패키지” 형태로 제공되는 소프트웨어입니다. 안정적이고 많은 무역품
맞춤형 소프트웨어: 특정 고객 그룹이 사용하기 위해 주문 제작된 소프트웨어

특징: 소프트웨어는 중요하지 않습니다.
부품조립만 사용시 어려운 점,
개발 비용의 대부분은 이를 개발하는 인력에 집중되어 있습니다.
유연성과 적응성(소프트웨어 변경 용이)이 있습니다.


소프트웨어 신뢰성 곡선

시간이 지남에 따라 성능이 저하되는 하드웨어(욕조 곡선)와 달리 소프트웨어는 마모되지 않습니다.
응용분야에 따라 시스템/실시간/임베디드/비즈니스/개인/인공지능/웹 기반/엔지니어링 소프트웨어 등


소프트웨어 위기: 하드웨어 기술의 발전으로 인한 변화의 출현. 소프트웨어 기술의 발전이 상대적으로 더딘 위기 현상을 말한다.
=> (소프트웨어 공학)은 학계가 등장하는 배경이 됩니다!

소프트웨어 위기의 원인: 당시 소프트웨어 엔지니어의 부족, 관리상 소프트웨어에 대한 인식 부족, 방법론 및 도구 부족, 낮은 생산성이 문제의 원인이었습니다. 시간이 지남에 따라 소프트웨어 자체의 복잡성이 증가하는 것도 이러한 부재를 강력하게 강조합니다.

소프트웨어 위기 사례 : 개발 일정 지연 / 과도한 비용 / 제품에 대한 자신감 부족 / 사양에 맞지 않는 제품 / 유지 관리 어려움

소프트웨어 엔지니어링: 필요한 기능의 신뢰성과 효율적인 실행을 위한 소프트웨어를 경제적으로 생성하기 위한 엔지니어링 방법에 대한 원칙(NATO)의 생성 및 적용, 소프트웨어 개발, 운영 및 유지 관리에 대한 체계적이고 정량화된 접근 방식입니다.


좋은 소프트웨어의 기준: 크게 다섯 가지 범주로 나뉩니다.
1) 외부 품질 / 내부 품질 – 외부(사용자가 인지할 수 있는 품질 요소), 내부(외부 품질에 도움이 되는 것, 개발자에게 중요, 요구 사항 사양, 설계 문서)
2) 신뢰성 – 소프트웨어가 오랫동안 작동하고 필요할 때 사용할 수 있다고 사용자가 신뢰하는 정도. 정확도, 오류가 발생하면 결과가 치명적이지 않아야 합니다.
3) 정확성, 성능, 사용의 용이성 – 사양대로 수행(정확도)하고, 정해진 시간 내에 처리가 가능(성능)하며, 효율적으로 사용할 수 있다(사용).
4) 상호 운용성 및 유지 보수성 – 좋은 소프트웨어는 다른 시스템과 상호 공존 ​​및 협력하여 작동할 수 있어야 하며 변경이 용이해야 합니다.
* 유지보수 요인 : 신규 기능 추가, 수요 증가, 기존 기능 개선, 환경 변화 등
5) 이식성, 테스트 가능성, 추적 가능성 – 다른 환경에서 작업할 수 있는 능력(예: Java!), 좋은 속성이 있는지 테스트할 수 있음(검사), 이해 관계자 요구 사항, 디자인 문서 및 소스 코드 관계를 추적할 수 있음(추적 가능성) ).