소프트웨어를 지칭하는 용어
1. Code : 프로그램의 일부
2. Program : 실행 가능한 명령어
3. Software : program + documents(프로그램을 만들기 위해 작성한 문서) (general)
특징
1) 복잡성(Complexity) : 정형적 구조가 없이 복잡하고 비규칙적
2) 순응성(Comformity) : 사용자의 요구에 따라 변형 가능
3) 변경성(Changeability) : 필요에 따라 항상 수정이 가능 (오류 수정, 새로운 요구 사항,하드웨어 변경의 이유 등)
4) 비가시성(Invisibility) : 외관으로 나타나지 않고 코드로 숨어있음
5) Failure rates over time
<note Image1
소프트웨어 타입
1) Custom software : 고객이 특정되어 있음 ex) 학교 포털 사이트
2) Package software (Commercial Off-The-Shelf (⭐️COTS)) : 누구나 사용 가능
3) Embedded software : 특정 하드웨어에 종속, 작은(사양이 낮은) 기기 안에 들어있음
4) SaaS (Software as a Service) : 브라우저를 통해 설치없이 사용할 수 있는 소프트웨어 ex) Gmail
소프트웨어공학
소프트웨어 비즈니스의 문제
1) High cost
2) Project delay
3) Low reliability (낮은 안정성) (bugs, defects(결함))
4) Maintenance
: 소프트웨어 전 주기(개발, 운영, 유지/보수, 폐기)에 있어서 체계적인 접근 방법
: 최소한의 비용으로 최대 퀄리티를 만들기 위해 공학, 과학, 수학적인 원리 방법론을 훈련 후 적용
소프트웨어공학이 다루는 문제
1) Scale : 규모가 큰 프로젝트를 어떻게 다룰지 (큰 소프트웨어일수록 프로젝트 관리, 개발 방법론이 더 쳬계적이어야 한다.)
2) Quality and Productivity : 어떻게 퀄리티와 생산성 높일 수 있는지
🧷 SW Quality Attributes
3) Consistency & Reproducibility : 어떻게 일관성 있게 만들고 유지보수를 해나갈지
4) Changes : 변경 가능성을 염두에 두고 어떻게 대응할지
소프트웨어 구성 요소
1) 기술
2) 사람
3) 프로세스
소프트웨어 개발 절차
1) 요구사항 분석 (Requirement analysis)
2) 설계 (Design)
3) 구현 (Coding)
4) 테스트 (Testing)
소프트웨어 품질 보증 (Software Quality Assurance (⭐️SQA))
1) Verification : 개발자의 의도에 따라 함수가 잘 만들어졌는지
2) Validation : 사용자가 요구한대로 만들었는지
3) Testing : 요구사항, 설계한대로 잘 동작하는지
프로젝트 관리
1) product metrics : 수치에 대한 평가 기준 (ex. 제대로 기능하는지, 안전성을 보장하는지)
2) precess metrics : 절차, 과정에 대한 평가 기준
SWEBOK (Software engineering body of knowledge)