ch 01. 소프트웨어 공학
1. 소프트웨어 공학(Software Engineering)
1) 정의
- 소프트웨어 위기를 극복하고 효율적으로 품질 높은 소프트웨어를 개발하기 위한 학문
2. 소프트웨어공학의 3R
1) 정의
- 완성된 소프트웨어를 기반으로 역공학, 재공학, 재사용을 통해 소프트웨어의 생산성을 극대화 하는 기법
2) 역공학(Reverse Engineering)
- 기존 개발된 시스템을 CASE(Computer Adied Software Engineering) 도구를 이용하여 요구 분석서, 설계서 등의 문서로 추출하는 작업
- 개발 단계를 역으로 올라가 기존 개발된 시스템의 코드나 데이터로부터 설계 명세서나 요구 분석서 등을 도출하는 작업
3) 재공학 (Re-Engineering)
- 소프트웨어의 위기를 해겨하기 위해 개발의 생산성이 아닌 유지보수의 생산성으로 해결하려는 기법
- 기존 소프트웨어를 폐기하지 않고 기능을 개선시키거나 새로운 소프트웨어로 재활용하는 소프트웨어 재사용 공법
● 재공학 과정
- 분석(Anaylsis) -> 재구성(Restructuring) -> 역공학(Reverse Engineering) -> 이관(Migration)
4) 재사용(Reuse)
- 이미 개발되어 있는 소프트웨어의 전체 또는 일부분을 다시 사용
● 재사용 범위
- 함수와 객체 재사용
- 컴포넌트 재사용
- 애플리케이션 재사용
● 재사용 방법
- 합성 중심 (Composition Based)
-> 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법
- 생성 중심(Generation Based)
-> 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
3. 소프트웨어 개발 단계
계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
1) 계획
- 무엇을 개발할 것인지 명확하게 정의
- 개발 범위를 결정
- 시스템의 성격을 파악하여 비용과 기간을 예측
2) 요구사항 분석(Requirements Analysis)
- 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 고객과 함께 정의
3) 소프트웨어 설계 (Design)
- 시스템이 어떻게 동작하는지를 정의
- 요구사항 분석 단계에서 산출된 요구사항을 기준으로 입력자료, 처리내용, 출력자료 등을 정의
● 설계 구분
- 시스템 구조 설계
: 모듈 간의 관계와 구조 설계
- 프로그램 설계
: 각 모듈의 처리 절차나 알고리즘 설계
- 사용자 인터페이스 설계
: 사용자가 시스템을 사용하기 위해 보여지는 부분을 설계
4) 구현(Development)
- 코딩과 디버깅이 이루어지며, 단위(모듈)테스트를 진행
5) 테스트 (Test)
- 구현된 소프트웨어가 요구사항을 만족하는지 검사
6) 유지보수 (Maintenance)
- 소프트웨어를 사용하며 문제점을 수정하고, 새로운 기능을 추가
ch 2. 소프트웨어 개발 방법론
1. 개념
- 소프트웨어 개발에 필요한 과정(절차, 방법, 산출물 , 기법, 도구)들을 체계적으로 정리한 것
2. 종류
1) 구조적 방법론
- 절차지향 소프트웨어 개발 방법론
● 구조적 방법론 기본 개발 과정
요구사항 분석 -> 구조적 분석 (데이터 흐름도) -> 구조적 설계(모듈 중심 설계) -> 구조적 프로그래밍
● 구조적 방법론 구성 요소
- 데이터 흐름도(DFD)
- 자료사전(DD)
- 상태 전이도 (STD)
- 소단위 명세서 (Minispec)
2) 정보공학 방법론
- 단순 S/W 개발이 아닌 기업의 경영전략에 초점
3) 객체 지향 개발 방법론
- 현실세계의 개체(Entity)를 속성(Attribute)과 메서드(Method)형태로 표현
- 객체, 클래스 간의 관계를 식별하여 설계 모델로 변환하는 방법론
- 특징 : 캡슐화, 정보은닉, 상속, 다형성, 추상화
4) CBD(Component Based Development) 분석 방법론
- 재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트를 조합해 어플리케이션 개발
5) 애자일 방법론
- 기존 방법론들이 절차를 중시한 나머지, 변화에 빠른 대응을 할 수 없다는 단점 개선을 위해 등장
- 종류 : XP(eXtreme Programming), SCRUM, FDD, Crystal 방법론 등
3. 소프트웨어 개발 모델
1) 폭포수 모델(Waterfall Model)
- 계획, 분석, 설계, 구현, 테스트, 운영 등 전과정을 순차적으로 접근하는 개발모델
- 각 단계의 검증 후에 다음 단계를 진행
2) 프로토타이핑 모델(Prototyping Model)
- 고객이 요구한 주요한 기능을 프로토타입으로 구현하여 완성해가는 모델
- 프로토타이핑에 의해 만들어진 프로토타입은 폐기될 수 있고, 재사용될 수도 있다.
● 순서
계획 수립 -> 프로토타입 개발 -> 사용자 평가 -> 구현 -> 인수
3) 나선형 모델(Sprial Model)
- 폭포수 모델과 프로토타입 모델의 장점을 수용하고, 위험 분석을 추가한 점증적 개발 모델
4) RAD(Rapid Application Development) 모델
- 매우 짧은 개발 주기를 강조한느 점진적 소프트웨어 개발 방식
- CASE(Copmputer Adied Software Engineering) 도구를 이용해 시스템을 개발
5) V 모형
- 폭포수 모델에 시스템 검증과 테스트 작업을 강조
- 단위 테스트 -> 통합 테스트 -> 시스템 테스트 -> 인수 테스트
6) 4세대 기법 (4th Generation Techniques)
- 요구사항 명세로 부터 원시코드를 자동으로 생성할 수 있게 해주는 모델
4. 애자일(Agile) 방법론
1) xP(eXtream Programming)
- 문서보다는 코드를 중시, 5가지 핵심가치와 , 12개의 실천 항목이 존재
● XP 5가지 핵심 가치
- 용기, 존중, 의사소통, 피드백, 단순성
● 12가지 실천사항
- 짝 프로그래밍
- 계획 세우기
- 테스트 기반 개발
- 고객 상주
- 지속적인 통합
- 코드 개선
- 작은 릴리즈
- 코딩 표준
- 공동 코드 소유
- 간단한 디자인
- 시스템 메타포어
- 작업시간 준수
2) 스크럼(Scrum)
- 소프트웨어의 포함될 기능. 개선점에 대한 우선순위를 부여
- 개발 주기는 30일 정도로 조절하고 개발 주기마다 실제 동작할 수 있는 결과를 제공
● 스크럼의 주요 개념
- 제품 백로그 (Product Backlog)
: 개발할 제품에 대한 요구사항 목록
- 스프린트 (Sprint)
: 반복적인 개발 주기 , 1~3주의 짧은 기간
- 스프린트 계획 회의 (Sprint Planning Meeting)
: 스프린트 목표와 스프린트 백로그를 계획하는 회의
- 스프린트 백로그 (Sprint Backlog)
: 각각의 스프린트 목표에 도달하기 위해 필요한 작업 목록
- 일일 스크럼 회의 (Daily Scrum Meeting)
: 매일 진행되는 15분 정도의 미팅
- 실행 가능한 제품 (Shippable Product)
: 스프린트의 결과로써 나오는 실행 가능한 제품
- 제품 책임자 (Product Owner)
: 제품 백 로그를 정의하여 우선순위를 정해줌
- 스크럼 마스터 (Scrum Master)
: 프로젝트 관리자
3) 크리스털 (Crystal)
- 프로젝트의 규모와 영향의 크기에 따라서 여러 종류의 방법론을 제공
4) FDD(Feature-Driven Development)
- 신규 기능 단위로 하는 개발 방법론
5) ASD(Adaptive Software Development)
- 합동 애플리케이션 개발을 사용하는 방법론
6) 린(Lean)
- 도요타 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용
5. IT 서비스 관리
1) SLM(Service Level Management)
- 서비스 수준을 정량적으로 측정하고, 실적을 평가하여 미흡한 부분을 개선함으로써 서비스의 품질을 높이는 일련의 관리 및 활동
2) SLA(Service Level Agreement)
- 소프트웨어 수요자와 공급자 사이의 상호 동의에 의해 서비스 수준을 명시적으로 정의한 문서
3) ITSM(Information Technology Service Managment)
- 최종 사용자를 위한 IT 서비스를 구현, 전달 및 관리하기 위한 일련의 정책과 관행
4) ITIL (IT Infrastructure Library)
- IT 서비스를 쉽게 제공하고 관리할 수 있는 가이드 혹은 프레임워크
'자격증 > 정보처리기사' 카테고리의 다른 글
[java] 문제 풀이 (1) | 2023.10.03 |
---|---|
[c언어] 문제 풀이 (0) | 2023.09.29 |