소프트웨어란?
소프트웨어 엔지니어링이란?
소프트웨어 품질 중요 요소 4가지
수용성 (Acceptability) - 사용자가 이해하기 쉽고 유용해야 하며, 다른 시스템과 호환이 돼야 한다.
신뢰도와 보안 (Dependability and securitiy)
효율성 (Efficiency) - 불필요한 리소스 사용을 최소화, 일정한 응답속도와 성능을 제공한다.
유지 보수성 (Maintainability)
폭포수 모델과 애자일 모델이 실무에 가장 많이 사용된다.
구현 단계 : 요구사항 분석 -> 시스템 및 S/W 설계 -> 구현 및 유닛 테스트 -> 통합 및 테스트 -> 운영 및 유지 보수
모든 개발 주기에서 필수적으로 수행하는 활동
명세 (Specofocation) - 소프트웨어가 제공해야 할 기능과 제약 등을 명세
개발 (Development) - 명세에 따라 소프트웨어 개발
검증 (Validation) - 명세대로 구현되었는지 검증
개선 (Evolution) - 요구사항의 변경을 반영
계획 주도 모델 (Plan-driven Model)
소프트웨어 개발 주기의 활동을 미리 계획하고, 이 계획에 따른 진척도를 측정하는 모델이다.
폭포수 모델 (Waterfall Model)이 여기에 속한다.
개발 중 변경 및 요구사항 반영이 어렵다.
애자일 모델 (Agile Model)
소프트웨어 전체가 아닌 일부분에 대해서, 모든 활동을 수행한 후, 이를 반복적으로 수행하여 전체 소프트웨어를 만드는 방법론이다.
임베디드 시스템이나 규모가 크고 복잡한 시스템을 만드는 경우 문제가 발생한다.
계약 과정에서 명세를 확정 짓지 못하여 법적 계약서에 내용을 명시하기 어렵다.
신규 소프트웨어 개발에는 적합하지만 유지 보수에는 부적절하다.
계획 주도 모델과 상반되는 개념
요구사항이란?
시스템이 제공해야 할 서비스와 서비스가 동작 중에 지켜져야 할 제약사항
육하원칙에 따라 작성 되어야 전달력 높은 문서가 된다.
요구사항의 유형
사용자 요구사항
서비스가 제공해야 할 기능이나, 지켜져야 할 제약사항을 문장이나 다이어그램을 통해 고차원적이고, 추상적으로 표현한 것
기술적인 배경지식이 없는 최종 사용자와 발주 고객이 이해할 수 있어야 한다.
시스템 요구사항 (개발자가 주로 작성)
서비스가 제공해야 할 기능이나, 지켜져야 할 제약사항에 대한 세부적인 명세를 구조화된 문서나 다이어그램으로 작성한 것
자연어, 도표 기반 표기법 등으로 기술 가능하다.
기능적 요구사항 (Functional Requirements)
비기능적 요구사항 (Non-Functional Requirements)
시스템에 대해 동일한 인식을 갖고 사용자의 요구사항이 의도한대로 반영될 수 있도록 도움을 주기위해 수행한다.
UML (Unified Modeling Language)이란?
소프트웨어 시스템을 모델링 하기 위한 13가지 종류의 표기법들의 집합
대표적인 모델링 표기법 5가지
High-Level 모델링
Low-Level 모델링
업무의 흐름을 행위 단위로 절차를 표현하는 다이어그램
제어의 흐름도 표기할 수 있다.
시작점 (Start Point) : 검정색 점으로 표현