반응형
공부를 너무 띄엄띄엄하는 것 같군요.. 그래도 오늘은 했으니 정리 해보겠습니다.
소프트웨어 개발 방법론
소프트웨어 생명주기
소프트웨어 생명주기 모델 프로세스
순서 | 프로세스 | 설명 | 활동 |
1 | 요구사항 분석 | 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계 | - 기능 요구사항 - 비기능 요구사항 |
2 | 설계 | 시스템 명세 단계에서 정의한 기능을 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계 | -시스템 구조 설계 - 프로그램 설계 - 사용자 인터페이스 설계 |
3 | 구현 | 설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계 | - 인터페이스 개발 - 자료 구조 개발 - 오류 처리 |
4 | 테스트 | 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 단계 | - 단위 테스트 - 통합 테스트 - 시스템 테스트 - 인수 테스트 |
5 | 유지보수 | 시스템이 인수되고 설치된 후 일어나는 모든 활동 | - 예방, 완전,교정, 적응, 유지보수 |
소프트웨어 생명주기 모델 종류
종류 | 설명 |
폭포수 모델 | 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수 |
프로토타이핑 모델 | 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델 |
나선형 모델 | 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가 |
반복적 모델(애자일 모델) | - 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델 - 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델 |
소프트웨어 개발 방법론
개념
소프트웨어 개발 방법론은 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법이다.
종류 | 설명 |
구조적 방법론 | - 프로세스 중심의 하향식 방법론 - 구조적 프로그래밍 표현을 위해 나씨-슈나이더만 차트 사용 |
정보공학 방법론 | - 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론 - 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론 |
객체 지향 방법론 | - "객체"라는 기본 단위로 시스템을 분석 및 설계하는 방법론 |
컴포넌트 기반 방법론 | - 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론 - 소프트웨어 재사용이 가능 |
애자일 방법론 | - 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론 |
제품 계열 방법론 | - 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론 - 임베디드 소프트웨어를 작성하는 데 유용한 방법론 |
애자일 방법론
애자일 방법론 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속
적응적 경량 개발 방법론이다.
종류 | 내용 |
XP | - 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론 - 1~3주의 반복 개발주기 |
XP의 5가지 가치 - 용기(Courage), 단순성(Simplicity), 의사소통(Communication), 피드백(Feedback), 존중(Respect) XP의 12가지 기본 원리 - 짝 프로그래밍(Pair Programming), 공동 코드 소유(Collective Ownership), 지속적인 통합(Continuous Integration), 계획 세우기(Planning Process), 작은 릴리즈(Samll Release), 메타포어(Metaphor), 간단한 디자인(Simple Design), 테스트 기반 개발(Test, Driven Development), 리팩토링(Refactoring), 40시간 작업(40-Hour Work), 고객 상주(On Site Customer), 코드 표준(Coding Standard) |
종류 | 내용 |
스크럼 | 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론 |
주요 개념 - 백로그 : 제품과 프로젝트에 대한 요구사항 - 스프린트: 2~4주의 짧은 갭라 기간으로 반복적 수행으로 개발품질 향상 - 스크럼 미팅: 매일 15분 정도 미팅으로 To-Do List 계획수립 - 스크럼 마스터: 프로젝트 리더, 스크럼 수랭 시 문제를 인지 및 해결하는 사람 - 스프린트 회고: 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록 - 번 다운 차트: 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트 |
|
린 | - JIT(Just In Time), 칸반Kanban) 보드 사용 |
객체 지향 분석 방법론
객체 지향 구성 요소
구성 요소 | 설명 |
클래스 | - 객체 지향 프로그래밍에서 데이터를 추상화하는 단위 - 특정 객체 내에 있는 변수와 메서드를 정의하는 일종의 틀 |
객체 | - 물리적, 추상적으로 자신과 다른 것을 식별 가능한 대상 - 객체마다 각각의 상태와 식별성을 가짐 |
메서드 | - 클래스로부터 생성된 객체를 사용하는 방법 - 전통적 시스템의 함수 또는 프로시저에 해당하는 연산 가능 |
메시지 | - 객체 간 상호 작용을 하기 위한 수단 - 객체에게 어떤 행위를 하도록 지시하는 방법 - 객체 간의 상호 작용은 메시지를 통해 이루어짐 |
인스턴스 | - 객체 지향 기법에서 클래스를 통해 만든 실제의 실형 객체 - 클래스에 속한 각각의 객체 |
속성 | - 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의 |
객체지향 기법
기법 | 설명 |
캡슐화 | - 결합도가 낮아지고 재사용이 용이 - 정보 은닉과 관계가 깊음 - 변경 발생 시 오류의 파급 효과가 적음 |
상속성 | 상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법 |
다형성 | - 상속 받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질 - 오버로딩: 매개변수의 유형과 개수를 다르게 하여 같은 이름의 메서드를 여러 개 가지는 기법 - 오버라이딩: 상위 클래스에서 정의한 일반 메서드의 구현을 하위 클래스에서 무시하고 재정의할 수 있는 기법 |
추상화 | - 공통 성질을 추출하여 추상 클래스를 설정하는 기법 |
정보 은닉 | - 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술 -모듈 사이의 독립성을 유지하는 데 도움을 준다. |
관계성 | 연관화(Association) - is-member-of 관계 - 클래스와 객체의 참조 및 이용 관계 - 같은 계층에 속하는 클래스들 사이의 상호 의존성을 보여주는 비계층적 관계성을 나타냄 |
집단화(Aggregation) - is part of 관계, part-whole 관계 - 서로 관련 있는 여러 개의 객체를 묶어 한 개의 상위 객체를 만드는 특징이 있음 - 일반화와 달리 상위 클래스의 성질들이 하위 클래스로 상속되지는 않음 |
|
분류화(Classification) - is-instance-of 관계 - 공통된 속성에 의해 정의된 객체 구성원들의 인스턴스 |
|
일반화(Generalization) - is-a 관계 - 클래스들 간의 개념적인 포함 관계 |
|
특수화(Specialization) - is-a 관계 - 상위 클래스와 특성들을 상속받으면서 하위 클래스에서 나름대로 수정을 가하고 자기 자신의 고유한 특성을 갖는 관계 |
객체 지향 설계 원칙(SOLID)
- 단일 책임의 원칙(Single Responsibility Principle)
- 개방 폐쇄 원칙(Open Close Principle)
- 리스코프 치환의 원칙(Liskov Substitution Principle)
- 인터페이스 분리의 원칙(Interface Segregation Principle)
- 의존성 역전의 원칙(Dependency Inversion Principle)
객체 지향 분석 방법론 종류
다른 것 보단 럼바우 하나만 알면 될 것 같습니다.
럼바우(Rumbaugh)
1. 객체 모델링
- 정보 모델링이라고도 함
- 시스템에서 요구하는 객체를 찾고 객체들 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링
2. 동적 모델링
- 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현하는 모델링
- 상태 다이어그램을 활용하여 표현
3. 기능 모델링
- 프로세스들의 자료 흐름을 중심으로 처리 과정 표현 하는 모델링
- 자료 흐름도(DFD)를 활용하여 표현
프로젝트 관리 3대 요소
요소 | 설명 |
사람 | 프로젝트 관리에서 가장 기본이 되는 인적 차원 |
문제 | 사용자의 입장에서 문제를 분석하여 인식함 |
프로세스 | 소프트웨어 개발에 필요한 전체적인 작업 계획 및 구조 |
비용산정 모형
비용산정 모형 분류
분류 | 설명 | 종류 |
하향식 산정방법 | 경험이 많은 전문가에게 비용 산정을 의뢰하거나 여러 전문가와 조정가를 통해 산정하는 방식 | - 전문가 판단 - 델파이 기법 |
상향식 산정방법 | 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식 | - 코드 라인 수(LoC) - Man Month - COCOMO 모형 - 푸트남 모형 - 기능점수(FP) 모형 |
중요
LOC 계산법: (낙관치 + 4*중간치 + 비관치) / 6
Man Month 계산법
1. Man Month = (LOC) / (프로그래머의 월간 생산성)
2. 프로젝트 기간 = (Man Month) / 프로젝트 인력
3. 기능점수(FP) 모형 = 총 기능점수 x [0.65 + (0.1 x총 영향도)]
COCOMO 소프트웨어 개발 유형
조직형(Organic Mode)
- 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
반 분리형(Semi-Detached Mode)
- 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형
임베디드형(Embedded Mode)
- 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형
일정관리 모델
주 공정법(CPM): 프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로이다.
PERT
중요 연쇄 프로젝트 관리(CCPM)
현행 시스템 분석
현행 시스템 파악 절차
1단계 | --> | 2단계 | --> | 3단계 |
구성/기능/인터페이스 파악 | 아키텍쳐 및 소프트웨어 구성 파악 | 하드웨어 및 네트워크 구성 파악 |
소프트웨어 아키텍쳐
소프트에어 아키텍쳐는 여러 가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 그리고 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체이다.
뷰 | 설명 |
유스케이스 뷰 | 사용자, 설계자, 개발자, 테스트 관점 |
논리 뷰 | 설계자, 개발자 관점 |
프로세스 뷰 | 개발자, 시스템 통합자 관점 |
구현 뷰 | 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰 |
배포 뷰 | 컴포넌트가 물리적인 아키텍쳐에 어떻게 배치되는가를 매핑해서 보여주는 뷰 |
소프트웨어 아키텍쳐 패턴
유형 | 설명 |
계층화 패턴 | 시스템 계층으로 구분하여 구성하는 패턴 |
클라이언트-서버 패턴 | 하나의 서버와 다수의 클라이언트로 구성된 패턴 |
파이프-필터 패턴 | 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 페턴 |
브로커 패턴 | 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 이 컴포넌트들은 원격 서비스 실행을 통해 상호 작용이 가능한 패턴 |
모델-뷰-컨트롤러 패턴 | 모델: 핵심 기능과 데이터 보관 뷰: 사용자에게 정보 표시(하나 이상의 뷰가 정의될 수 있음) 컨트롤러: 사용자로부터 요청을 입력받아 처리 |
소프트웨어 아키텍쳐 비용 평가 모델
종류 | 설명 |
SAAM | 변경 용이성과 기능성에 집중, 평가가 용이하여 경험이 없는 조직에서도 활용 가능한 비용 평가 모델 |
ATAM | 아키텍쳐 품직 속성을 만족시키는지 판단 및 품질 속성들의 이해 상층관계까지 평가하는 모델 |
CBAM | ATAM 바탕의 시스템 아키텍쳐 분석 중심으로 경제적 의사결정에 대한요구를 충족하는 비용 평가 모델 |
ADR | 소프트웨어 아키텍쳐 구성요소 간 응집도를 평가하는 모델 |
ARID | 전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 비용 평가 모델 |
디자인 패턴 유형
생성 | 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴 |
구조 | 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴 |
행위 | 클래스나 객체들이 상호 작용하는 방법가 역할 분담을 다루는 패턴 |
디자인 패턴 종류
생성: Builder, Protype, Factory Method, Abstract Factory, Singleton
구조: Bridge, Decorator, Facade, FlyWeight, Proxy, Composite, Adapter
행위: Mediator, Interpreter, Iterator, Template Method, Observer, State, Visitor, Command, Strategy, Memento
Chain of Responsibility
반응형
'자격증' 카테고리의 다른 글
[4일차] 정보처리기사 실기 7장-SQL 응용 (4) | 2024.10.02 |
---|---|
[3일차] 정보처리기사 실기 프로그래밍 언어 활용 - Python 언어 (0) | 2024.09.30 |
[2일차] 정보처리기사 실기 프로그래밍 언어 활용 - Java 언어 (1) | 2024.09.27 |
[1일차] 정보처리기사 실기 프로그래밍 언어 활용 - C언어 (6) | 2024.09.26 |