반응형
1. 소프트웨어 생명 주기(B)
1. 소프트웨어 생명 주기 (Software Life Cycle)
- 대표적인 생명 주기 모형
- 폭포수 모형
- 프로토타입 모형
- 나선형 모형
- 애자일모형
2. 폭포수 모형 (Waterfall Model)
- 폭포수 모형은 이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여 승인과정을 거친 후에 다음단계를 진행하는 개발 방법론
- 가장 오래되고 많이 사용된 전통적인 소프트웨어 생명 주기 모형
- 고전적 생명 주기 모형
- 각 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 함
3. 프로토타입 모형 (Prototype Model, 원형 모형)
- 요구사항을 파악하기 위해 실제 개발될 소프트웨어의 견본품(Prototype)을 만들어 최종 결과물을 예측
4. 나선형 모형 (Spiral Model, 점진적 모형)
- 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 소프트웨어를 개발하는 모형
- 보헴(boehm)이 제안
- 폭포수와 프로토타입의 장점에 위험 분석기능을 추가한 모형
- 누락되거나 추가된 요청사항을 첨가할 수 있음
- 유지보수 과정 필요 없음
- 계획 - 분석 - 개발 - 평가
5. 애자일 모형 (Agile Model)
- 요구사항변화에 유연하게 대응할 수있도록 일정한 주기를 반복하며 개발하는 모형
- 폭포수 모형의 반대
- 대표적인 개발 모형
- 스크럼(Scrum)
- XP(eXtreme Programming)
- 칸반 (Kanban)
- Lean
- 기능 중심 개발 (FDD; Feature Driven Development)
6. 애자일 개발 4가지 핵심 가치
- 프로세스와 도구보다 개인과 상호작용에 더 가치를 둔다
- 방대한 문서보다는실행되는 SW에 더 가치를 둔다
- 계약 협상보다는 고객과 협업에 더 가치를 둔다
- 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.
7. 소프트웨어 공학
- 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문
- 소프트웨어 공학의 기본 원칙
- 현대적인 프로그래밍 기술을 계속적으로 적용
- 개발된 SW의 품질이 유지되도록 지속적으로 검증
- SW개발 관련 사항 및 결과에 대한 명확한 기록을 유지
2. 스크럼 기법 (C)
1. 스크럼 (Scrum)
- 팀이 중심이 되어 개발의 효율성을 높이는 기법
- 팀원 스스로가 스크럼 팀을 구성하고 개발 작업에 관한 모든 것을 스스로 해결해야 한다.
2. 스크럼 팀
- 제품 책임자 (PO; Product Owner)
- 요구사항이 담긴 백로그(Backlog)를 작성
- 이해관계자들 중 개발될 제품에 대한 이해도가 높고, 요구사항을 책임지고 의사를 결정하는 사람
- 스크럼 마스터 (SM; Scrum Master)
- 스크럼 팀이 스크럼을 잘 수행할 수 있도록 가이드
- 개발팀(DT; Development Team)
3. 스크럼 개발 프로세스
- 계획 - 진행(스프린트) - 회의 & 검토 & 회고
- 스프린트 계획 회의 - 스프린트 - 일일 스크럼 회의 - 스프린트 검토 회의- 스프린트 회고
3. XP (eXtreme Programming) (B)
1. XP
- 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을극대화하여 개발 생산성을 향상시키는 방법
- 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여
- XP의 5가지 핵심 가치
- 의사소통
- 단순성
- 용기
- 존중
- 피드백
2. XP 개발 프로세스
- 계획 - 진행 - 검사 - 출시
- 릴리즈 계획 수립
- 이터레이션(Iteration, 주기)
- 승인 검사 (Acceptance Test, 인수테스트)
- 소규모 릴리즈
3. XP의 주요 실천 방법 (Practice)
- Pair Programming (짝프로그래밍)
- 다른 사람과 함께 프로그래밍을 수행하여 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성
- Collective Ownership (공동 코드 소유)
- 개발 코드에 대한 권한과 책임을 공동으로 소유함
- Test-Driven Development (테스트 주도 개발)
- 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하여 자신이 무엇을 해야할지 정확히 파악
- 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅도구를 사용
- Whole Team (전체 팀)
- 개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가짐
- Continuous Integration (계속적인 통합)
- 모듈 단위로 나눠서 개발된코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합됨
- Refactoring (리팩토링)
- 프로그램 기능의 변경 없이 시스템 재구성
- 목적: 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발할 수 있도록 하기 위해
- Small Releases (소규모 릴리즈)
- 릴리즈 기간을 짧게 반복하여 고객의 요구 변화에 신속히 대응
4. 개발 기술 환경 파악 (C)
1. 운영체제 (OS, Operating System)
- 컴퓨터 시스템의 자원을 효율적으로 관리
- 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 소프트웨어
- 운영체제 관련 요구사항 식별 시 고려사항
- 가용성
- 성능
- 기술 지원
- 주변 기기
- 구축 비용
2. 데이터베이스 관리 시스템 (DBMS; DataBase Management System)
- 사용자와 DB사이에서 사용자의 요구에 따라 정보를 생성, DB를 관리해주는SW
- DBMS관련 요구사항 식별 시 고려사항
- 가용성
- 성능
- 기술 지원
- 상호 호환성
- 구축 비용
3. 웹 어플리케이션 서버 (WAS; Web Application Server)
- 사용자의 요구에 따라 변하는 동적인 콘텐츠를처리하기 위해 사용되는 미들웨어
- 데이터 접근, 세션 관리, 트랜잭션 관리 등을 위한 라이브러리 제공
- 주로 DB서버와 연동해서 사용
- WAS관련 요구사항 식별 시 고려사항
- 가용성
- 성능
- 기술 지원
- 구축 비용
4. 오픈 소스 (Open Source)
- 누구나 제한 없이 사용할 수 있도록 소스 코드를 공개한 소프트웨어
- 오픈소스 라이선스 만족
- 오픈 소스 관련 요구사항 식별 시 고려사항
- 라이선스 종류
- 사용자 수
- 기술의 지속 가능성
5. 요구사항 정의 (A)
1. 요구사항
- 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약조건
- 요구사항의 유형
- 기능 요구사항
- 비기능 요구사항
- 사용자 요구사항
- 시스템 요구사항
2. 기능 요구사항 (Functional requirements)
- 시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 기능이나 수행과 관련된 요구사항
- 시스템의 입출력
- 어떤 데이터를 저장하거나 연산을 수행해야 하는지
- 시스템이 반드시 수행해야 하는 기능
- 사용자가 시스템을 통해 제공받기를 원하는 기능
3. 비기능 요구사항 (Non-Functional requirements)
- 품질이나 제약사항과 관련된 요구사항
- 시스템 장비 구성
- 성능 요구사항
- 인터페이스 요구사항
- 데이터를 구축하기 위해 필요한 요구사항
- 테스트 요구사항
- 보안 요구사항
- 품질
- 제약사항 등
4. 사용자 요구사항 (User requirements)
- 사용자 관점에서 본 시스템이 제공해야 할 요구사항
- 사용자를 위한 것으로, 쉽게 작성됨
5. 시스템 요구사항 (System requirements)
- 개발자 관점에서 본 시스템 전체가 사용자와 다른 시스템에 제공해야 할 요구사항
- 사용자 요구사항에 비해 전문적이고 기술적인 용어로 작성
- 소프트웨어 요구사항이라고도 함
6. 요구사항 개발 프로세스 (B)
1. 요구사항 개발 프로세스
- 도출 - 분석 - 명세 - 확인 (도분명확)
2. 요구사항 도출
- 시스템 개발에 관련된 사람들이 서로 의견을 교환하여 요구사항을 어떻게 수집할 것인지 식별하고 이해하는 과정
- 소프트웨어 개발 생명 주기 동안 지속적 반복
- 요구사항을 도출하는 기법
- 청취와 인터뷰
- 설문
- 브레인스토밍
- 워크샵
- 프로토타이핑
- 유스케이스
3. 요구사항 분석
- 사용자의 요구사항 중 명확하지 않거나 이해되지 않는 부분을 발견하고 이를 걸러내기 위한 과정
- 서로 상충되는 요구사항이 있으면 이를 중재하는 과정
- 요구사항 분석에 사용되는 도구
- 자료 흐름도 (DFD)
- 자료 사전(DD)
4. 요구사항 명세
- 분석된 요구사항을 바탕으로 모델을 작성하고 문서화 하는 것
- 기능 요구사항은 빠짐없이
- 비기능 요구사항은 필요한 것만
- 구체적인 명세를 위해 소단위 명세서 (Mini-Spec)가 사용될 수 있다.
5. 요구사항 확인
- 개발 자원을 요구사항에 할당하기 전에 요구사항 명세서가 정확하고 완전하게 작덩되었는지 검토
- 이해관계자들이 검토
- 요구사항 관리 도구를 이용해 요구사항 정의 문서들에 대해 형상 관리 (SCM)를 수행
6. 요구 공학
- 요구사항을 정의하고, 분석 및관리하는 프로세스를 연구하는 학문
7. 요구사항 명세 기법
구분 | 정형 명세 기법 | 비정형 명세 기법 |
기법 | 수학적 원리 기반, 모델 기반 | 상태/기능/객체 중심 |
작성 방법 | 수학적 기호, 정형화된 표기법 | 일반 명사, 동사 등의 자연어 기반으로 서술 다이어그램으로 작성 |
특징 | 요구사항을 정확하고 간결하게 표현 요구사항에 대한 결과가 작성자에 관계없이 일관성이 있으므로 완전성 검증이 가능 표기법이 어려워 사용자가 이해하기 어려움 |
자연어의 사용으로 요구사항에 대한 결과가작성자에 따라 다를 수 있어 일관성이 떨어지고 해석이 달라질 수 있음 내용의 이해가 쉬워 의사소통 용이 |
종류 | VDM, Z, Petri-net, CSP 등 | FSM, Decision Table, ER모델링, State Chart(SADT) 등 |
7. 요구사항 분석 (B)
1. 요구사항 분석
- 개발 대상에 대한 사용자의 요구사항을 이해하고 문서화 하는 활동
2. 구조적 분석 기법
- 자료의 흐름과 처리르 ㄹ중심으로 하는 요구사항 분석 방법
- 하향식
- 구조적 분석 기법 도구
- 자료 흐름도(DFD)
- 자료 사전(DD)
- 소단위 명세서 (Mini-Spec)
- 개체 관계도(ERD)
- 상태 전이도(STD)
- 제어 명세서
3. 자료 흐름도 (DFD; Data Flow Diagram)
- 자료의 흐름 및 변환 과정과 기능을 도형중심으로 기술
- 자료 흐름 그래프, 버블 차트라고도 함
4. 자료 흐름도 기본 기호
- 프로세스: 원
- 자료 흐름: 화살표
- 자료 저장소: 평행선
- 단말: 사각형
5. 자료 사전 (DD; Data Dictionary)
- 자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것
- 데이터를 설명하는 데이터를 데이터의 데이터, 메타 데이터 라고 한다.
- 기호
- = : 자료의 정의 (~로 구성되어 있다.)
- + : 자료의 연결 (그리고)
- ( ) : 자료의 생략 (생략 가능한 자료)
- [ | ] : 자료의 선택 (또는)
- { } : 자료의 반복 ({ }ₙ - n번 이상 반복, { }ⁿ - 최대로 n번 반복, { } ₘ ⁿ - m이상 n이하 반복)
- * * :자료의 설명 (주석)
8. 요구사항 분석, CASE와 HIPO (C)
1. 요구사항 분석용 CASE(자동화 도구)
- 요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구
- SADT
- 시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위한 도구
- SoftTech 사에서 개발
- 구조적요구 분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구
- SREM = RSL/REVS
- TRW사가 개발
- RSL과 REVS를 사용하는 자동화 도구
- PSL/PSA
- PSL과 PSA를 사용하는 자동화 도구
- 미시간 대학 개발
- TAGS
- 시스템 공학 방법 응용에 대한 자동 접근
- 개발 주기의 전 과정에 이용할 수 있는 통합 자동화 도구
2. HIPO(Ierachy Input Process Output)
- 시스템 실행 과정인 입력, 처리, 출력의 기능을 표현
- 하향식 소프트웨어 개발을 위한 문서화 도구
- 기능과 자료의 의존관계를 동시에 표현
- 기호, 도표 등을 사용하여 보기쉽고 이해가 쉬움
- 시스템의 기능을 여러 개의 고유 모듈로 분할하여 이들 간의 인터페이스를 계층 구조로 표현한 것을 HIPO Chart라고 함
- HIPO Chart 종류
- 가시적 도표
- 총체적 도표
- 세부적 도표
9. UML(Unified Modeling Language)의 개요 (B)
1. UML(Unified Modeling Language)
- 시스템 개발 과정에서 개발자와 고객 또는 개발자 상호 간의 의사소통이 원활하게 이루어이도록 표준화한 대표적인 객체지향 모델링 언어
- Rumbaugh(OMT), Booch, Jacobson 등의 객체지향 방법론의 장점을 통합
- OMG(Object Management Group)에서 표준으로 지정
- UML의 구성 요소
- 사물 (Things)
- 관계 (Relationships)
- 다이어그램 (Diagram)
2. 사물 (Things)
- 다이어그램 안에서 관계가 형성될 수 있는 대상들
- 모델을 구성하는 가장 중요한 기본 요소
- 구조사물
- 시스템의 개념적, 물리적 요소를 표현
- 클래스(Class), 유스케이스(Use Case), 컴포넌트(Component), 인터페이스(Interface), 노드(Node) 등
- 행동 사물
- 시간과 공간에 따른 요소들의 행위를 표현
- 상호작용, 상태 머신(State Machine) 등
- 그룹 사물
- 요소들을 그룹으로 묶어서 표현
- 패키지(Package)
- 주해 사물
- 부가적인 설명이나 제약조건 등을 표현
- 노트(Note)
10. UML - 관계 (Relationship) (A)
1. 관계 (Relationships)
- 사물과 사물 사이의 연관성을 표현
- 종류
- 연관
- 집합
- 포함
- 일반화
- 의존
- 실체화
2. 연관(Association) 관계
- 2개 이상의 사물이 서로 관련되어 있는 관계
- 사물 사이를실선으로 표현
- 방향성은 화살표로 표현
- 양방향일 경우 화살표 생략
- 다중도를 선 위에 표기
- 다중도
사람이 집을 소유하는 관계
사람 다중도가 1이므로 집은 한사람에 의해서만 소유됨
집 다중도가 1이므로 사람은 집을 하나만 소유할 수 있음
선생님이 학생을 가르치고 학생은 선생님으로부터 가르침을 받음
선생님쪽 다중도가 1..* 이므로 학생은 한 명 이상의 선생님으로 부터 가르침을받음
학생쪽 다중도가 1..* 이므로 선생님은 한명 이상의 학생을 가르침
3. 집합 (Aggregation) 관계
- 하나의 사물이 다른 사물에 포함되어 있는 관계
- 포함하는 쪽(전체)과 포함되는 쪽(부분)은 서로 독립적
- 포함되는 쪽(부분)에서 포함하는쪽(전체)으로 속이 빈 마름모
프린터는 컴퓨터에 연결해서 사용할 수 있으며, 다른 컴퓨터에 연결해서 사용함
4. 포함(Composition) 관계
- 집합 관계의 특수한 형태, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미침
- 포함하는 쪽(전체)과 포함되는 쪽(부분)은 서로 독립될 수 없고 생명주기를 함께함
- 포함되쪽(부분)에서 포함하는 쪽(전체)으로 속이 채워진 마름모
문을 열 수 있는 키는 하나이며, 해당 키로 다른 문은 열 수 없다. 문어 없어지면 키도 필요 없다.
5. 일반화(Generalization) 관계
- 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
- 하위에서 상위로 빈 화살표
6. 의존(Dependency) 관계
- 연관 관계와 같이 사물 사이에 서로 연관은 있으나 필요에 의해 서로 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계
- 하나의 사물과 다른 사물이 소유 관계는 아니지만 사물의 변화가 다른 사물에 영향을 미치는 관계
- 영향을 주는 사물이 영향을 받는 사물 쪽으로 점선 화살표
등급이 높으면 할인율을 적용하고, 등급이 낮으면 할인율을 적용하지 않는다.
7. 실체화(Realization) 관계
- 사물이 할 수 있거나 해야하는 기능, 서로를 그룹화 할 수 있는 관계
- 사물에서 기능쪽으로 점선 화살표
11. UML - 다이어그램 (A)
1. 다이어그램 (Diagram)
- 사물과 관계를 도형으로 표현한 것
- 정적 모델링 - 구조적 다이어그램
- 동적 모델링 - 행위 다이어그램
2. 구조적 다이어그램의 종류
- 클래스 다이어그램 (Class Diagram)
- 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현
- 객체 다이어그램 (Object Diagram)
- 클래스에 속한 사물(객체)들, 즉 인스턴스(Instance)를 특정 시점의 객체와 객체 사이의 관계로 표현
- 럼바우 객체지향 분석 기법에서 객체 모델링에 활용
- 컴포넌트 다이어그램 (Component Diagram)
- 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현
- 구현 단계에서 사용
- 배치 다이어그램 (Deployment Diagram)
- 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
- 구현 단계에서 사용
- 복합체 구조 다이어그램 (Composite Structure Diagram)
- 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
- 패키지 다이어그램 (Package Diagram)
- 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현
* 구현단계에서 사용되는 다이어그램
컴포넌트, 배치
3. 행위 다이어그램의 종류
- 유스케이스 다이어그램 (Use Case Diagram)
- 사용자의 요구를 분석하는 것
- 기능 모델링 작업에 사용
- 사용자(Actor)와 사용 사례(Use Case)로 구성됨
- 순차 다이어그램 (Sequece Diagram)
- 상호 작용하는 시스템이나 객체들이 주고받는 메시지를 표현
- 커뮤니케이션 다이어그램 (Communication Diagram)
- 동작에 참여하는 객체들이 주고받는 메시지와 객체들 간의 연관 관계를 표현
- 상태 다이어그램 (State Diagram)
- 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현
- 럼바우 객체지향 분석 기법에서 동적 모델링에 활용
- 활동 다이어그램 (Activity Diagram)
- 시스템이 어던 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현
- 자료흐름도와 유사함
- 상호작용 개요 다이어그램 (Interaction Overview Diagram)
- 상호작용 다이어그램 간의 제어 흐름을 표현
- 타이밍 다이어그램 (Timing Diagram)
- 객체 상태 변화와 시간 제약을 명시적으로 표현
*기능 모델링
유스케이스, 활동
*정적 모델링
클래스
*동적 모델링
순차, 커뮤니케이션, 상태
* 럼바우 객체지향 분석 기법별로
객-동-기
객 - 객체 다이어그램(구조적 다이어그램)
동 - 상태 다이어그램(행위 다이어그램)
4. 스테레오 타입 (Stereotype)
- 스테레오 타입은 UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하는 것
- << >> 사이에 표현할 형태를 기술
- 주로 표현되는 형태
- <<include>> - 연결된 다른 UML요소에 대해 포함 관계
- <<extends>> - 연결된 다른 UML 요소에 대해 확장 관계
- <<interface>> - 인터페이스를 정의하는 경우
- <<exception>> - 예외를 정의하는 경우
- <<constructor>> - 생성자 역할을 수행하는 경우
*각 다이어그램별 자세한 설명
책 64P부터 혹은
https://youtu.be/XInbBXgskpQ?si=eIDycDuRmRESNWlA
19. 소프트웨어 개발 방법론 (C)
- 소프트웨어 개발, 유지보수 등에 필요한 수행 방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화 한것
2. 구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer) 원리를 적용
4. 객체지향 방법론
- 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들듯 객체들을 조립해서 소프트웨어를 구현하는 방법
- 구조적 기법의 문제점을 해결
- 구성 요소: 객체, 클래스, 메시지 등
- 기본 원칙: 캡슐화, 정보 은닉, 추상화, 상속성, 다형성 등
- 순서
- 요구분석 단계 - 설계 단계 - 구현 단계 - 테스트 및 검증 단계 - 인도 단계
5. 컴포넌트 기반(CBD; Component Based Design) 방법론
- 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
- 컴포넌트의재사용이 가능하여 시간과 노력 절감
- 새로운 기능 추가가 쉽고 확장성이 보장됨
- 유지 보수 비용을 최소화하고 생산성 및 품질 향상
20. S/W 공학의 발전적 추세 (B)
1. 소프트웨어 재사용 (Software Reuse)
- 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
- 품질과 생산성 높임
- 재사용 방법
- 합성 중심 (Composition-Based): 전자 칩과 같은 소프트웨어 부품, 즉 블록을 만들어서 끼워 맞춰 완성 시키는 방법, 블록 구성 방법이라고도 함
- 생성 중심 (Generation-Based) : 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법, 패턴 구성 방법이라고도 함
2. 소프트웨어 재공학 (Software Reengineering)
- 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
- 소프트웨어 재공학의 이점
- 품질 향상
- 생산성 증가
- SW 수명 연장
- 오류 감소
3. CASE (Computer Aided Software Engineering)
- 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 SW도구를 사용하여 자동화 하는 것
- 생산성 향상을 구현함
- CASE의 주요 기능
- SW생명 주기 전 단계의 연결
- 다양한 SW개발 모형 지원
- 그래픽 지원
21. 비용 산정 기법 - 하향식 (D)
1. 하향식 비용 산정 기법
- 프로젝트 전체 비용을 산정한 후 각 작업별로 비용을 세분화
- 전문가 감정 기법
- 델파이 기법
2. 전문가 감정 기법
- 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
- 가장 편리하고 신속함
- 개인적이고 주관적
3. 델파이 기법
- 전문가 감정 기법의 주관적 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정
22. 비용 산정 기법 - 상향식 (A)
1. 상향식 비용 산정 기법
- 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용 산정
- 주요 상향식 비용 산정 기법
- LOC(원시 코드 라인 수) 기법
- 개발 단계별 인원수 기법
- 수학적 산정 기법
2. LOC(원시 코드 라인 수, source Line Of Code) 기법
- 각 기능의 원시코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하여 비용을 산정
- 측정이 용이하고 이해하기 쉬워 가장 많이 사용
예)
LOC기법에 의해 총 라인수가 30,000라인, 개발에 참여할 개발자가 5명, 개발자 평균 월 생산성이 월간 300라인일 때 개발 소요 기간은?
5명의 개발자가 한달에 약 1,500 라인 생산 (5 * 300)
30,000 / 1,500 = 20 -> 20개월 소요
3. 개발 단계별 인월수(Effort Per Task) 기법
- LOC기법을 보완하기 위한 기법
- 각 기능을 구현하는데 필요한 노력을 생명주기의 각 단계별로 산정
- LOC 기법보다 더 정확
23. 수학적 산정 기법 (B)
1. 수학적 산정 기법
- 상향식 비용 산정 기법으로 경험적 추정 모형, 실험적 추정 모형이라고도 함
- 수학적 산정 기법은 개발 비용 산정의 자동화를 목표함
- 주요 수학적 산정 기법
- COCOMO 모형
- Putnam 모형
- 기능 점수(FP) 모형
2. COCOMO(COnstructive COst MOdel) 모형
- LOC에 의한 비용 산정 기법
- Man-Month로 나타냄
- 보헴(Boehm) 제안
3. COCOMO의 소프트웨어 개발 유형
- 조직형 (Organic Mode)
- 5만 라인 이하
- 사무 처리용, 업무용 등
- 반분리형 (Semi-Detached Mode)
- 30만 라인 이하
- 컴파일러, 인터프리터와 같은 유틸리티 개발
- 내장형 (Embedded Mode)
- 30만 라인 이상
- 신호기 제어 시스템, 미사일 유도 시스템 실시간 처리 시스템 등 시스템 프로그램 개발에 적합
4. COCOMO 모형의 종류
- 기본형
- SW의 크기와개발 유형만을 이용하여 비용 산정
- 중간형
- 기본형 + 4가지 특성 고려
- 제품의 특성
- 컴퓨터의 특성
- 개발자의 특성
- 프로젝트 특성
- 발전형
- 중간형을 보안
- 개발 공정별로 보다 자세하고 정확하게 노력을 산출함
5. Putnam 모형
- 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상
- 생명 주기 예측 모형이라고도 함
- 대형 프로젝트의노력 분포 산정에 이용
- 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소
6. 기능 점수 (FP; Function Point) 모형
- 소프트웨어의기능을 증대시키는 요인별로 가중치를 부여, 기능점수를 구한 후 비용 산정
- 알브레히트(Albrecht)가 제안
- 소프트웨어 기능 증대 요인
- 자료 입력 (입력 양식)
- 정보 출력 (출력 보고서)
- 명령어 (사용자 질의수)
- 데이터 파일
- 필요한 외부 루틴과의 인터페이스
7. 비용 산정 자동화 추정 도구
- SLIM
- Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
- ESTIMACS
- 다양한 프로젝트와 개인별 요소를 수용하도록 FP모형을 기초로하여 개발된 자동화 추정도구
24. 프로젝트 일정 계획 (B)
1. 프로젝트 일정(Scheduling) 계획
- WBS, PERT/CPM, 간트 차트 등
2. PERT (Program Evaluation and review Technique, 프로그램 평가 및 검토 기술)
- 전체 작업의 상호 관계를 표시하는 네트워크
- 개발경험이 없어 소요 기간 예측이 어려울 때 사용
- 간선에는 낙관치, 기대치, 비관치 표시
3. CPM (Critical Path Method, 임계 경로 기법)
- 작업을 나열하고 작업에 필요한 소요 기간을 예측하는 기법
- 최장 시간을 찾음
4. 간트 차트
- 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
- 시간선 차트
28. 소프트웨어 개발 프레임워크
1. 소프트웨어 개발 프레임워크
- 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 제공하는 반제품 형태의 소프트웨어 시스템
- 주요 기능
- 예외 처리
- 트랜잭션 처리
- 메모리 공유
- 데이터 소스 관리
- Windo서비스 관리
- 쿼리 서비스
- 로깅 서비스
- 사용자 인증 서비스
- 종류
- 스프링 프레임워크
- 전자정부 프레임워크
- 닷넷 프레임워크
2. 스프링 프레임워크
- 자바 플랫폼을 위한 오픈소스 경량형 애플리케이션 프레임워크
- 전자정부 표준 프레임워크의 기반 기술
3. 전자정부 프레임워크
- 대한민국의 공공부문 정보화 사업 시 효율적인 정보 시스템 구축을 지원하기 위한 프레임 워크
- 오픈소스기반의 범용화
4. 닷넷 프레임워크 (.NET Framework)
- Windows 프로그램의 개발 및 실행환경을 제공하는 프레임워크
5. 소프트웨어 개발 프레임워크의 특성
- 모듈화 (Modularity)
- 프레임워크는 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로써 소프트웨어의 품질을 향상시킴
- 프레임워크는 개발 표준에 의한 모듈화로 인해 유지보수가 용이
- 재사용성 (Reusability)
- 프레임워크는 재사용 가능한 모듈들을 제공함으로써 예산 절감, 생산성 향상, 품질 보증 가능
- 확장성 (Extensibility)
- 프레임워크는 다형성을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능함
- 제어의 역흐름 (Inversion of Control)
- 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성 향상
반응형
'정보처리기사 > 실기' 카테고리의 다른 글
정보처리기사 실기 5장 - 인터페이스 구현 (0) | 2024.07.05 |
---|---|
정보처리기사 실기 4장 - 서버프로그램 구현 (0) | 2024.07.03 |
정보처리기사 실기 3장 - 통합 구현 (0) | 2024.07.03 |
정보처리기사 실기 2장 - 데이터 입출력 구현 (2) (0) | 2024.07.02 |
정보처리기사 실기 2장 - 데이터 입출력 구현 (1) (1) | 2024.06.14 |
댓글