순서는 2021 시나공 기준, 자료는 2020 시나공 필/실기와 NCS 1000제를 참고했습니다.
소프트웨어 생명 주기
요구사항을 분석해서 설계하고 그에 맞게 개발한 후 소프트웨어의 품질이 항상 최상의 상태로 유지할수 있도록 관리하는 과정을 단계로 나눈 것
폭포수 모형
- 가장 오래되고 폭넓게 사용된 전통적인 모형
- 순서 : 타당성 검토 > 계획 > 요구 분석 (문서화) > 설계 > 구현 (코드화) > 검사 > 유지보수
- 고객의 요구사항이 명확할 때 사용 / 수정 X
📌 한 단계가 끝나야 다음 단계로 넘어가는 선형 순차적 모형
프로토타입 모형
- 요구사항이 명확하지 않을때 파악하기 위해 📌견본품을 만들어 최종 결과물 예측하는 모형
- 폭포수 모형의 단점 보완
- 순서 : 요구 수집 > 빠른 설계 > 프로토 타입 구축 > 고객 평가 > 프로토타입 조정 > 구현 > 요구 수집 …
- 사용자와 시스템 사이의 인터페이스에 초점
- 추가, 변경, 삭제 등 요구 즉시 반영가능 / 비용, 시간 ↑
나선형 모형
- 여러번의 개발 과정을 반복하면서 진행하여 점진적 모형
- 폭포수 모형 장점 + 프로토타입 모형 장점 + 위험 분석 기능 추가
📌 누락 및 추가된 요구사항 첨가 가능, 유지보수 과정 필요 X
- 대규모 프로젝트에 적합 / 비용 ↑ / 보헴이 제안
애자일 모형
- 고객과의 소통에 초점을 맞춘 방법론
- 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기 반복
📌 고객의 요구사항에 우선순위 부여
- 소규모 프로젝트, 숙달된 개발자, 급변하는 요구사항에 적합
스크럼(Scrum) 기법
Product Backlog를 바탕으로 기술적으로 분할되고 재해석된 Sprint의 반복을 통한 제품완성을 구현하는 애자일 방법론
- 팀 스스로가 스크럼 팀을 구성, 개발 작업에 관한 모든 것을 스스로 해결
- 특징 : 투명성, 타임박싱, 커뮤니케이션, 경험주의 모델
- 구성요소 : Product Backlog, Sprint Backlog, Sprint, Daily 미팅, Burndown Chart
제품 책임자 (PO) | 제품에 대한 이해도 높음, 의사 결정, 요구사항 작성 주체 > 개발 의뢰자, 사용자가 담당 비즈니스 관점에서의 중요도/우선순위 지정 및 갱신 스프린트 계획 수립까지만 역할 수행하고, 스프린트가 시작되면 팀 운영에 관여X |
스크럼 마스터 (SM) | 객관적인 시각에서 조언하는 조력자 일일 스크럼 회의 주관, 스크럼 원칙과 가치를 지키도록 지원함 개발 과정 속 장애 요소 를 찾아 제거함 |
개발팀 (DT) | PO와 SM을 제외한 모든 팀원 (개발자, 디자이너, 테스터 등) 매일 스크림 회의에 참여하여 진척 상황을 점검함 |
XP(eXtreme Programming) 기법
고객의 요구사항에 유연하게 대응하기 위해 고객 참여와 개발 과정의 반복을 극대화하여 개발 생산성 향상시키는 방법
- 핵심가치 : 의사소통, 단순성, 용기, 존중, 피드백
짝 프로그래밍 | 다른 사람과 함께 프로그래밍 책임 공동 |
테스트 주도 개발 | 테스트케이스 먼저 작성 자동화된 테스팅 도구 사용 |
전체 팀 | 각자 자신의 역할에 대한 책임 | 계속적인 통합 | 모듈 단위로 나눠서 개발된 코드들 지속적으로 통합 |
디자인 개선 / 리팩토링 |
프로그램 기능 변화 없이 시스템 재구성 | 소규모 릴리즈 | 요구변화 신속 대응 |
현행 시스템 파악
새로 개발하려는 시스템의 개발 범위를 명확히 설정하기 위해 구성과 제공 기능, 시스템 간 전달 정보, 사용되는 기술 요소, 소프트웨어, 하드웨어, 네트워크 구성 등을 파악
1단계 |
시스템 구성 파악 | 시스템 기능 파악 | 시스템 인터페이스 파악 |
기간 업무 지원 업무 |
현재 제공하는 기능들을 주요 기능/ 하부 기능/세부 기능 구분하여 계층형 표시 |
주고받는 데이터의 종류 및 형식, 통신규약, 연계유형 |
2단계 |
아키텍처 구성 파악 | 소프트웨어 구성 파악 |
업무 수행에 사용되는 기술요소들을 최상위 수준에서 계층별로 표현 |
소프트웨어 제품명, 용도, 라이센스 적용방식 등 명시 |
3단계 |
하드웨어 구성 파악 | 네트워크 구성 파악 |
서버의 주요 사양, 수량, 이중화 적용여부 | 서버 위치, 서버 간 네트우크 연결 방식 장애 발생 원인을 찾아 복구하기 위한 용도로 활용 |
* 서버의 이중화 : 운용 서버의 장애 시 서비스를 계속 유지할 수 있도록 예비 서버에도 변경사항이 동일하게 복제되도록 관리
개발 기술 환경 파악
운영체제 (OS)
- 컴퓨터 시스템의 자원들을 효율적으로 관리, 사용자와 하드웨어 간 인터페이스 역할
- 요구사항 식별시 고려사항 : 가용성, 성능, 기술 지원, 주변 기기, 구축 비용
- 종류 : 컴퓨터 Windows, UNIX, Linux, MAs OS / 모바일 iOS, Android
데이터베이스 관리 시스템 (DBMS)
- 사용자와 데이터베이스 사이에서 사용자 요구에 따라 정보 생성, 데이터베이스 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제 해결
- 요구사항 식별시 고려사항 : 가용성, 성능, 기술 지원, 상호 호환성, 구축 비용
* JDBC : 자바에서 DB를 연결하여 데이터를 관리하게 해주는 인터페이스
* ODBC : 응용 프로그램에서 DB에 접근하여 데이터를 관리하게 해주는 표준 인터페이스
📌 웹 애플리케이션 서버 (WAS)
- 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하는 미들웨어
- 요구사항 식별시 고려사항 : 가용성, 성능, 기술 지원, 구축 비용
- 종류 : Tomcaat, JEUS, WebLogic 등
오픈 소스
- 누구나 제한 없이 사용할 수 있또록 소스 코드를 공개한 것으로 오픈 소스 라이선스를 만족하는 소프트웨어
- 요구사항 식별시 고려사항 : 라이선스 종류, 사용자 수, 기술의 지속 가능성
*가비지 컬렉션 : 실제로 사용되지 않지만 반환되지 않는 메모리 공간을 강제로 해제하여 사용할 수 있게 하는 메모리 관리 기법
요구사항
소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상 운영에 필요한 제약조건 등 나타냄
기능 요구사항 | 비기능 요구사항 |
시스템에서 제공되어야 할 특정 기능을 정의함 | 시스템의 전체적 품질이나 기능적 요구사항의 구현 시 고려해야하는 제약사항 |
사용자 요구사항 | 시스템 요구사항 |
사용자 관점 | 개발자 관점 |
📌 요구사항 개발 프로세스 (도분명확)
도출 | 분석 | 명세 | 확인/검증 |
주요 기법 - 인터뷰, - 설문, 문헌 조사 - 프로토타입 - 벤치마킹 - 워크샵 -유스케이스 |
요구사항 중 명확하지 않은 부분을 발견하고 걸러내기 위한 과정 | 요구사항을 체계적으로 분석한 후 승인될 수 있도로 문서화 하는 것 |
주요 기법 - 요구사항 검토 - 프로토타이핑 - 모델 검증 - 인수 테스트 |
요구공학
- 무엇을 개발해야 하는지 요구사항 정의, 분석, 관리하는 프로세스를 연구하는 학문
- 목표 : 요구사항 변경의 원인과 처리 방법을 이해, 프로세스 품질 개선, 프로젝트 실패 최소화
요구사항 분석 기법
분류 | 개념 모델링 | 할당 | 협상 | 정형 분석 |
명확한 요구사항 분류 | 현실 개체를 단순화 하여 개념적으로 표현 한 것 | 요구사항 만족을 위한 구성 요소 식별 | 요구사항 충돌 해결 | 구문(Synatax)과 의미를 갖는 정형화된 언어를 이용해 요구사항을 수학적 기호로 표현 및 분석하는 과정 |
자료 흐름도(DFD ; Data Flow Diagram)
- 시스템의 처리 과정을 자료의 흐름에 중점을 두어 기술하는 분석용 도구
- 시각적으로 업무와 데이터의 흐름을 쉽게 볼 수 있음
- 일관성 유지
- 럼바우 방법론의 기능모델링
Process 프로세스 |
자료의 처리/변환 과정을 표현 | |
Data Flow 자료 흐름 |
자료의 흐름 표현 | |
Data Store 자료 저장소 |
파일, DB 등 저장소의 위치 표현 | |
Terminator 단말 |
자료의 출처, 도착지 표현 |
자료 사전 (DD ; Data Dictionary)
- 자료 흐름도의 대상이 되는 모든 자료를 자세히 정의하기 위해 사용되는 도구
- 데이터를 설명하는 것으로 메타 데이터라고도 함
= | 자료의 정의 | + | 자료의 연결 |
( ) | 자료의 생략 | [ | ] | 자료의 선택 |
{} | 자료의 반복 | ** | 자료의 설명 |
CASE
- 요구사항을 자동으로 분석하고 요구사항 분석 명세서를 기술하도록 개발한 도구
HIPO (Hierarchical Input Process Output)
- Input - Process - Output으로 이루어진 모듈을 계층적으로 나타낸 도표
- 하향식 소프트웨어 개발을 위한 문서화 도구
가시적 도표 | 시스템의 전체적인 기능, 흐름을 보여주는 Tree 형태 구조도 |
총체적 도표 | 프로그램 구성 기능을 기술한 것, 전반적인 정보를 제공하는 도표 |
세부적 도표 | 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술하는 도표 |
UML(Unified Modeling Language)
시스템 개발 과정에서 개발자들의 원활한 의사소통을 위해 표준화한 대표적 객체지향 모델링 언어
- 객체 지향 소프트웨어 개발과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합
- 구성요소 : 사물, 관계, 다이어그램
사물 (Things)
- 다이어그램 안에서 관계가 형성될 수 있는 대상
구조 사물 | 시스템의 개념적, 물리적 요소 | 클래스, 유스케이스, 컴포넌트, 노드 등 |
행동 사물 | 시공간에 따른 요소들의 행위 | 상호작용, 상태 머신 등 |
그룹 사물 | 요소들을 그룹으로 묶어서 표현 | 패키지 |
주해 사물 | 부가적인 설명, 제약조건 | 노트 |
관계 (Relationship)
- 사물과 사물 사이의 연관성을 표현
연관 관계
- 2개 이상의 사물이 서로 관련되어 있음
- 다중도(연관에 참여하는 객체의 개수) 선 위에 표시
- 서로에게 영향을 주는 양방향 관계의 경우 화살표 생략
집합 관계
- 하나의 사물이 다른 사물에 포함되어 있는 관계
- 클래스들 사이의 전체 또는 부분 같은 관계
- 전체 객체의 라이프 타임과 부분 객체의 라이프타임이 독립적 > 전체 객체가 사라져도 부분 객체는 남아있음
포함 관계
- 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
- 클래스들 사이의 전체 또는 부분 같은 관계
- 전체 객체의 라이프 타임과 부분 객체의 라이프타임이 의존적 > 전체 객체가 사라지면 부분 객체도 함께 사라짐
일반화 관계
- 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지 표현
- 객체지향 개념에서 상속관계라고 함
- 한 클래스가 다른 클래스를 포함하는 상위 개념
의존 관계
- 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계
실체화 관계
- 사물이 할 수 있거나 해야하는 기능으로 서로를 그룹화할 수 있는 관계
- 책임들의 집합인 인터페이스와 이 책임들을 실제로 실현한 클래스들 사이의 관계
다이어그램
- 사물과 관계를 도형으로 표현한 것
- 여러 관점에서 시스템을 가시화한 뷰를 제공함으로써 의사소통에 도움
구조적 다이어그램
🔑 정적 모델링
📌 (베네딕트) 컴복배치 객클(개 클났다)
컴포넌트 (Componetn) 다이어그램 | 실제(물리적) 구현 모듈인 컴포넌트 간의 관계나 인터페이스를 표현 논리적 클래스 혹은 클래스 자신의 구현에 대한 정보 포함 실질적인 프로그래밍 작업에 사용함 (구현 단계에서 사용) |
복합체 (Composite Structure) 다이어그램 | 전체 클래스 안에 각 컴포넌트 클래스 표현함 클래스 내부 구조 파악에 용이 |
배치 (Deployment)다이어그램 | 시스템 하드웨어와 소프트웨어 간의 물리적 구조를 표현 노드와 의사소통(통신) 경로로 표현 구현단계에서 사용 컴포넌트 사이의 종속성 표현 |
패키지 (Package) 다이어그램 | 시스템 계층적인 구조를 표현 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계 표현 |
객체 (Object) 다이어그램 | 클래스의 여러 오브젝트 인스턴스를 나타내는 대신 실제 클래스를 사용 인스턴스를 특정 시점의 객체와 객체사이의 관계로 표현 |
클래스 (Class) 다이어그램 | 시스템 구조를 파악하고 구조의 문제점 도출 클래스와 클래스가 가지는 속성, 클래스 간의 관계 표현 |
행위 다이어그램
🔑동적 모델링
유스케이스(Use Case) 다이어그램 | 사용자의 요구를 분석하는 것으로 기능 모델링 작업에 사용 사용자와 사용 사례로 구성 - 구성요소 : 액터, 유스케이스, 관계 (포함, 확장) |
시퀀스(Sequence) 다이어그램 | 객체와 객체간의 상호작용을 메시지 흐름으로 표현 |
커뮤니케이션(Communication) 다이어그램 | 상호작용에 참여하는 객체/컴포넌트 간의 관계를 명시적으로 표현 |
상태(State) 다이어그램 | 클래스의 객체가 가질 수 있는 모든 가능한 상태와 상태간의 전이를 표현 |
활동(Activity) 다이어그램 | 시스템 내부에 있는 객체의 활동 간의 처리 흐름을 모델링하는 범용적인 다이어그램 🔑 로직, 조건에 따른 처리 흐름을 순서에 따라 정의 |
상호작용 (Interaction Overview) 다이어그램 | 상호작용 다이어그램 간의 제어흐름을 표현 |
타이밍 (Timing) 다이어그램 | 객체 상태 변화와 시간 제약을 명시적으로 표현 |
소프트웨어 개발 방법론
소프트웨어 개발, 유지보수 등에 필요한 수행 방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
- 목적 : 소프트웨어의 생산성과 품질 향상
구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 목적 : 쉬운 이해 및 검증이 가능한 프로그램 코드 생성
- 분활과 정복 원리를 적용
타당성 검토 | 계획 | 요구사항 | 설계 | 구현 | 시험 | 운용/유지보수 |
정보공학 방법론
- 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심의 방법론
- 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템 구축
정보 전략 계획 수립 | 업무 영역 분석 | 업무 시스템 설계 | 업무 시스템 구축 |
객체지향 방법론
- 현실 세계의 개체를 하나의 객체로 만들어 조립해서 필요한 소프트웨어를 구현하는 방법론
- 구성요소 : 객체, 클래스, 메시지
📌 기본 원칙 : 캡슐화, 정보 은닉, 추상화, 상속성, 다형성
요구 분석 | 설계 | 구현 | 테스트 및 검증 | 인도 |
컴퓨넌트 기반 방법론 (CBD ; Component Based Design)
- 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
📌 컴포넌트의 재사용 > 시간 노력 절약, 유지보수비용 최소화, 생산성 및 품질 향상
개발 준비 | 분석 | 설계 | 구현 | 테스트 | 전개 | 인도 |
애자일 방법론
- 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하며 과정 진행하는 방법론
- 종류 : XP(익스트림 프로그래밍), 스크럼, 린, 칸반, 크리스탈 등
* Lean 개발 방법론 : 품질 기법, 낭비요소 제거
* Kanban : Workflow 가시화, 작업 중인 항목의 제한 및 소요시간 측정 작업 지시서를 적용
제품 개열 방법론
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
- 임베디드 소프트웨어에 적합
- 영역공학, 응용공학으로 구분
S/W 공학의 발전적 추세
소프트웨어 재사용
- 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
- 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법
- 기존에 개발된 소프트웨어와 경험, 지식 등을 새로운 소프트웨어에 적용
소프트웨어 재사용 방법
합성 중심 | 블록을 만들어서 끼워 맞춰 소프트웨어를 완성시키는 방법 (=블록 구성 방법) |
생성 중심 | 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법 (=패턴 구성 방법) |
소프트웨어 재공학
- 기존 시스템을 이용하여 보다 나은 시스템을 구축 + 새로운 기능을 추가 = 소프트웨어 성능을 향상
- 유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지 > 유지보수 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
- 기존 소프트웨어 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상 시킴
소프트웨어 재공학의 이점
- 소프트웨어 품질 향상
- 소프트웨어의 생산성 증가
- 소프트웨어의 수명 연장
- 소프트웨어의 오류 감소
CASE (Computer Aided Software Engineering)
- 소프트웨어 개발 과정에서 사용되는 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용해 자동화 하는것
- 객체지향 시스템, 구조적 시스템 등 다양한 시스템에서 활용되는 자동화 도구
- 소프트웨어 생명 주기의 전체 단계를 연결하고 자동화하는 통합된 도구를 제공
- 소프트웨어 개발 도구와 방법론이 결합, 정형화된 구조 및 법을 소프트웨어 개발에 적용하여 생산성 향상 구현
CASE의 주요 기능
- 소프트웨어 생명 주기 전 단계의 연결
- 다양한 소프트웨어 개발 모형 지원
- 그래픽 지원
비용 산정 기법
- 비용산정을 너무 높게 산정할 경우 > 예산 낭비, 일의 효율성 저하
- 비용산정을 너무 낮게 산정할 경우 > 개발자 부담 가중, 품질문제 발생
소프트웨어 비용 결정 요소
- 프로젝트 요소 : 제품 복잡도, 시스템 규모, 요구되는 신뢰도
- 자원 요소 : 인적 자원, 하드웨어 자원, 소프트웨어 자원
- 생산성 요소 : 개발자 능력, 개발 기간
하향식 산정 기법
- 과거 유사 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회으릴 통해 산정하는 비과학적 방법
- 전체 비용을 산정 후 각 작업별 비용을 세분화
전문가 감정 기법
- 경험이 많은 두명 이상의 전문가에게 산정 의뢰
- 가장 편리하고 신속하나, 개인적이고 주관적일 수 있음
델타이 기법
- 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정
- 한명의 조정자와 여러 전문가로 구성
- 의견이 거의 일치할 때 까지 과정 반복
상향식 산정 기법
- 프로젝트의 세부적인 작업 단위별로 비용 산정 후 집계하여 전체 비용 산정하는 방법
📌 원시 코드 라인 수 (LOC) 기법
- 노력(인월) = 개발 기간 X 투입 인원
= LOC / 1인당 월평균 새산 코드 라인 수
- 개발 비용 = 노력(인월) X 단위 비용 (1인당 월평균 인건비)
- 개발 기간 = 노력(인월) / 투입 인원
- 생산성 = LOC / 노력 (인월)
개발 단계별 인월수 기법
- 각 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계별로 산정하는 기법으로 LOC 기법보다 더 정확함
수학적 산정 기법
- 상향식 비용 산정 기법
- 경험적 추정 모형, 실험적 추정 모형이라고도 함
- 목표 : 개발 비용 산정의 자동화
- 과거 유사한 프로젝트를 기반으로 경험적으로 유도
COCOMO 모형
- 보헴이 제안, LOC에 의한 비용 산정 기법
- 강도 분석 및 유연성이 높아 소프트웨어 개발비 견적에 널리 통용됨
📌 COCOMO 소프트웨어 개발 유형
조직형 (Organic Mod) | 반분리형 (Semi-Detached Mode) | 내장형 (Embedded Mode) |
중/소 규모의 소프트웨어 일괄 자료 처리 5만 라인 이하 |
중간형 규모 30만 라인 이하 |
최대형 규모 30만 라인 이상 |
COCOMO 모형 종류
기본형 (Basic) | 중간형 (Intermediate) | 발전형 (Detailed) |
소프트웨어 크기와 개발 유형만을 이용하여 산정 | 4가지 특성 (제품, 컴퓨터, 개발 요원, 프로젝트)의 15가지 요인에 의해 비용 산청 | 개발 공정별로 보다 자세하고 정확하게 노력을 산출하여 비용 산정 |
Putnam 모형
- 소프트웨어 생명주기의 전 과정 동안에 사용될 노력의 분포를 가정하는 모형
- 생명 주기 예측 모형이라고도 하며, Rayleigh-Norden 곡선의 노력분포도를 기초로 함
- 대형 프로젝트에 적합, 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소
FP(기능점수) 모형
- 알브레히트가 제안한 모형
- 소프트웨어의 기능을 증대시키는 요인별로 가중치 부여하고 합산하여 산출된 총 기능 점수와 영향도를 이용하여 비용 산정
비용 산정 자동화 추정 도구
- SLIM : Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 도구
- ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 하여 개발된 도구
프로젝트 일정 계획
프로젝트 프로세스를 이루는 소작업을 파악하고 예측된 노력을 분배하여 소작업의 순서와 일정을 정하는 것
PERT (프로그램 평가 및 검토 기술)
- 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크
- 개발 경험이 없어 소요 기간 예측이 어려운 프로젝트에 사용
- 노드와 간선으로 구성되며 원 노드에는 작업 / 간선에는 낙관치 기대치 비관치 표시
CPM (임계 경로 기법)
- 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간 예측
- 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
간트 차트
- 작업이 언제 시작/종료되는지에 대한 작업 일정을 막대 도표로 표시하는 일정표
- 시간선 (Time-Line) 차트
- 중간 목표 미달 성 시 이유과 기간 예측 가능하고
- 자원 배치와 인원 계획에 유용하게 사용 됨
소프트웨어 개발 방법론 결정
프로젝트 관리 조건을 확인하여 어떤 방법론으로 소프트웨어를 개발할지를 결정하는 것
프로젝트 관리
- 주어진 기간 내 최소 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 활동
- 일정 관리, 비용 관리, 인력 관리, 위험 관리, 품질 관리
소프트웨어 개발 방법론 결정 절차
- 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영
- 개발 단계 별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립
- 결정된 소프트웨어 개발 방법론의 개발 단계별 활동 목적, 작업 내용, 산출물에 대한 메뉴얼 작성
소프트웨어 개발 표준
소프트웨어 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준
SPICE (소프트웨어 처리 개선 및 능력 평가 기준)
- 공식 명칭 ISO/IEC 15504
- 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
- 프로세스 구성 (프로세스 범주 5, 새부 프로세스 40) : 고객-공급자, 공학, 지원, 관리, 조직
- 수행능력 6단계 : 불완전 - 수행 - 관리 - 확립 - 예측 - 최적화
ISO/IEC 12207
- ISO(국제표준화기구) 에서 만든 표준 소프트웨어 생명 주기 프로세스
- 소프트웨어 개발, 운영, 유지보수 등 체계적으로 관리하기 위한 생명주기 표준 제공
- 기본 생명 주기 프로세스, 지원 생명 주기 프로세스, 조직 생명 주기 프로세스
CMMI(능력 성숙도 통합 모델)
- 미국 카네기 멜론 대학교의 SEI (소프트웨어 공학연구소)
- 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도 평가 모델
초기 | 정의된 프로세스 X | 작업자 능력에 따라 성공 여부 결정 |
관리 | 규칙화된 프로세스 | 특정 프로젝트 내 프로세스 정의 및 수행 |
정의 | 표준화된 프로세스 | 조직의 표준 프로세스 활용하여 업무 수행 |
정량적 관리 | 예측 가능한 프로세스 | 프로젝트를 정량적으로 관리 및 통제 |
최적화 | 지속적 개선 프로세스 | 프로세스 역량 향상을 위한 지속적 프로세스 개선 |
소프트웨어 개발 방법론 테일러링
프로젝트의 특성과 필요에 따라 소프트웨어 개발 방법론의 프로세스를 수정 및 보완하는 작업
테일러링 고려사항
내부적 요건 | 목표 환경, 요구사항, 프로젝트 규모, 보유 기술 |
외부적 요건 | 법적 제약사항, 표준 품질 기준 |
테일러링 기법 4가지 : 프로젝트 규모와 복잡도, 프로젝트 구성원, 팀내 방법론 지원, 자동화
소프트웨어 개발 프레임워크
소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉬운 구현을 위한 여러 기능을 제공해주는 시스템
- 주요 기능 : 예외 처리, 트랜잭션 처리, 메모리 공유, 데이터 소스 관리, 서비스 관리 등
- 종류 : 스프링 프레임워크, 전자정부 프레임워크, 닷넷 프레임워크 등
📌 프레임워크 특성
모듈화 | 프레임워크는 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로서 소프트웨어 품질을 향상 시킴 |
재사용성 | 재사용 가능한 모듈들을 제공함으로써 개발자의 생산성을 향상시킴 |
확장성 | 다형성을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능 |
제어의 역흐름 | 개발자가 관리하고 통제해야 하는 제어를 프레임워크에 넘김으로써 생산성을 향상시킴 |
'정보처리기사' 카테고리의 다른 글
흥달쌤 깨알 C언어 11~20강 스터디 노트 (0) | 2022.04.07 |
---|---|
흥달쌤 깨알 C언어 1~10강 스터디 노트 (0) | 2022.04.06 |
2021년 2회 정보처리기사 실기 문제 (2) | 2021.08.04 |
[정보처리기사 실기] 2021년 1회 실기 출제 개념 정리 (0) | 2021.07.06 |
[정보처리기사] 21년 1회 필기 기출 - 실기 기출 / 겹치는 개념 정리 (0) | 2021.06.14 |