Software란
- 서영 조
- 2022년 10월 15일
- 2분 분량
1. Software
Program과 Software
Program: 프로그래밍 언어로 된 명령어 집합
Software: Program과 data 그리고 그 산출물(문서 등)의 집합
Software의 종류
Generic: 패키지화된 소프트웨어, COTS(제품화된 소프트웨어)
Beskpoke: 고객의 요구사항에 따른 소트웨어(예: 병원의 환자관리 시스템, 재고관리 시스템)
Software 개발단계
1.요구사항 정의
고객의 요구사항을 도출하고 이를 고객이 이해할 수 있는 문서의 형태로 기술하는 것
2.요구사항 분석
고객의 요구사항을 개발자가 이해할 수 있는 수준으로 분석하는 것
3.아키텍쳐 설계
소프트웨어를 모듈이라는 컴포넌트 단위로 분리하는 것
4.상세 설계
각 모듈별로 알고리즘 레벨까지 설계하는 것
5.구현 및 테스팅
설계대로 구현하고 테스팅하는 것
6.유지보수
환경에 변화, 새로운 요구사항의 등장, 문제의 발생에 대응하여 소프트웨어를 유지 및 보수하는 것
완전 유지보수: 새로운 요구사항이 등장하여 소프트웨어를 유지보수 하는 것
적응 유지보수: 새 환경에 적응하기 위해서 소프트웨어를 유지보수 하는 것
수정 유지보수: 문제를 해결하기 위한 유지보수
예방 유지보수: 미래를 대비하기 위한 유지보수
*유지보수 단계에 많은 비용이 드는 이유?
일반적으로 소프트웨어 개발단계 중 유지보수 단계에서 개발비용의 60~70%가 소모된다. 소프트웨어는 하드웨어와 달리 고정된 형태가 아닌 지속적으로 개선되어야 하는 특성을 가진다. 더불어 일단 구현이 시작되면 연관된 개발단계의 앞 부분, 모듈까지 수정해야 하므로 수정해야 할 부분이 많아진다. 따라서 이후 유지보수를 용이하게 하기 위해서 소프트웨어 설계시 적절한 모듈화를 시키는 것이 중요하다.
소프트웨어의 종류
1.System software
다른 시스템의 실행을 도와주는 소프트웨어
예: compiler, editor
2.Business application software
비즈니스를 도와주는 소프트웨어
예: ERP, MIS
3.Engineering & Scientific software
예: 수치해석
4.Real-time software
온라인≠Real-time
온라인: 바로바로 처리되는 것
Real-time: 온라인(바로바로 처리)+적정한 시간 내에 처리되는 것
예: 무기 관리 시스템
5.Embedded software
6.AI software
예: 신경망 등
7.Entertainment software
예: 게임
2. Software Crisis
기간 지연
비용 초과
명세와 불일치
비신뢰성
엄청난 유지보수 비용
⇒SW적인 mind의 부족, 관리 부족, SE적 접근의 부족
Software Engineering(SE)의 목표
"품질 좋은 소프트웨어를 최적의 비용으로 계획된 일정에 맞게 개발하는 것"
⇒품질과 생산성의 동시 추구
*SW에 대한 오해
1.개발자를 더 투입하면 계획된 일정에 맞춰 개발할 수 있지 않을까?
→개발자가 프로젝트에 적응하는 시간이 필요하다.
2.목표에 대한 일반적인 설정만으로 프로젝트를 시작하는데 충분하다.
→이후에 문제가 발생하여 수정하는데 더 많은 비용이 소모된다.
3.일단 동작하는 소프트웨어가 만들어지면 우리의 역할은 끝난 것이다.
→코드를 작성하는 것은 정말 큰 문제의 일부분이다.
4.일단 프로그램이 실행되기 전까지는 평가할 방법이 없다.
5.소프트웨어 지침을 믿고 그대로 따른다고 무조건 좋은 결과가 나오는 것은 아니다.
→하나의 보편적인 지침일 뿐이다.
6.요구사항 변화에 쉽게 적응할 수 있도록 소프트웨어를 유연하게 설계해야 한다.
→모듈이라는 컴포넌트별로 분리하는 것이 중요하다.
7."나만 잘하면 돼"의 접근방식은 옳지 않다.
→전체적으로 문제가 된다.
Comments