소프트웨어 생명주기 모델
- 폭포수 모델
- 프로토타이핑 모델
- 나선형 모델
- 반복적 모델
애자일 방법론
- 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
- 예시) XP, 스크럼, 린
애자일 방법론 - XP
가치 (5가지)
- 용기(Courage)
- 단순성(Simplicity)
- 의사소통(Communication)
- 피드백(Feedback)
- 존중(Respect)
기본원리 (12가지)
- 짝 프로그래밍(Pair Programming)
- 개발자 둘이서 짝으로 코딩하는 원리
- 공동 코드 소유(Collective Ownership)
- 시스템에 있는 코드는 누구든지 언제라도 수정 가능하다는 원리
- 지속적인 통합(CI; Continuous Integration)
- 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리
- 계획 세우기(Planning Process)
- 고객이 요구하는 비즈니스 가치를 정의하고, 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려주어야 한다는 원리
- 작은 릴리즈(Small Release)
- 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리
- 메타포어(Metaphor)
- 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 한다는 원리
- 간단한 디자인(Simple Design)
- 현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리
- 테스트 기반 개발(TDD; Test Driven Development)
- 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리
- 리팩토링(Refactoring)
- 프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 통해 시스템을 재구성한다는 원리
- 40시간 작업(40-Hour work)
- 개발자가 피곤으로 인해 실수하지 않도록 일주일에 40시간 이상을 일하지 말아야 한다는 원리
- 고객 상주(On Site Customer)
- 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시켜야 한다는 원리
- 코드 표준(Coding Standard)
- 효과적인 공동 작업을 위해서는 모든 코드에 대한 코딩 표준을 정의해야 한다는 원리
애자일 방법론 - 스크럼
- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
- 주요 개념 : 백로그, 스프린트, 스크럼 미팅, 스크럼 마스터, 스프린트 회고, 번 다운 차트...
애자일 방법론 - 린
- 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
- JIT(Just In Time), 칸반(Kanban) 보드 사용
객체지향 구성요소
클래스
- 특정 객체 내에 있는 변수와 메서드를 정의하는 일종의 틀
- 객체 지향 프로그래밍에서 데이터를 추상화하는 단위
- 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현
- 속성은 변수의 형태로, 행위는 메서드 형태로 선언
객체 (Object)
- 물리적, 추상적으로 자신과 다른 것을 식별 가능한 대상
- 클래스에서 정의한 것을 토대로 메모리에 할당됨
- 객체마다 각각의 상태와 식별성을 가짐
메서드 (Method)
- 클래스로부터 생성된 객체를 사용하는 방법
- 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산
- 전통적 시스템의 함수(Function) 또는 프로시저(Procedure)에 해당하는 연산 기능
메시지 (Message)
- 객체 간 상호 작용을 하기 위한 수단
- 객체에게 어떤 행위를 하도록 지시하는 방법
- 객체 간의 상호 작용은 메시지를 통해 이루어짐
- 메시지는 객체에서 객체로 전달됨
인스턴스 (Instance)
- 객체 지향 기법에서 클래스를 통해 만든 실제의 실형 객체
- 클래스에 속한 각각의 객체
- 실제로 메모리상에 할당
속성 (Property)
- 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의
- 성질, 분류, 식별, 수량, 현재 상태 등에 대한 표현 값
객체 지향 기법
캡슐화(Encapsulation)
- 서로 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 기법
- 결합도 낮아지고 재사용이 용이
- 정보 은닉과 관계가 깊음
- 변경 발생 시 오류의 파급 효과가 적음
상속성(Inheritance)
상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법
다형성(Polymorphism)
- 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
- 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질
- 오버로딩(Overloading)
- 오버라이딩(Overriding)
추상화(Abstraction)
공통 성질을 추출하여 추상 클래스를 설정하는 기법
정보 은닉(Information Hiding)
- 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술
- 필요하지 않은 정보는 접근할 수 없도록 하여 한 모듈 또는 하부 시스템이 다른 모듈의 구현에 영향을 받지 않게 설계됨
- 모듈 사이의 독립성을 유지하는 데 도움을 줌
관계성(Relationship)
두 개 이상의 엔터티 형에서 데이터를 참조하는 관계를 나타내는 기법
객체 지향 설계 원칙(SOLID)
- 단일 책임의 원칙(SRP; Single Responsibility Principle)
- 하나의 클래스는 하나의 목적을 위해서 생성되며, 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다는 원칙
- 객체 지향 프로그래밍의 5원칙 중 나머지 4원칙의 기초원칙
- 개방 폐쇄 원칙(OCP; Open Close Principle)
소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙
- 리스코프 치환의 원칙(LSP; Liskov Substitution Principle)
서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다는 원칙
- 인터페이스 분리의 원칙(ISP; Interface Segregation Principle)
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙
- 객체 설계 시 특정 기능에 대한 인터페이스는 그 기능과 상관없는 부분이 변해도 영향을 받지 않아야 한다는 원칙
- 의존성 역전의 원칙(DIP; Dependency Inversion Principle)
객체에서 어떤 클래스를 참조해서 사용하는 경우, 그 클래스를 직접 참조하는 것이 아니라 그 대상의 상위 요소인 추상 클래스나 인터페이스로 참조하라는 원칙
객체지향 분석 방법론
- OOSE(Object Oriented Software Engineering)
- 야콥슨(Jacobson)
- 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론
- 분석, 설계, 구현 단계로 구성
- 기능적 요구사항 중심의 시스템
- OMT(Object Modeling Technology)
- 럼바우(Rumbaugh)
- 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
- 분석 절차는 객 -> 동 -> 기 순서로 진행
- 객체 모델링(Object Modeling) = 정보 모델링(Information Modeling)
- 시스템에서 요구하는 객체를 찾고 객체들 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링
- 객체 다이어그램을 활용하여 표현
- 동적 모델링(Dynamic Modeling)
- 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현하는 모델링
- 상태 다이어그램을 활용하여 표현
- 기능 모델링(Functional Modeling)
- n프로세스들의 자료 흐름을 중심으로 처리 과정 표현하는 모델링
- 자료 흐름도(DFD)를 활용하여 표현
- 객체 모델링(Object Modeling) = 정보 모델링(Information Modeling)
- OOD(OObject Oriented Design)
- 부치(Booch)
- 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
- 분석과 설계의 분리가 불가능
- 분석하는 데 이용된 객체 모델의 설계 시 적용
- 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
비용산정 모형
분류 | 설명 | 종류 |
하향식 산정방법 |
경험이 많은 전문가에게 비용 산정을 의뢰하거나 여러 전문가와 조정자를 통해 산정하는 방식 | - 전문가 판단 - 델파이 기법 |
상향식 산정방법 |
세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식 | - 코드 라인 수(LoC) - Man Month - COCOMO 모형 - 푸트남 모형 - 기능점수(FP) 모형 |
LoC(Lines of Code) 모형
Man Month 모형
- 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식
- (Man Month) = (LoC) / (프로그래머의 월간 생산성)
- (프로젝트 기간) = (Man Month) / (프로젝트 인력)
COCOMO
- 보헴(Boehm)이 제안
- 프로그램 규모에 따라 비용을 산정하는 방식
- 규모에 따라 조직형, 반 분리형, 임베디드형으로 나뉨
푸트남 모형
- 생명주기 예측 모형
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
기능점수(FP; Function Point) 모형
FP = 총 기능점수 x [0.65 + (0.1 x 총 영향도)]
일정관리 모델
프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델
- 주 공정법(CPM; Critical Path Method)
- 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
- 모든 자원 제약사항을 배제한 상태로 프로젝트의 시작과 끝을 나타내는 노드와 노드 간의 연결을 통해 공적을 계산하기 위한 액티비티 표기법
- 가장 긴 시간이 걸리는 경로를 계산.
- PERT(Program Evaluation and Review Technique)
일의 순서를 계획적으로 정리하기 위한 수렴 기법으로 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정을 관리하는 기법
- 중요 연쇄 프로젝트 관리(CCPM; Critical Chain Project Management)
주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법
출처: 2024 수제비 정보처리기사 실기 ( 6판 )
'책 > 2024 수제비 정보처리기사' 카테고리의 다른 글
[정보처리기사] 서버 인증 및 접근 통제 (0) | 2024.10.17 |
---|---|
[정보처리기사] SW 개발 보안을 위한 공격기법의 이해 (5) | 2024.10.14 |
[정보처리기사] CHAP 02 데이터베이스 기초 활용 (0) | 2024.10.04 |
[정보처리기사] 내/외부 연계 모듈 구현 (4) | 2024.10.02 |
[정보처리기사] 디자인 패턴 (2) | 2024.07.13 |