소프트웨어 공학의 모든 것
· 19 min read
특징
- 복잡성: Complexity
- 순응성: Conformity
- 변경성: Changeability
- 비가시성: Invisibility
종류
- 주문형: 고객, 기업의 요구사항 만족
- 패키지형
- 임베디드형
위기
- 요구 증가, 복잡도 증가, 난이도 증가
목표
- 최소 비용
- 최고 효율
단계
- 요구 분석
- 설계
- 개발
- 테스트
- 유지보수
품질 보증
ISO 25010, 기신사효유이호보
- 기능적절성: Functional suitability
- 신뢰성: Reliability
- 사용성: Usability
- 효율성: Performance efficiency
- 유지보수성: Usability
- 이식성: Portability
- 호환성: Compatibility
- 보안성: Maintainability
프로 젝트 관리
- 계획
- 자원 관리
- 리스크 관리
- 프로젝트 수행 및 모니터링
연구 결과
- 방법: Method
- 도구: Tool
- 프로세스: Process
- 패러다임: Paradigm
연관 분야
ISO 24773, SWEBOK
구분 | 내용 | 비고 |
---|---|---|
소프트웨어 공학 전문가 기량 | 소프트웨어 엔지니어링의 전문적 실천에 필요한 지식과 기술 | 윤리, 커뮤니케이션, 팀워크 등 포함 |
소프트웨어 공학 경제학 | 소프트웨어 공학 프로젝트의 비용과 가치를 평가하는 지식과 기술 | 경제적 분석 기법, ROI, TCO 포함 |
컴퓨팅 기반 | 소프트웨어 엔지니어링의 기초가 되는 컴퓨팅 이론과 기술 | 데이터베이스, 네트워크, 운영체제 등 포함 |
수학적 기반 | 소프트웨어 엔지니어링 문제 해결에 필요한 수학적 이론과 기법 | 통계, 확률, 이산 수학, 계산 이론 등 포함 |
공학적 기반 | 일반 공학 원리를 소프트웨어 개발에 적용하는 지식과 기술 | 시스템 공학, 품질 관리, 성능 최적화 등 포함 |
vs 컴퓨터 과학
소프트웨어 프로세스
좋은 프로세스
- 예측 가능성: Predictability
- 테스팅과 유지보수 용이성: Testability, Maintainability
- 변경 용이성: Changeability
- 결함 제거 용이성: Fault Tolerance
프로세스 모델
폭포수모델
V모델
프로토타이핑 모델
나선형모델
- 프로토타입핑 반복
진화적 모델
- 점증적: incremental
- 반복적: iterative
Unified Process
- 여러 사이클: iteration
- 도입(inception) -> 정련(elaboration) -> 구축(construction) -> 전환(transition) 반복
애자일 프로세스
- 2~6주간의 짧은 주기
- 익스트림 프로그래밍: XP, 사용자 스토리, 매일 빌드/통합, TDD, 페어프로그래밍
- 스크럼: 프로덕트 백로그 -> 스프린트 백로그 -> 2-4주기 개발, 스크럼미팅 -> 배포 가능 프로덕트 추가
지원 프로세스
ISO 12207, SDLC
- 계약: 획득, 공급 프로세스
- 운영: 운영 프로세스
- 지원: 문서화, 형상관리, 품질 보증, 문제 해결 프로세스
- 관리: 관리, 개선 프로세스
- 엔지니어링: 개발, 유지보수 프로세스
관리 프로세스
- 계획
- 모니터링
- 제어, 분석
품질보증 프로세스
- 인스펙션 프로세스: 전문 인력, 고비용, 해결방법보다 이슈집중
- 프로세스 관리 프로세스: CMMI
형상 관리 프로세스
- 원시코드, 목적코드, 스크리븥, 관련 문서 전체 형상 관리
구조적 방법론
- 분할정복
- DFD: 배경도
정보공학 방법론
구분 | 내용 | 비고 |
---|---|---|
ISP | 기업의 장기적 전략 계획 수립 | 전략 계획서 |
BAA | 비지니스 영역별 데이터와 프로세스 모델링, 연관성 분석 | 요구사항 명세서 |
BSD | 데이터와 프로세스 설계 | 논리 ERD, 프로세스 구조도, 흐름도 |
SC | 데이터 상세 설계, 코딩 | 물리 ERD, UI, 코드 |
- 기업중심
- 전략적 시스템 계획중심
- 데이터 중심
- 분할 정복
- 공학적 접근
- 사용자의 적극 참여