[소프트웨어]
: 컴퓨터 프로그램 + 관련 기록문서(Documentation)
[소프트웨어의 분류]
1. 용도에 따른 분류
(과거)
1. 응용 소프트웨어 : 사용자의 원하는 목적에 맞게 개발된 소프트웨어 (ex. 워드,브라우저등)
2. 시스템 소프트웨어 : 하드웨어 관리, 응용 소프트웨어를 지원하는 소프트웨어 (ex. 운영체제, 네트워크관리프로그램등)
(오늘날) - 암기X
1. 시스템 소프트웨어 : 다른 프로그램 서비스위한 프로그램 (ex. 컴파일러, 에디터, 파일관리자)
2. 실시간(RT) 소프트웨어 : 즉시적 반응을 리턴하는 프로그램 (ex. 자동차 엔진제어 SW)
3. 비지니스(Business) 소프트웨어 : 비지니스 활동을 지원하는 프로그램 (ex. MIS(경영정보시스템))
4. 공학 및 과학용 소프트웨어 : 계산활동 지원하는 프로그램 (ex. 인공위성궤도분석, CAD)
5. 내장형(Embedded) 소프트웨어 : 제한적 기능 수행 (ex. IOT 제어)
6. 개인용 소프트웨어 : 특정 개인의 목적위해 사용되는 프로그램 (ex. 워드,PPT등)
7. 웹 기반 소프트웨어 : 내 서버에 수정하면 그 수정적용된것을 사람들이 보는 구조의 프로그램 (ex. 온라인 회원관리 프로그램)
2. 작동경로에 따른 분류
1. Stand-alone(독립형) : 다른 소프트/하드웨어와 연결X (ex. 워드)
2. Embedded(내장형) : 특정(Unique) 응용위해 설계, 적은 확장성 (ex. 자동차제어 SW)
3. Real-Time(실시간형) : 적은 시간차내 기능해야함 (ex. 레이더관측)
4. Networt(네트워크형) : 복수의 기기서 동시작동(ex. 웹기반 게임)
[소프트웨어의 특징]
- 소프트웨어의 비가시성(Invisibility) : 소프트웨어 개발중/완성품의 구조가 코드안에 숨어있어 파악이 어려움
- 요구사항의 변경과 주변 환경의 변화에 따라 소프트웨어는 수정되고 진화해야함 (프레스만이 정의 - 소프트웨어의 의미는 '제조'가 아닌 '개발'이다.)
[소프트웨어의 특성으로 인한 개발의 어려움]
- 소프트웨어는 물리적 형태 X : 개발과정/진행사항에 대한 정확한 이해 및 파악이 어려움
- 만드는 과정중 오류확인의 어려움 => 프로젝트 실패 가능성 高
[소프트웨어 개발 단계]
: 요구사항 분석 -> 설계 -> 구현 -> 테스팅
[소프트웨어 개발에 연관된 역할들]
1. 고객(Customer)
- 소프트웨어의 개발 필요성을 결정(이런 프로그램이 필요해!)
- 개발 의뢰, 비용 제공
2. 사용자(User)
- 사용자 측면에서의 요구사항을 제공 (주로 벤치마크, 설문조사 등을 통해 이런 요구사항 확인)
3. 개발자(Developer)
- 주어진 시간 및 비용내에서 사용자들의 요구사항을 기반으로 소프트웨어 시스템을 개발하는 역할
[과거의 소프트웨어 개발]
- 소프트웨어 프로그래밍 = 예술 (ex. 한줄코딩)
: 체계적 방법의 부재(정형적인 방법론X, 개개인의 시행착오로 기술습득) => 대규모 프로젝트의 어려움
1. 수백명의 개발자 : 의사소통, 상호협력의 어려움
2. 오랜 개발시간 : 비용, 시간
3. 모호하고 복잡한 요구사항 : 너무많은 요구사항, 빈번한 요구사항의 변화
=> 소프트웨어 위기(SW crisis) : 증가하는 수요에 비해 어려운 공급 및 개발
=> 소프트웨어 위기의 해결 : 공학의 패러다임을 이용(Art => Engineering)
[소프트웨어 공학]
: 소프트웨어의 개발, 운용, 유지보수 및 폐기에 대한 체계적인 접근 방법
<목표> : 추정된 비용과 기간에 고객이 원하는 품질 높은 소프트웨어를 개발하는것.
[과학, 공학, 예술]
- 예술(과거) : 자기 목표만 달성/ 독창적
- 공학(현재) : 다른사람과 체계속에서 자기역량 발휘
- 과학 : 공학+예술
[공학]
: 실제적 문제 해결 / 자원과 비용의 효과적 활용, 과학적 지식을 적용
<소프트웨어 공학>
: 소프트웨어 개발 기술, 절차 및 도구의 우수한 사례들을 정리해 소프트웨어 개발시 , 누구나 당면한 문제를 해결할수 있도록 체계적 기술 지식을 제공
[소프트웨어 공학의 주요 영역들]
1. 요구공학(Requirement Engineering)
: 고객의 요구를 이해, 목표와 제약사항을 확립 / 비용 증가, 납기 지연, 품질 저하 방지 위한 필수 요건
2. 아키텍쳐(Architecture)
: 요구사항을 보며 소프트웨어의 큰틀을 짜는 과정(전체적인 형태)
3. 개발 방법론(Development Methodology)
: 시스템 개발위해 어떤 방법으로 진행할지 다루는 분야 (구조적 방법론, 객체지향 방법론(class단위), 컴포넌트 방법론(package단위)) / 개발 기술 진화에 따라 지속적으로 공부해야함.
4. 테스팅(Testing)
: 효과적인 테스트 케이스 산출 방법론, 다양한 테스트 방법 연구
5. 프로세스(Process)
: 일련 작업의 흐름들중 적절한 거 선택(소프트웨어 개발, 진화에 사용되는 활동들의 집합)
6. 형상관리(Configuration Management)
: 변경관리대상인 형상 항복 식별, 변경통제, 기록 (GIT)
7. 품질(Quality)
8. 재사용(Reuse)
: 지식,요구분석,설계,문석등의 재사용(벤치마크등)
9. 프로젝트 관리(PM)
: 프로젝트 일정, 인력, 예산 관리.
10 정형기법(Formal Method)
: 요구사항 충돌 확인, 하드/소프트웨어 시스템 명세및 검증 기법
11. 유지보수(Maintenance)
: 개선목적 수정, 보안
[Summary]
1. 소프트웨어 특성 : 비가시성(Invisibility), 요구사항/주변환경에 따른 지속적 변화
2. 소프트웨어 공학 : 소프트웨어의 개발, 운용, 유지보수 및 폐기(전체적 과정)에 대한 체계적인 접근 방법( 우수사례 정리해 개발시 이를 이용해 문제해결하도록 만듬 )
3. 소프트웨어 공학의 등장 배경 : 기존의 소프트웨어 프로그래밍 = Art(개인적,독창적) => 대규모 프로젝트의 어려움, 소프트웨어 위기 => 공학의 패러다임을 이용
4. 소프트웨어 위기 : 소프트웨어의 수요의 증가추세를 공급이 따라가지 못함
5. 소프트웨어 공학의 분야 : 요구공학/아키텍쳐/개발방법론/테스팅/프로세스/형상관리/품질/재사용/프로젝트관리/정형기법/유지보수 등
6. 소프트웨어 관련 고객, 사용자 개발자의 역할 : 1. 고객 : 소프트웨어 개발 필요성, 비용 제공 / 2. 사용자 : 사용자입장에서의 요구사항 제공 / 3. 주어진 시간,비용으로 요구사항 만족 |
'기타 > [소프트웨어 공학]' 카테고리의 다른 글
6장. 리스크 관리 (0) | 2019.04.17 |
---|---|
5장. 프로젝트 계획 및 통제 (0) | 2019.04.10 |
4장. 요구사항 개발 및 관리 (0) | 2019.04.03 |
3장. 프로젝트 관리 (1) | 2019.03.21 |
2장. 소프트웨어 프로세스와 생명주기 (0) | 2019.03.13 |