소프트웨어의 정의
- soft(부드러운) + ware(제품)
- 특정 작업을 수행하게하는 프로그램의 집합으로 그 수행에 필요한 절차, 규칙, 문서 등을 총칭
소프트웨어의 특징
- 비제조성 (제조성 : 로봇과 같은 기계가 만들어 내는 것)
- 소모가 되지 않는 소프트웨어
- 사용자의 요구에 따라 새롭게 생산
- 변경성 (Changeability)
- 복제 가능 (Duplicability)
vs 하드웨어
- 하드웨어는 제조하고 소프트웨어는 개발함
제조 : 정해진 틀에 맞춰서 일정하게 제품을 생산하는 것 (결과물의 차이는 크지 않음)
개발 : 개인 능력에 따른 결과물의 차이가 큼
- 소모가 아닌 품질저하
하드웨어 부품 : 먼지, 열, 마모, 진동 등으로 인해 고장이 날 수 있음
실패곡선(욕조 곡선. Bathtub Curve)
초기 실패율이 높지만, 오류가 해결하면 오랫동안 지속됨
오래 사용하면 열, 환경의 문제로 인해 실패율이 치솟음
소프트웨어 : 하드웨어와 달리 닳지않음
실패곡선 :
이상) 오류를 해결한 후 문제없이 사용 (변경 사항도 없고, 환경 변화도 없을 때)
실제) 사용자의 요구가 계속 발생함 -> 변경으로 인한 부작용으로 실패율이 급격히 증가할 수 있음

소프트웨어 개발의 어려움
- 수준에 따른 구분
- 반려동물 집 짓기
계획을 할 필요가 없음
간단하게 지을 수 있음 (빠른 시간) - 단독 주택 짓기
여러 사람이 필요
계획, 설계를 진행
전문적 도구들이 필요 - 대형 빌딩 짓기
과정이 복잡
긴 개발 기간이 필요
참여 인력이 많을 뿐만 아니라 여러 전문가들도 필요함 (의견 충돌의 가능성)
-> 대규모 소프트웨어 개발의 어려움과 유사
소프트웨어 공학의 등장배경
- 소프트웨어의 위기
소프트웨어의 개발 속도가 하드웨어의 개발 속도를 따라가지 못하여 사용자의 요구사항을 감당할 수 없는 문제 발생
체계적이지 못한 상황 -> 공학의 개념을 접목 시켜 체계화하자!
소프트웨어 개발 생명주기 (Software Development Life Cycle)
계획 -> 분석(요구 분석) -> 설계 -> 구현 -> 테스트 -> 유지보수
계획
- 비용 : 예산 ( 50억 )
- 위험 분석 ( 기존 게임과의 차별성 )
- 기간 : 출시일 ( 2025.01.01 )
- 문제정의 : 목표 및 제약조건 ( 동시접속자 수 10만명 )
분석 (요구 분석)
- 개발할 소프트웨어의 기능, 제약조건, 목적을 사용자와 함께 명확히 정의하는 단계
설계
- 분석 단계에서 만든 다이어그램을 가지고 코딩할 수 있는 수준으로 구체화 하는 것 ( 코딩을 하는 것은 아님 )
- 사용자를 만나는 단계는 아님
구현
- 프로그래밍 언어를 사용하여 실제 코딩하는 단계 ( 설계가 잘 되어있으면 간단하게 할 수 있음 )
- 소프트웨어 종류에 따라 프로그래밍 언어를 선택하고, 프로그래밍 방법과 스타일, 순서를 결정함
테스트
- 요구사항은 다 반영되었는지, 예상한 결과와 실행 결과가 같은지, 숨어있는 오류는 없는지 테스트하여 프로그램의 완성도를 높이는 단계
유지보수
- 시스템이 배포된 후 이루어지는 모든 과정
- 모든 과정 : 성능 개선(새로운 요구사항 반영), 결함 수정(테스트 때 발견되지 않은 결함) 등,,
- 소프트웨어 개발 생명주기에서 가장 긴 기간
'소프트웨어공학' 카테고리의 다른 글
| 설계 (Part1) (0) | 2024.10.21 |
|---|---|
| 요구분석 (Part2) (0) | 2024.10.21 |
| 계획(프로젝트 계획과 관리) (part 2) (0) | 2024.10.20 |
| 계획 (프로젝트 관리와 계획) Part 1 (1) | 2024.10.20 |
| 소프트웨어 공학과 개발 프로세스 (Part2) (4) | 2024.10.20 |