1-1 소프트웨어
1. 소프트웨어란?
: 프로그램과 그 외의 문서로 이루어진 것. 여기서 말하는 문서는 프로그램의 개발 및 운용 등에 필요한 정보 문서.
2. 소프트웨어의 특징(6)
: 복잡성, 순응성, 변경성, 비가시성, 복제용이성, 비마모성
(마모되다: 마찰 부분이 닳아서 없어지다)
3. 소프트웨어의 유형(3)
소프트웨어 분류 | 특징 | 소프트웨어 카피 수량 | 요구되는 하드웨어 | 개발 인력 |
주문형 소프트웨어 | 특정 대상의 요구를 만족시키기 위해 제작한 소프트웨어 |
적음 | 낮음 | 많음 |
패키지 소프트웨어 | 패키지화 해 상업적으로 판매하는 소프트웨어. 워드프로세서 | 중간 | 높음 | 중간 |
임베디드 소프트웨어 | 다른 시스템에 내장된 소프트웨어 | 많음 | 중간 | 적음 |
4. 시스템이란?
: 필요한 기능을 실현하기 위해 관련 요소를 어떤 법칙에 따라 조합한 집합체
5. 시스템의 성질(4)
: 서브 시스템, 기능적 분할, 시스템 경계, 자동화 경계
(시스템 경계: 시스템의 내부, 외부가 존재)
1-2 소프트웨어 개발 작업
1. 개발 작업의 기본 활동(5)
: 명세화 →설계 → 코딩 → 검증 → 유지보수 (→ 명세화...의 반복)
2. 개발 작업의 특징 및 어려움(5)
- 명세화의 어려움: 고객 의도 파악을 정확하게 하기 어려움
- 재사용의 어려움: 미리 재사용할 부품을 제작하기 어려움
- 예측의 어려움: 외부 요소의 영향을 받아 플젝 규모 예측이 어려움
- 유지보수의 어려움: 타인의 코드를 이해하고 고치기 어려움.
- 고품질의 어려움: 모든 실행 조합을 테스트 하는 것은 불가능
3. 소프트웨어 위기란?
: 소프트웨어 수요와 복잡성이 증가함에 따라, 기본 방법이 충분하지 않아 발생하는 문제
4. 소프트웨어 위기의 원인
: 요구 증가, 복잡도 증가, 난이도 증가 + 같은 인력, 같은 방법, 같은 도구
1-3 소프트웨어 공학의 접근 방법
1. 즉흥적인 개발의 문제점(5)
: 개발 지연, 예산 초과, 낮은 품질, 유지보수 곤란, 재작업 발생
2. 소프트웨어 공학이란?
: 소프트웨어의 개발, 운영, 유지보수, 소멸에 대한 체계적인 접근 방법.
3. 소프트웨어 공학의 목표(6)
: 복잡도 (↓), 비용 (↓), 개발 기간 (↓), 대규모 프로젝트 관리, 고품질 소프트웨어, 효율성
(한마디로, 품질 좋은 소프트웨어를 최소 비용으로 계획된 일정에 맞추어 개발하는 것)
1-4 소프트웨어 공학의 주제
1. 목표를 달성하기 위해 다루는 분야(3)
- 단계적 프로세스(생산성!): cycle(계획 → 분석 → 설계 → 구현 → 테스팅 및 통합 → 유지보수)
- 품질 보증(V&V)(품질!):
(1) 검토: 단계별로 맞게 진행되었는지 검사
(2) 확인: 단계의 결과물이 수준에 맞게 생산되었는지 검사
(3) 테스팅: 구현된 소프트웨어를 실행해 예상된 결과를 보이는지 확인
- 프로젝트 관리(비용과 시간!): 프로젝트 계획, 자원관리, 리스크 관리, 프로젝트 수행과 모니터
2. 품질과 관련된 바람직한 소프트웨어 특성(4)
: 개발자 입장 - 유지보수성, 효율성 / 사용자 입장 - 신뢰성, 유용성
3. 소프트웨어 공학의 결과(4)
: 방법(소프트웨어 제작에 사용하는 기법, 절차), 도구(자동화된 시스템), 프로세스(작업 순서), 패러다임(접근 스타일)
1-5 관련분야
1. 소프트웨어 공학의 역할
: 컴퓨터 공학 분야와, 응용 도메인 분야 사이에서 중간 가교 역할을 한다.
(응용 도메인: 컴퓨터 공학을 적용해 특정 문제를 해결하려는 분)
2. 지식 분야 by SWEBOK 3.0 (15)
- 공학 측면(5): 요구사항, 설계, 개발, 테스트, 유지보수
- 관리 측면(5): 형상관리, 관리, 프로세스, 방법론, 품질
- 학문 측면(5): 소프트웨어공학 전문가 역량, 소프트웨어공학 경제학, 컴퓨팅 기반, 수학적 기반, 공학적 기반
3. 컴퓨터과학과 소프트웨어공학의 차이점(3)
컴퓨터과학 | 소프트웨어공학 | |
강조 | 계산효율, 자원공유, 정확성, 최적화, 성능 | 생산성, 품질, 비용, 시간 |
측정 | 정량적으로 즉시 측정 가능 | SE방법, 도구, 프로세스는 즉시 측정 안 됨 |
집중 | 기술적 측면에 집중 | 기술 외적인 측면에 집중(비즈니스, 인간 공학 등) |
4. 컴퓨터과학과 소프트웨어공학의 관계
: 컴퓨터 과학의 이론과 기술적인 기초가 소프트웨어 공학에 적용된다.
'Computer Science > Software Engineering' 카테고리의 다른 글
[소공] 5장 요구 모델링 (0) | 2023.10.27 |
---|---|
[소공] 객체지향 방법론과 UML (1) | 2023.10.13 |
[소공] 4장 요구 분석 (1) | 2023.10.09 |
[소공] 3장 프로젝트 관리와 계획 (1) | 2023.10.07 |
[소공] 2장 프로세스와 방법론 (0) | 2023.09.12 |