본문 바로가기

자격증/정보처리기사

[소프트웨어 구축] 1. 소프트웨어 공학 개념

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