소프트웨어공학 소개 (1)
소프트웨어공학 소개 (1)
소프트웨어란 프로그램(하드웨어를 제어하는 수 많은 명령어)과 그와 관련된 문서이다 소프트웨어 공학은 고객의 문제를 해결하기 위해서 대규모 품질 좋은 sw 시스템을 정해진 시간과 비용으로 개발하거나 발전 시키는 프로세스이다 주어진 비용과 자원에서 품질 좋은 sw를 기간내에 생성하는 것이 목적이다
SW 특징
- 복잡성 : 정해진 구조가 없기 때문에 복잡
- 순응성 : 법과 제도가 바뀌면 바뀌어야함
- 변경성 : 필요에 따라서 수정이 가능, 환경에 따라 변경
- 비가시성 : 소프트웨어의 구조가 코드로 내제되어 있어서 파악이 쉽지 않음
SW 종류
- 주문형 : 특정 고객의 수요 ex)웹사이트, 교통제어 시스템
- 패키지형 : 시장 판매 범용 컴퓨터에서 실행 비교적 저렴 신뢰성↑ 내 요구에 딱맞지 않을수 있다
- 임베디드 : 세탁기, 오븐, 자동차등에 사용 HW를 교체하지 않는한 SW업그레이드가 어려움
SW 개발작업
- 명세화 : SW 개발전 요구사항을 정리하고 설계하는 과정
- 구현 : 시스템 명세를 주어진 여건에 맞게 설계하여 프로그래밍 언어로 변환 (코딩)
- 검증 : 구현된 SW를 고객의 의도와 일치하는지 확인
- 유지보수 : 결함이나 사용자의 추가적 요구를 반영
SW 개발의 어려움
- 명세화의 어려움 : 고갱의 의도를 정확히 파악이 어려움, SW를 보고 사용하기 전까지는 정확한 파악이 힘듦
- 재사용의 어려움 : 미리 재사용할 부품(ex)건축의 벽돌)을 만들기 어려움 SW는 다루는 문제가 똑같지 않기 때문에
- 예측의 어려움 : SW는 외부요소(업무절차, 법규, HW, data형식, 성능 등)에 영향
- 유지보수의 어려움 : 다른 사람이 개발한 SW를 이해하고 수정하기 어렵다
- 고품질의 어려움 : 모든 케이스(경우의 수)를 테스트하기 어려움 코드한줄이 바뀌어도 전부 다시 테스트
SW 공학의 3가지 주제
1. 단계적 프로세스
| 단계 | 초점 | 주요작업과 기술 | 결과물 |
|---|---|---|---|
| 분석 | 시스템을 위하여 무엇을 만들것인가? | - 분석 전략 수립 - 요구 결정 - 유스 케이스 분석 - 구조적 모델링 - 동적 모델링 | 요구분석 명세서 |
| 설계 | 시스템을 어떻게 구축할 것인가? | - 설계 전략 수립 - 아키텍처 설계 - 인터페이스 설계 - 프로그램 설계 - 데이터베이스, 파일 설계 | 설계 명세서 |
| 구현 | 시스템 코딩과 단위 테스트 | - 프로그랭밍 - 단위 테스팅 - 시스템 안정화 및 유지보수 | 새 시스템 유지보수 계획 |
| 테스팅 | 시스템 요구사항에 맞게 실행 되나? | - 통합 테스팅 - 시스템 테스팅 - 인수 테스팅 - 시스템의 설치 - 프로젝트 관리 계획 | 테스팅 결과 보고서 |
2. 품질 보증
유지 보수성, 신뢰성, 효율성(자원낭비 x ), 유용성(사용자가 배우지 않고 사용하기 쉬운가?), 재사용성
3. 프로젝트 관리
- 프로젝트 계획 : SW개발전 범위와 타당성 검토 SW의 개발 방향
- 자원 관리 : 개바에 사용되는 인력, 도구, HW를 적절히 관리
- 리스크 관리 : 프로젝트를 실패로 끝나게 할 요인 예측 대응(개발자 변경, 요구사항 변경등)
- 프로젝트 수행과 모니터링 : 프로젝트 시작후 계획대로 진행되는지 모니터링
소프트웨어공학과 컴퓨터 과학의 차이
SW공학은 생산성, 품질, 시간, 비용을 강조 SW공학의 모든 방법은 이 4가지를 개선하기 위한것
컴퓨터 과학은 계산적 효율, 자원 공유, 정확성, 최적화, 성능을 강조 이를 개선하기 위해 알고리즘, 원리, 기술을 다룬다
This post is licensed under CC BY 4.0 by the author.