* 소프트웨어 공학 software engineering
소프트웨어의 개발, 운용, 유지보수 등의 생명 주기 전반을
체계적이고 서술적이며 정량적으로 다루는 학문
공학을 소프트웨어에 적용하는 것
경제적이고 시간적인 손실을 방지하고자
소프트웨어를 효율적으로 개발
ex)
애자일 기법
1. 비용의 문제
2. 시스템 복잡도의 향상
3. 고객에게 유용한 소프트웨어를 전달
4. 높은 다양성과 신뢰도를 가진 소프트웨어 개발
5. 비용은 장비값, 서버비, 인건비, 시간과 노력
좋은 소프트웨어가 가져야할 특성
1. 유지가능성
2. 신뢰성과 보안
3. 효율성
4. 접근가능성
소프트웨어 공학 분야
1. 소프트웨어 요구사항 추출, 분석, 명세, 검증
2. 소프트웨어 설계 ex) UML
3. 소프트웨어 개발 프로그래밍 언어 사용
4. 소프트웨어 시험
5. 소프트웨어 유지 보수
6. 소프트웨어 형상 관리 버전과 소스 제어를 표준화시켜 복잡한 시스템을 구조적으로 관리
7. 소프트웨어 공학 관리
8. 소프트웨어 개발 프로세스 ex) 애자일 프로세스, 폭포수 프로세스
9. 소프트웨어 공학 도구
10. 소프트웨어 품질
* 소프트웨어 위기 software crisis
컴퓨터 계산 용량과 문제의 복잡성이 급격히 증가함에 따라
발생한 충격을 서술
정확하게 이해할 수 있고 검증 가능한
컴퓨터 프로그램을 작성하는 것이 얼마나 어려운가를 의미
소프트웨어 위기의 뿌리
1. 복잡성
2. 기대
3. 변화
소프트웨어 위기의 원인
1. 소프트웨어의 대규모화, 복잡화에 따른 개발비용 증대
2. 하드웨어 비용 대비 소프트웨어 가격 상승폭 증가
3. 유지보수의 어려움
4. 개발정체 현상
5. 프로젝트 개발 소요 시간 예측의 어려움
6. 신기술에 대한 교육과 훈련 부족
소프트웨어 위기의 증상
1. 예산 초과
2. 일정 지연
3. 비효율적인 소프트웨어
4. 낮은 품질
5. 요구 사항 만족 실패
6. 소프트웨어 관리 실패
7. 고객 전달 실패
소프트웨어 위기를 해결하고자 많은 방법을 제시했지만
만병 통치약은 없다는 결론이 나왔다.
일반적으로 소프트웨어 프로젝트가
1. 대규모이고
2. 복잡하고
3. 요구 조건이 명확하지 않고
4. 낯선 측면을 내포할 경우
여전히 사실상 커다랗고 예측 불가능한 문제에 취약하다
대응 방안
1. 객체 지향
2. 캡슐화
3. 구조적 프로그래밍
4. 통합 개발 환경
5. 컴포넌트화
6. 프로토타이핑
7. 애자일
8. 반복형 개발
9. 버그 / 이슈 관리 시스템
10. 버전 관리 시스템
11. 가비지 콜렉션
* 요구 공학 requirement engineering
시스템 요구사항 문서를 생성, 검증, 관리하기 위하여 수행되는
구조화된 활동의 집합
시스템 요구사항 문서를
생성, 검증, 관리하기 위하여 수행되는
구조화된 활동의 집합
목적
1. 이해관계자 사이의 효과적인 통신 수단을 제공
2. 요구사항에 대한 공통 이해 설정
3. 요구사항 변경 추적
4. CMM level 2 달성
5. 비즈니스 수행 방법 개선
6. 프로젝트 비용 초과와 기간 지연 방지
* 스크럼 Scrum
프로젝트 관리를 위한 상호, 점진적 개발방법론
애자일 소프트웨어 개발 중 하나
특정 언어나 방법론에 의존하지 x
객체지향 언어와도 관련 x
넓은 응용 범위의 개발 기법
1. 기능, 개선점에 대한 우선 순위 부여
2. 개발 주기는 30일 정도로
3. 개발 주기마다 실제 동작할 수 있는 결과 제공
4. 개발 주기마다 적용할 기능이나 개선에 대한 목록 제공
5. 매일 15분씩 회의
6. 항상 팀 단위로 생각
7. 원활한 의사소통을 위한 구분 없는 열린 공간
스크럼이 추구하는 가치
1. 확약
2. 전념
3. 정직
4. 존중
5. 용기
스크럼은 30일 간의 주기로
실제 동작하는 제품을 만들면서 개발을 진행시킨다
30일 뿐만 아니라 1~4주의 유연성을 가지기도 한다
스크럼 단계
1. 제품 백로그
2. 스프린트
3. 스프린트 계획 회의
3. 스프린트 백로그
4. 일일 스크럼 회의
5. 실행 가능한 제품 개발
제품 백로그
개발할 제품의 요구 사항 목록
스프린트
반복적인 개발 주기
스프린트 계획 회의
스프린트 목표와 스프린트 백로그를 계획
스프린트 백로그
스프린트 목표에 도달하기 위해 필요한 작업 목록
스크럼 직책
1. 제품 책임자
2. 스크럼 마스터
제품 책임자
제품 백로그를 정의해서 우선순위를 정해준다
스크럼 마스터
팀원을 코칭하고
프로젝트의 문제 상황을 해결
중심이 되는 상위 관리자
'소프트웨어학부 > 소프트웨어 공학' 카테고리의 다른 글
중간고사 21~24 (시퀀스 다이어그램, 활동 다이어그램) (0) | 2024.04.19 |
---|---|
중간고사 17~20 (디스패처 아키텍처 스타일, 모델-뷰-컨트롤러 패턴, 파이프-필터 패턴, DFD 데이터 흐름도) (0) | 2024.04.19 |
중간고사 13~16 (SOLID, 정보 은닉, 소프트웨어 아키텍처, 발행 구독 아키텍처 스타일) (0) | 2024.04.19 |
중간고사 09~12 (유스 케이스 다이어그램, 유스케이스 다이어그램의 관계, 클래스 다이어그램, 클래스 관계) (0) | 2024.04.19 |
중간고사 05~08 (제품 백로그, SRS 소프트웨어 요구 명세, SoC 관심사 분리, 모듈성) (0) | 2024.04.19 |