본문 바로가기

WIN

2025 정보처리기사 실기 1과목(요구사항 확인) 핵심 총정리|애자일·SDLC·디자인패턴·비용산정 한 번에

반응형

 

 

 

 

 

 

 

2025 정보처리기사 실기 1과목(요구사항 확인) 핵심 총정리

 

 

 

 

 

 



 

 

 

 

 

I 요구사항 확인

 

 

001 소프트웨어 개발 방법론 ⭐

 

소프트웨어 생명주기 (SDLC; Software Development Life Cycle)

  • 시스템이 개발될 때부터 운용과 유지보수의 생애를 마칠 때까지 전 공정을 체계화한 절차
  • 소프트웨어 생명주기 모델 종류 [✏️ 폭프나반]
    • 포수 모델
    • 로토타이핑 모델
    • 선형 모델
    • 복적 모델

 

폭포수 모델 (Waterfall Model)

  • 요구사항 변경이 어렵고, 각 단계의 결과가 확인되어야 다음 단계로 넘어갈 수 있는 모델
  • 모형의 적용 경험과 성공 사례가 많음
  • 선형, 순차적, 고전적 생명주기 모형
  • 단계별 정의와 산출물 명확

 

프로토타이핑 모델 (Prototyping Model)

  • 고객이 요구한 주요 기능을 실제 개발될 소프트웨어처럼 견본품(프로토타입)으로 구현하며 완성하는 모델

 

나선형 모델 (Spiral Model)

  • 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템을 개발해나가는 모델
  • 절차 [✏️ 계위개평]
    • 획 및 정의
    • 험 분석
    • 고객

 

반복적 모델 (Iteration Model)

  • 구축 대상을 여러 개의 시스템이나 모듈로 나누어 병렬적으로 개발 후 통합하거나 반복적으로 개발하여 완성하는 모델
  • 병행 개발로 일정 단축 가능

 

소프트웨어 개발방법론

  • 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차 기법
소프트웨어 개발 방법론 종류 설명
구조적 방법론
(Structured
 Development)
- 전체 시스템을 기능에 따라 나누어 분할과 정복 접근 방식의 방법론
- 프로세스 중심 하향식 방법론
- 구조적 프로그래밍 표현을 위해 나씨-슈나이더만(NS) 차트 사용
정보공학 방법론
(Information
 Engineering
 Development)
- 정보 시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
- 개발 주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
- 기업의 데이터 중심 방법론
객체 지향 방법론
(Object-Oriented
 Development)
- '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론
- 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용
- 객체, 클래스, 메시지 사용
컴포넌트 기반 방법론
(CBD; Component
 Based Development)
- 소프트웨어를 구성하는 컴포넌트를 조립하여 하나의 새로운 응용 프로그램을 작성하는 방법론
- 개발 기간 단축으로 인한 생산성 향상
- 확장성이 좋고, 소프트웨어 재사용 가능
애자일 방법론
(Agile Development)
- 절차보다 소통이 중심이 되어 변화에 유연하고 신속하게 적응하는 방법론
- 개발 기간이 짧고 신속하며, 폭포수 모델과 대비됨
제품 계열 방법론
(Product Line
 Development)
- 특정 제품에 적용하고 싶은 공통 기능을 정의하여 개발하는 방법론
- 임베디드 소프트웨어를 작성하는데 유용한 방법론

 

애자일 방법론 (Agile Development)

  • 절차보다 소통이 중심이 되어 변화에 유연하고 신속하게 적응하는 방법론
  • 개발 기간이 짧고 신속하며, 폭포수 모델과 대비됨
  • 기존의 개발 방법론의 한계를 극복하기 위해 고안됨
  • 애자일 방법론 유형
    • XP (eXtreme Programming)
    • 스크럼 (SCRUM)
    • 린 (Lean)
    • 크리스털
    • FDD (Feature-Driven Development)
    • ASD (Adaptive Software Development)

 

XP (eXtreme Programming) ⭐⭐

  • 문서보다 코드를 중요시하여 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이는 방법론
  • 1~3주 반복 개발 주기
  • XP 핵심가치 5 [✏️ 의피존용단]
    • 사소통 (Communication)
    • 드백 (Feedback)
    • 중 (Respect)
    • 기 (Courage)
    • 순성 (Simplicity)
XP 실천 항목 12 설명
Pair Programming
짝 프로그래밍
- 개발자 둘이 함께 짝으로 코딩
Collective Ownership
공동 코드 소유
- 시스템에 있는 코드는 누구든지 언제나 수정 가능
CI (Continuous Integration)
지속적 통합
- 매일 여러 번씩 소프트웨어를 통합·빌드
Planning Process
계획 세우기
- 고객이 요구하는 비즈니스 가치 정의
- 고객에게 개발자에게 필요한 것과 어떤 부분에서 지연될 수 있는지 알려줘야 함
Small Release
소규모 배포
- 작은 시스템을 먼저 만들어서 짧은 단위로 업데이트
Metaphor
메타포
- 공통적인 이름 체계, 시스템 서술서로 고객과 개발자 간 의사소통을 원활하게 함
Simple Design
간단한 디자인
- 현재 요구사항에 적합한 가장 단순한 시스템 설계
TDD; Test Driven Development
테스트 기반 개발
- 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 구현
Refactoring
리팩토링
- 프로그램의 기능을 바꾸지 않으면서 중복 제거, 단순화 등을 통해 시스템 재구성
40 Hour Work
40시간 작업
- 개발자가 피곤으로 실수하지 않도록 일주일에 40시간만 일하기
On Site Customer
고객 상주
- 개발자의 질문에 즉각 대답할 수 있는 고객이 풀타임 상주
Coding Standard
표준 코딩
- 모든 코드에 대해 코딩 표준을 정의

 

스크럼 (SCRUM)⭐

  • 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
  • 소프트웨어 개발 시 포함될 기능, 개선점의 우선순위 부여
  • 개발 주기를 2~4주로 조절하여 실제 동작할 수 있는 결과 제공
  • 항상 팀  단위로, 매일 15분 회의
스크럼 용어 설명
백로그 - 제품, 프로젝트에 대한 요구사항
스프린트 - 2~4주의 짧은 개발 동안 반복적 수행을 통해 개발 품질 향상
스크럼 마스터 - 프로젝트 리더
스프린트 회고 - 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등 확인 및 기록
번 다운 차트 - 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트

 

린 (Lean)

  • 도요타의 린 시스템 품질 기법을 소프트웨어 개발에 적용하여 낭비 요소를 제거해 품질 향상
  • JIT(Just In Time), 칸반 보드 사용

 

객체 지향 방법론

  • '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론
  • 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용
  • 객체, 클래스, 메시지 사용
  • 객체 지향 구성요소 6
    • 클래스(Class)
    • 객체 (Object)
    • 메서드 (Method)
    • 메시지 (Message)
    • 인스턴스 (Instance)
    • 속성 (Property)
  • 객체 지향 기법 6 [✏️ 캡상다추정관]
객체 지향 기법 6 설명
슐화 (Encapsulation) - 서로 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만 표출
- 재사용 용이, 인터페이스 단순화
속 (Inheritance) - 상위 클래스의 속성, 메서드를 하위 클래스에서 재정의 없이 물려받아 사용
형성 (Polymorphism) - 상속 받은 하위 객체들이 상위 객체와 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질
- 오버로딩: 같은 이름으로 매개변수의 유형, 개수만 다르게 다양하게 정의
- 오버라이딩: 상위 클래스에서 정의한 메서드의 구현을 하위 클래스에서 무시하고 재정의
상화 (Abstraction) - 공통 성질을 추출하여 추상 클래스 설정
- 과정 추상화, 자료 추상화, 제어 추상화
보 은닉 (Information Hiding) - 코드 내부를 숨기고, 공개 인터페이스를 통해서만 접근 가능하도록 만드는 코드 보안 기술
계성 (Relationship) - 두 개 이상의 엔터티 형에서 데이터를 참조하는 관계를 나타내는 기법
- Association 연관화: is-member-of
- Aggregation 집단화:is part of, part-whole
- Classification 분류화: is-instance-of
- Generalization 일반화: is-a
- Specialization 특수화: is-a
  • 객체 지향 설계 원칙 5 [✏️ SOLID]
SOLID 설명
SRP; Single Responsibility
단일 책임의 원칙
- 하나의 클래스는 하나의 목적을 위해서 생성 (한 클래스는 하나의 책임을 수행하는 데 집중)
OCP; Open Close
개방 폐쇄의 원칙
- 소프트웨어 구성요소(컴포넌트, 클래스 ,모듈, 함수)는 확장에 열려있고 변경에는 닫혀있어야 함
LSP; Liskov Substitution
리스코프 치환의 원칙
- 하위 객체는 어디서나 상위 클래스를 교체할 수 있어야 함
ISP; Interface Segregation
인터페이스 분리의 원칙
- 범용적인 인터페이스보다 실제로 사용하는 인터페이스를 분리하여 구현해야 함
DIP; Dependency Inversion
의존성 역전의 원칙
- 상위 객체는 구현된 하위 객체에 의존하지 말고, 추상화된 인터페이스에 의존해야 함
  • 객체 지향 방법론 종류
객체 지향 방법론 종류 설명
Rumbaugh 럼바우 방법론 - 그래픽 표기법을 이용해 소프트웨어 구성요소를 모델링하는 방법론 (체 → 적 → 능)
- 체 모델링: Object Modeling, Information Modeling
- 적 모델링: Dynamic Modeling
- 능 모델링: Functional Modeling
Booch 부치 방법론 - 미시적 방법 + 거시적 방법
- 설계 문서화 강조하여 다이어그램 중심으로 개발
Jacobson 제이콥슨 방법론 - 유스케이스(Usecase) 사용
Coad-Yourdon 코드-요든 방법론 - E-R 다이어그램(ERD) 사용
Wirfs-Brock 워프-브록 방법 - 분석과 설계 간 구분 없음

 

 

 

002 프로젝트 관리 ⭐⭐

 

프로젝트 관리

  • 주어진 기간 내 최소 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동
  • 프로젝트 관리 3요소 [3P]
    • People 사람
    • Problem 문제
    • Process 프로세스

 

비용 산정

  • 하향식 산정 기법
하향식 산정 기법 설명
전문가 판단 기법 프로젝트 경험이 있는 전문가가 비용 산정
델파이 기법 프로젝트 경험이 있는 전문가 여러 명이 비용 산정
  • 상향식 산정 기법
상향식 산정 기법 설명
LoC; Lines of Code
코드 라인 수 기법
- 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하여 비용 산정
- ( 낙관치 + ( 4 * 중간치 ) + 비관치 ) / 6
M/M; Man Month 기법 - 한 사람이 1개월동안 할 수 있는 일의 양을 기준으로 프로젝트 비용 산정
- LoC: 원시 코드 라인 수
- M/M = ( LoC / 프로그래머 월간 생산량 )
- 기간 = ( M/M / 프로젝트 인력 명수 )
COCOMO 기법 - 보헴, 프로그램 규모에 따라 비용 산정
- 조직형 (Organic Mode): 5만 라인 이하
- 반 분리형 (Semi-Detached Mode): 30만 라인 이하
- 임베디드형 (Embededed Mode): 30만 라인 이상
Putnam 기법 - 생명 주기 예측 모형
- Rayleigh-Norden 곡선 사용
FP; Function Point
기능 점수 기법
- 요구 기능을 증가시키는 인자에 가중치를 부여한 후 합산하여 기능의 점수를 계산하여 비용 산정
- ETIMACS: FP 모형을 기초로 개발한 자동화 추정 도구
더보기

FP 기능점수 기능 분류

 

일정 관리

  • 프로젝트가 일정 기한 내에 완료될 수 있도록 프로세스를 분리하여 순서와 일정을 정하는 것
  • WBS(Work Beakdown Structure): 개발 프로젝트를 여러 개의 작은 단위로 나누어 계층적으로 기술한 업무 분류 구조
  • PERT: PERT는 불확실한 신규 프로젝트를 다루는 기법, (낙관치 + (4 * 중간치) + 비관치) / 6
  • CPM (Critical Path Method): 임계 경로 기법.CPM은 경험 기반의 비교적 정확한 결정론적 기법, 
  • 간트차트: 프로젝트 일정 관리를 위한 바 형태의 차트, 자원 배치 계획에 유용하게 사용, CPM으로부터 만드는 것이 가능

 

위험 관리

  • 프로젝트에 내재된 위험 요소를 인식하여 그 영향을 분석하여 관리하는 활동
  • 위험 대응 전략 [✏️ 회전완수]
    • 피 (Avoidance): 발생 가능성을 원천적으로 제거하는 전략 
    • 가 (Transference): 위험에 대한 책임을 제3자에게 넘기는 전략
    • 화 (Mitigation): 위험 발생 가능성·영향력을 감소시키는 전략
    • 용 (Acceptance): 위험을 그대로 받아들이는 전략

 

 

 

003 현행 시스템 파악 ⭐

 

 

소프트웨어 아키텍처 4+1뷰

  • 요구사항을 정리해놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적 접근 방법
소프트웨어 아키텍처 4+1뷰 설명
유스케이스 뷰
(Usecase View)
- 사용자, 설계자, 개발자, 테스트 관점
- 유스케이스나 아키텍처를 도출·설계하며 다른 뷰를 검증
논리 뷰
(Logical View)
- 설계자, 개발자 관점
- 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명
프로세스 뷰
(Process View)
- 개발자, 시스템 통합자 관점
- 시스템의 비기능적인 속성
- 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등 표현하는 뷰
구현 뷰
(Implementation View)
- 개발자 관점
- 개발 환경 안에서 정적인 모듈의 구성을 보여주는 뷰
- 컴포넌트 구조와 의존성을 보여주고 컴포넌트에 관한 부가적인 정보 정의
배포 뷰
(Deployment View)
- 시스템 엔지니어 관점
- 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는지 매핑해서 보여주는 뷰
- 물리적 시스템 구성

 

소프트웨어 아키텍처 패턴 ⭐

  • 소트프웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식
  • 주어진 상황에서 일반적으로 발생하는 문제점에 대한 해결 방식이자 재사용 가능한 솔루션
소프트웨어 아키텍처 패턴 설명
계층화 패턴
(Layered Pattern)
- 기능을 계층별로 분리하여 구성
- 각 하위 모듈은 특정한 수준의 추상화 제공, 각 계층은 다음 상위 계층에 서비스 제공
- 모듈화, 유지보수 용이, 성능저하 가능성
클라이언트-서버 패턴
(Client-Server Pattern)
- 하나의 서버와 다수의 클라이언트로 구성
- 서버는 클라이언트로부터의 요청을 대기
- 중앙 집중 관리, 자원 공유, 서버 부하 가능성
파이프-필터 패턴
(Pipe-Filter Pattern)
- 데이터 흐름에 따라 단계 별로 처리하는 단방향 구성
- 서브 시스템이 입력 데이터를 받아 처리하고 다음 서브 시스템에게 넘김
- 재사용성, 병렬 처리, 데이터 변환 오버헤드
브로커 패턴
(Broker Pattern)
- 분리된 컴포넌트로 이루어진 분산 시스템 내 중개자 역할
- 분산 환경, 미들웨어, 확장성
MVC 패턴
(Model-View-Controller Patten)
- 대화형 어플리케이션을 Model, View, Controller로 분리
- 관심사 분리, UI 변경 용이
마스터-슬레이브 패턴
(Master-Slave Pattern)
- 연산, 통신을 책임지는 마스터와 제어되고 동기화 되는 슬레이브로 구성 (작업 분배 및 결과 통합)
- 일반적으로 실시간 시스템에서 사용
- 병렬 처리, 복제, 부하 분산

 

소프트웨어 아키텍처 비용 평가모델

  • 아키텍처 접근법이 품질 속성에 미치는 영향 판단, 아키텍처의 적합성을 평가하는 모델 [✏️ SACAA린]
SW 아키텍처 비용 평가모델  설명
SAAM
(Software Architecture Analysis)
- 시나리오 기반 아키텍처 평가 기법, 최초의 아키텍처 평가 모델
- 기능적·비기능적 요구사항을 시나리오로 작성하여 품질 속성 평가
ATAM
(Architecture Trade-off Analysis Method)
- 아키텍처 품질 속성을 만족시키는지 품질 속성 간 상충 관계(Trade-off)를 분석
- SAAM을 확장한 모델
- 위험 요소와 민감도 포인트 식별
CBAM
(Cost Benefit Analysis Method)
- ATAM 기반 경제적 분석 모델
- 품질 속성 개선의 경제적 가치를 판단하는 데 사용
ADR
(Active Design Review)
- 소프트웨어 아키텍처 구성요소 간 응집도를 평가하는 모델
ARID
(Active Reviews for Intermediate Designs)
- 전체 아키텍처가 아닌 특정 부분에 대한 품질 요소에 집중하는 비용 평가모델

 

디자인 패턴 - 성 5 ⭐

  • 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식 구조화, 캡슐화를 수행하는 패턴 [✏️생빌 프로 팩앱싱]
생성 패턴 설명
Builder
- 복잡한 객체(인스턴스)를 단계별로 생성할 수 있게 하는 패턴
- 객체의 생성과 표현을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있음
- 구조가 복잡한 객체 생성를 단계별로 조립
Prototype
프로토타입
- 처음부터 일반적인 원형을 만들어, 원형을 복사한 후 필요한 부분만 수정하여 사용하는 패턴
- 기존의 원본 객체를 복제하여 새로운 객체 생성
- 객체 생성 비용 절감
Factory Method
토리 메서드
- 상위 클래스에서는 인터페이스만 정의하고, 실제 객체 생성은 하위 클래스에서 결정하여 생성
- 객체 생성 코드를 한 곳에서 관리하여 결합도를 낮춤
- 객체 생성의 확장성, 유연성 확보
Abstract Factory
스트랙트(추상) 팩토리 = Kit
- 구체적인 클래스에 의존하지 않고, 연관되거나 의존적인 객체들의 집합을 만드는 인터페이스 제공
- 서로 다른 제품군(윈도우/리눅스 UI 등) 교체 가능
Singleton
글톤
- 전역 변수를 사용하지 않고 객체를 하나만 생성하여 해당 객체를 어디서든 참조할 수 있도록 보장
- 객체 중복 생성 방지 및 자원 절약
- 유일한 인스턴스(단일 객체)

 

디자인 패턴 - 조 7 ⭐

  • 더 큰 구조 형성을 목적으로 클래스나 객체의 조합을 다루는 패턴 [✏️ 구 브데 퍼플 프록 컴 어]
구조 패턴 설명
Bridge
릿지
- 분리된 기능 클래스 계층과 구현 클래스 계층 연결
- 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장
Decorator
코레이터
- 기존에 구현된 클래스에 필요한 기능을 동적으로 추가해 나가는 설계 패턴
- 상속 대신 위임(Wrapper)으로 기능 확장
- 객체 기능을 추가·변경 시 기존 코드를 수정하지 않고, 객체의 결합으로 유연하게 확장
Facade
싸드
- 복잡한 시스템에 대해 단순한 인터페이스를 제공하여 결합도를 낮춤
- 클라이언트 내부 구조를 알 필요 없이 통합된 단일 인터페이스만 사용
Flyweight
라이웨이트
- 클래스 경량화를 목적으로 공유를 통해 객체를 효율적으로 사용하여 메모리 절약
- 공유 객체는 불변(Immutable) 객체
Proxy
프록
- 실제 객체에 대한 접근을 제어하기 위해 대리자(Proxy)를 두는 패턴
- 실제 객체에 접근하기 전에 대리 객체가 로직 수행 (메모리 절약, 정보 은닉)
- 보안, 로깅, 지연 초기화 등에 사용
Composite
포지트
- 객체들의 관계를 트리 구조로 구성하여 단일 객체와 복합 객체를 동일하게 취급하는 패턴
- 부분-전체(Part-Whole) 관계 표현
- 재귀적 구성으로 계층 구조 단순화
Adapter
댑터
- 기존에 생성된 호환되지 않는 인터페이스를 연결시켜주는 역할을 하는 인터페이스를 만드는 패턴
- 상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴의 두 가지 형태로 사용
- 인터페이스 불일치를 해결하여 인터페이스 간 재사용성을 높임

 

디자인 패턴 - 위 11 ⭐

  • 클래스나 객체들이 상호작용하는 방법과 역할 분담을 다루는 패턴 [✏️ 행 미인이 템옵 스테 비커 스트 메체]
행위 패턴 설명
Mediator
디에이터
- 객체 간 복잡한 상호작용을 중재자(Mediator) 객체가 관리하도록 하는 패턴
- 객체 간 결합도를 낮추고 ,중앙 집중식 제어
- 시스템 유지보수성 향상
Interpreter
터프리터
- 언어나 문법을 해석하기 위한 표현식을 정의하고 해석하는 패턴
- 문법 규칙을 클래스로 표현, 해석기(Interpreter)가 처리
- 문법을 캡슐화하여 사용
Iterator
터레이터 = Cursor
- 내부 구조를 노출하지 않고 객체의 요소를 반복자(Iterator)로 순차적 접근할 수 있도록 하는 패턴
- 리스트, 배열 등 다양한 집합 구조에 동일한 접근 방법 제공
- 순차 접근, 내부 구조 은폐, 통일된 인터페이스
Tmplate Method
플릿 메소드
- 상위 클래스에서 기본 구조를 정의하고 세부 단계는 하위 클래스에서 구현하도록 하는 패턴
- 일반적으로 상위 클래스에서 추상 메서드로 골격 제공, 하위 클래스에서 세부 처리 구체화 
Observer
서버
- 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가며 자동으로 내용 갱신
- 객체 상태 변화에 따라 다른 객체의 상태도 연동, 일대다(1:N) 관계
State
스테이트
- 객체 상태를 캡슐화하여 참조하게 하는 방식, 상태에 따라 행위 내용을 변경하는 패턴
- 상태 변경에 따른 조건문 분기를 없앨 수 있음
Visitor
지터
- 객체 구조에서 처리 기능을 분리하여 별도의 클래스로 정의하는 패턴
- 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만듦
- 객체 구조는 유지, 새로운 연산 추가 시 사용(기능 확장 용이), 새로운 구조 추가는 어려움.
Command
맨드
- 실행될 기능(요청)을 캡슐화하여 주어진 여러 기능을 매개 변수로 처리할 수 있게 만드는 패턴
- 하나의 추상 클래스에 메서드를 만들어두면 명령에 따른 서브 클래스가 선택되어 실행됨
- 요청, 취소, 로그, 실행, 재현 등의 작업을 쉽게 구현
Strategy
스트레이티지
- 알고리즘 군(Strategy)을 캡슐화하여 동적으로 교체하여 사용하는 패턴
- 행위 객체를 클래스로 캡슐화하여 동적으로 행위를 자유롭게 교환
- 런타임 시 알고리즘 교체 가능
Memento
멘토
- 객체 상태를 저장하고 복원할 수 있도록 하는 패턴
- Undo 기능에 사용
Chain of Responsibility
임 연쇄
- 정적으로 어떤 기능의 연결이 하드코딩되어 있을 때, 기능 처리를 동적으로 연결하여 처리
- 요청이 처리될 때까지 객체의 사슬을 따라 전달
- 순차 처리, 요청 전달, 처리 책임 분리, 사슬 구조

 

 

004 요구사항 ⭐

 

 

요구사항 분류

요구사항 분류 설명
기능적 요구사항 - 시스템이 제공하는 기능이나 서비스에 대한 요구사항
- 시스템이 무엇을 해야하는가를 정의
- 입출력, 데이터 저장, 처리, 인터페이스와 같은 구체적 동작 명세
비기능적 요구사항 - 시스템의 품질이나 제약조건에 대한 요구사항
- 시스템이 어떻게 동작해야하는가를 정의
- 성능, 보안, 신뢰성, 가용성, 유지보수성 등의 품질 속성 포함 

 

요구공학 프로세스

  • 요구사항 출: 요구사항 소스, 도출 기법
  • 요구사항 석: 요구사항 분류, 개념 모델링, 기술 구조 설계 및 요구사항 할당, 요구사항 협상
  • 요구사항 세: 시스템 정의서, 시스템 요구사항 명세서, 소프트우에어 요구사항 명세서
  • 요구사항 인 및 검증: 검토, 프로토타이핑, 모델 검증, 인수 테스트

 

요구사항

  • 요구사항을 이해하고, 고객의 추상적 요구에 대한 정보를 식별 및 수집할 방법 결정 및 요구사항 구체적으로 표현
  • 기법: 인터뷰, 브레인스토밍, 델파이 기법, 롤플레잉, 워크숍, 설문조사, 프로토타입

 

요구사항

  • 추출된 요구사항을 분석을 통해 완전성과 일관성을 확보하는 단계
  • 분석 단계 기법: 데이터 흐름도(DFD; Data Flow Diagram), 자료 사전 (DD; Data Dictionary), UML(Unified Modeling Language)

 

요구사항

  • 체계적으로 검토, 평가, 승인될 수 있는 문서 작성
요구사항 명세 설명
정형 명세기법 - 사용자의 요구를 표현할 때 자연어 기반 서술
- 사용자와 개발자의 이해 용이
- 명확성 및 검증에 문제
비정형 명세기법 - 사용자의 요구를 표현할 때 수학적 원리, 표기법으로 서술
- 정형 명세 언어인 Z-스키마, Petri Nets, 상태 차트 활용
- 표현 간결, 명확성 및 검증 용이
- 기법 어려움

 

요구사항 인 및 검증

  • 요구사항 명세서에 사용자의 요구가 올바르게 기술되었는지 검토 및 베이스라인 설정
  • 프로젝트 참여자가 요구사항을 이해했는지 확인(Validation)하고, 요구사항 문서가 프로젝트 표준에 적합한지 일관성을 만족하는지 완전한지를 검증(Verification)해야 함
  • [✏️ 동워인]
요구사항 확인 및 검증 설명
료검토
(Peer Review)
- 2~3명이 진행하는 리뷰
- 요구사항 명세서 작성자가 설명하고, 이해관계자들이 설명을 들으며 결함검토
크스루
(Work Through)
- 오류를 조기에 검출하는 게 목적인 비공식적 검토 방법
- 검토 자료를 사전에 검토한 후 짧은 시간 동안 회의를 진행하여 오류 검출 후 문서화
스펙션
(Inspection)
- 이해관계자가 아닌 다른 전문가 또는 팀이 검사하여 오류를 찾아내는 공식적 검토 방법

 

 

 

 

 

Written by 솔빵 

반응형