목표
- 소프트웨어 개발과 프로세스 적용 관련 지식을 활용하여 SW 안정성 보장, 품질 평가를 위해 case 도구 및 다양한 기법 학습
공학과 소프트웨어 정의
- 공학 : 과학적 원리 지식 도구 등으로 새로운 제품, 도구 만드는 것
- 소프트웨어 : 프로그램, 개발, 운용, 보수 전체
소프트웨어 공학
- SW 개발, 유지보수 등 생명주가 전방 체계적으로 다루는 학문
=> 좋은 SW 개발, 관리를 위함
소프트웨어 공학의 목적
1. 소프트 개발의 어려움
2. 효율적인 개발을 통한 생산성 향상
3. 고품질 소프트웨어 생산
소프트웨어 공학 구성 요소
1. 원리
2. 기법
3. 도구
4. 언어
소프트웨어 공학 영역
1. 요구공학 requirement engineering
- SW 개발에서 첫 작업
- 목표와 제약사항 확립하여 기능, 성능(user requirements 요구사항) 정의하는 과정
- 다른 시스템과의 인터페이스 등 정의하는 과정
- 비용 조건, 납기 지연, 품질 저하 방지
2. 아키텍처 architecture
- 아키텍처 구성요소와 요소 간의 관계, 시스템 기능, 속성 및 제약사항을 적절히 반영하는 구조를 조직화하여 시스템 전체적인 형태
-> 컴포넌트와 커넥터로 시스템을 분할하여 구조화하는것
3. 개발 방법론 development methodology
- 어떤 방법으로 개발할 것인가
- 구조적 방법론, 객체지양 방법론, 컴포넌트 방법론
- 개발 조직 특성 및 여건에 맞게 조정 및 재정의 될 수 있음
4. 테스팅 testing
- 오류 없는 SW 개발을 위해 수행하는 테스트 작업
- 구성 : 단위 테스팅, 통합 테스팅, 시스템 테스팅
5. 프로세스 process
- 소프트웨어 개발 및 진화에 사용되는 활동, 방법
- 요구되는 인력, 절차, 방법, 도구 들을 통합하는 수단
- 프로세스 정의방법, 관리조직, 관리 기반 구조등에 대해 연구됨
=> 소프트웨어 프로세스 특성을 설명하는 모형, 효과적인 프로세스 실현을 위한 단계적 접근 방법 명시 모델 연구
6. 형상 관리 configuration management
- 소프트웨어 구성요소에 대한 변경 관리 대상인 형상 항목을 식별해서 변경을 통제 기록함
- 형상 식별, 형상 통제, 형상 상태 확인, 형상 검사
7. 품질 quality
- 소프트 웨어 품질은 제품 품질 product quality와 프로세스 품질 process quality로 구분
- 제품 품질 : 제품 자체의 품질
- 프로세스 품질 : 소프트웨어 개발하는 프로세스가 정확하고 우수한지. 좋은 프로세스 품질은 좋은 소프트웨어 생산
- SQA, 제품 검사, 평가 모델, 국제 표준
8. 재사용 reuse
- 코드 재사용
- 응용 분야 지식
- 개발 경험
- 설계 결정
- 시스템 지식
- 요구사항 분석
- 설계, 문서
=> 코딩 단계 이전의 분석 및 설계 단계서 만들어진 산출물을 재사용하려는 노력이 계속됨
9. 프로젝트 관리 project management
- 프로젝트의 일정, 인력 및 예산 등 관리하여 프로젝트를 성공적으로 이끌기 위해 요구됨
- 프로젝트 관리 영역 : 프로젝트 통합, 범위, 일정, 비용, 품질, 인적자원, 의사소통, 위험, 조달관리
10. 정형 기법 formal method
- 수학과 논리학 기반으로 소프트웨어 시스템을 명세하거나 검증하는 기법
- 정형 논리 formal logic, 수리 논리 mathematical logic -> 정형 명세 기법, 수식 사용 -> 체계적으로 시스템 검증
11. 유지 보수 maintenance
- 고객에게 인도된 후에도 개선 목적으로 일부분 수정, 유지보수
- 수정 유지보수 : 오류 수정
- 적응 유지보수 : 새환경에서 적응할수있도록 수행
- 완전 유지보수 : 새 기능 추가, 구조 성능 개선
- 예방 유지 보수 : 잠재적인결함 예방
소프트웨어 분류
1. 관리 소프트웨어
- 자료를 받아 가공 후 정보 제공
2. 제어 소프트웨어
- 각종 센서를 이용하거나 기기 동작을 제어하는 소프트웨어
3. 임베디드 소프트웨어
- 장비나 기기에 내장된 형태의 소프트웨어
소프트웨어 개발 프로세스
- 소프트웨어 제품 개발에 필요한 과정
1. 계획
2. 요구분석
3. 설계
4.. 구현
5. 테스트
6. 유지보수
1. 소프트웨어 개발 개획
- 무엇을 개발할지 결정
- 타당성 분석
- 요구사항 식별하여 시스템 정의서 문서화
- 개발 계획서 작성
2. 요구분석
- 시스템 목표 확립
- 요구사항 발견, 모델링, 명세화 과정
- 만족해야할 기능, 성능, 타 시스템과 인터페이스 규정
=> 요구 사항 분석 명세서 작성
3. 설계
- 제품의 공학적 표현
- 요구사항으로 추적
- 구현 이전에 소프트웨어 뼈대를 정의해 구현 기반 만듬
3.1 상위 설계 high level design
- 아키텍처 설계, 예비 설계, 시스템 수준 소프트웨어 구성, 컴포넌트 간 관계로 구성된 시스템 전체적인 구조
-> 구조 설계, DB 설계, 인터페이스 설계
=> 시스템 구조도, DB 설계도(ERD), 화면 및 출력물 레이아웃
3.2 하위 설계 low level design
- 모듈 설계, 상세 설계
- 각 구성요소들의 내부 구조와 행위 결정
- 구성요소의 제어와 데이터간 연결에 대한 구체적 정의
-> 컴포넌트 설계, 자료구조 설계, 알고리즘 설계
=> 절차 기반, 자료 위주,객체 지향
4. 구현
- 프로그래밍 수행
- 코딩과 디버깅
- 단위 시험 unit test 실시
- 규칙 : 높은 가독성, 간결하고 명확한 코딩
5. 테스트 test
- 소프트 내 오류 발견하여 수정하는 단계
- 테스트 절차
1. 테스트 계획
2. 테스트 케이스 설계
3. 테스트 실행 및 평가
4. 테스트 결과 분석
5. 오류 추적 및 수정
- 결과 분석 : 테스트로 얻은 값과 목표한 값 비교
-> 보고서 작성
6. 유지 보수
- 오류 수정, 환경 변화에 따른 적응, 기능 향상에 따른 요구사항 변경 고려
- 성능 개선, 하자 보수, 새 환경에 대한 이식 및 수정
소프트웨어 프로젝트
- 제품이나 서비스를 만드는데 수행해야하는 행동
- 구성요소 : 목표, 비용, 참여자, 기술, 고객, 기간 등
- 프로세스 : 소프트웨어 제품 구상 -> 제안 요청서 배포 -> 제안서 제출 -> 심사 -> 계약서 작성 -> 프로젝트 시작 및 수행 -> 프로젝트 종료 및 제품 인도
프로젝트 관리
- 프로젝트 요구사항을 만족하기 위해 지식, 기술, 툴을 프로젝트 활동에 적용
1. 프로젝트 통합 관리
- 변경 관리를 통해 수정된 내용으로 개정된 프로젝트 정함
2. 범위 관리
- 프로젝트 범위 정의. 검증. 통제
3. 일정 관리
- 기간 내수행하기 위한 프로세스로. 작업 정의, 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
4. 비용 관리
- 예산 안에서 완료하도록 요구되는 프로세스. 자원기획, 비용산정, 비용예산수립, 비용 통제
5. 프로젝트 품질 관리
- 품질 기획, 품질 보증, 품질 통제
6. 인적 자원 관리
- 조직 기획, 팀 확보, 팀 개발
7. 위험 관리
- 위험 관리 기획, 위험 식별, 정성적 위험 분석, 정량적 위험 분석, 위험 대응 기획, 위험 감시 및 통제
8. 의사소통 관리
- 의사소 소통 기획, 정보 배포, 성과 보고, 성과 정보
9. 프로젝트 조달 관리
- 조달 기획, 권유 기획, 공급자 유치, 공급자 선정, 계약 관리, 계약 종료
'컴퓨터과학 > SW, DB' 카테고리의 다른 글
소프트웨어 공학 활용 - 3 소프트웨어 개발 방법론 (0) | 2020.05.18 |
---|---|
소프트웨어 공학 활용 - 2 소프트웨어 개발 라이프사이클 (0) | 2020.05.18 |
데이터베이스 7 - 릴레이션 정규화 (0) | 2020.05.17 |
데이터베이스 6 - 논리적 설계 (0) | 2020.05.17 |
데이터베이스 5 - 개념적 설계 (0) | 2020.05.17 |