<청춘> 격정적으로 사는 것

밤을 새고 공부한 다음 날 새벽에 느꼈던 생생한 환희와 야생적인 즐거움을 잊을 수 없다

정보처리기사

[정보처리기사 실기] 정처기 실기 대비 정리 요약 / CH1.요구사항 확인

수학도 2021. 7. 2. 11:53

CH 1. 요구사항 확인

 

소프트웨어 개발방법론

  • 소프트웨어 생명주기 모델
  • 소프트웨어 개발방법론

비용산정, 일정관리 모형

  • 비용산정 모형
  • 일정관리 모형

현행 시스템 분석

  • 현행 시스템 파악
  • 소프트웨어 아키텍처
  • 디자인 패턴

개발 기술 환경 정의

  • 개발 기술 환경 현행 시스템 분석 (운영체제/ 네트워크 - OSI7계층 / DBMS/ 미들웨어)

요구사항 확인

  • 요구사항 개념
  • 요구사항 프로세스

 


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

시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차

 

소프트웨어 생명주기 모델 프로세스

1. 요구사항 분석

2. 설계

3. 구현

4. 테스트

5. 유지보수

 

소프트웨어 생명주기 모델 종류 [폭프나반]

폭포수 모델

프로토타이핑 모델

나선형 모델

반복적 모델

 

나선형 모델 절차 [계위개고]

계획 및 정의 / 위험 분석 / 개발 / 고객 평가

 

소프트웨어 개발방법론 (Software Development Methodology)

소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법

 

소프트웨어 개발방법론 종류

구조적 방법론 : 분할정복/ 하향식/ 나씨-슈나이더만 차트

정보공학 방법론 

객체지향 방법론 : 복잡한 현실세계를 사람이 이해하는 방식으로 시스템에 적용

컴포넌트 기반 방법론 : 생산성/ 확장성/ 재사용성

애자일 방법론 

제품 계열 방법론 

 

컴포넌트 (Component) : 원하는 데이터베이스와 소프트웨어의 개발된 모듈 단위

 

애자일

절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론

개발 기간이 짧고 신속하며, 폭포수 모형에 대비되는 방법론

유형 : XP, 린(Lean), 스크럼(SCRUM)

 

XP (eXtreme Programming)

의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론

5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존중

12가지 가치 : 짝 프로그래밍, 지속적인 통합(CI), 메타포어, 테스트 기반 개발(TDD), 리팩토링, 공동 코드 소유, 계획 세우기, 작은 릴리즈, 간단한 디자인, 40시간 작업, 고객 상주, 코드 표준

 

스크럼 (SCRUM)

매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론

 


 

비용산정 모형

1. 하향식 산정방법

전문가 판단

델파이 기법

2. 상향식 산정방법

코드 라인 수 (Loc)

Man Month (노력)

COCOMO 모형 : 보헴 / 조직형, 반 분리형, 임베디드형

푸트남 모형

기능점수(FP ; Function Point) 모형

 

일정관리 모델

프로젝트가 일정 기한 내에 적절하게 완료 될 수 있도록 관리하는 모델

종류

주 공정법 (CPM ; Critical Path Method 임계경로법) : 가장 오랜 기간

PERT : 비관치/ 중간치/ 낙관치

중요 연쇄 프로젝트 관리 (CCPM)

 


 

현행 시스템 파악

개념

현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 제공 기능 및 연계 정보는 무엇이며 어떤 기술 요소를 사용하는지를 파악하는 활동

절차

1단계 구성/ 기능/ 인터페이스 파악

2단계 아키텍처 및 소프트웨어 구성 파악

3단계 하드웨어 및 네트워크 구성 파악

 

IP (Internet Protocol) : 인터넷 프로토콜 / 패킷 송수신 순서가 다를 수 있음

TCP (Transmission Control Protocol) : 전송 제어 프로토콜 / IP 위에서 동작 / 데이터 송수신 순서가 같음

X.25 : 패킷 교환망에서 회선 종단 장치와 단말 장치 사이에 이루어지는 상호작용을 규정한 프로토콜

 

IPS (Intrusion Prevention System, 침입 차단 시스템) : 네트워크에 대한 공격을 차단하는 시스템

 

 

소프트웨어 아키텍처

소프트웨어 구성요소의 특성, 구성요소 간의 관계를 표현하는 시스템의 구조(체)

 

소프트웨어 아키텍처 프레임워크 구성요소

아키텍처 명세서, 이해관계자, 관심사, 관점, 뷰, 근거, 목표, 환경, 시스템

 

소프트웨어 아키텍처 4+1 뷰 [유논프구배]

고객의 요구사항을 정리해놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법

4+1에서 1은 유스케이스 뷰이고 4는 논리 뷰, 구현 뷰, 프로세스 뷰, 배포 뷰

 

유스케이스(Usecase) : 시스템이 액터에게 제공해야 하는 기능/시스템 요구사항/ 사용자 입장에서 바라본 시스템의 기능

프로세스(Process) : 운영체제가 관리하는 실행단위/ 프로세서에 의해 처리되는 PCB를 가진 시스템 프로그램

 

소프트웨어 아키텍처 패턴

소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식, 재사용 가능한 솔루션

유형

계층화 패턴

클라이언트-서버 패턴

파이프-필터 패턴

브로커 패턴

모델-뷰-컨트롤러 패턴

 

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

아키텍처의 적합성을 평가하는 모델

종류 [SACAA(사카)]

SAAM (Software Architecture Analysis Method)

ATAM

CBAM

ADR

ARID

 

디자인 패턴

소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴

 

디자인 패턴 구성요소 [패문솔 사결샘]

패턴 이름

문제

솔루션

사례

결과

샘플 코드

유형

 

디자인 패턴 유형 [생구행]

생성 : 객체 생성

구조 : 객체 조합

행위 : 객체 상호작용

 

디자인 패턴 종류

생성 [생빌 프로 팩앱싱]

빌더 (Builder)

프로토타입 (Prototype)

팩토리 메서드 (Factory Method) : 오버로딩(상위클래스 인터페이스 정의, 하위클래스 인스턴스 생성)

앱스트랙 팩토리 (Abstract Factory) : API / Concrete Product

싱클톤 (Singleton)

 

구조 [구 브데 퍼플 프록 컴 어]

브리지 (Bridge)

데코레이터 (Decorator)

퍼사이드 (Facade) : 통합 인터페이스 제공

플라이 웨이트 (Flyweight) : 클래스의 경량화

프록시 (Proxy) : 실제 객체에 대한 대리 객체

컴포지트 (Composite) : 트리 구조(부분-전체)

어댑터 (Adapter) 

 

행위 [행 미인이 템옵 스테 비커 스트 메채]

미디에이터 (Mediator) : 중재자

인터프리터 (Interpreter) : 언어 구문 해석

이터레이터 (Iterator) : 순차적 접근

템플릿 메서드 (Template Method) 

옵져버 (Observer)

스테이트 (State) : 상태

비지터 (Visitor) : 돌아다님

커맨드 (Command) : 명령

스트레티지 (Strategy) : 알고리즘

메멘토 (Memento) : 작업취소(Undo)

체인 오브 리스판서빌리티 (Chain of Responsibility)

 

현행 시스템 분석 산춘물 종류 [현기인 아소하네]

정보시스템 구성 현황

정보시스템 기능 구성도

인터페이스 현황

현행시스템 아키텍처 구성도

소프트웨어 구성도

하드웨어 구성도

네트워크 구성도

 

인터페이스(Interface) : 관련이 없는 것들이 서로 연결되기 위한 디바이스나 시스템

프레임워크(Framework) : 소프트웨어의 설계와 구현을 재사용이 가능하게끔 클래스들을 제공하는 틀

프로토콜(Protocol) : 서로 다른 시스템에 있는 두개체 간의 데이터 교환을 원활히 하기 위한 일련의 통신규약


개발 기술 환경 현행 시스템 분석

 

운영체제 (OS ; Operating System) : 컴퓨터 시스템이 제공하는 모든 하드웨어, 소프트웨어를 사용할 수 있도록 해주고, 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스를 담당하는 프로그램

 

운영체제 현행 시스템 분석 시 고려 사항

관점 고려 사항
품질 측면 신뢰도
성능
지원 측면 기술 지원
주변 기기
구축 비용

 

배치 작업(Batch Job) : 실시간 작업의 반대 개념/ 일련의 작업을 하나의 작업 단위로 묶어서 일괄로 처리하는 작업

 

운영체제 종류 및 특징

구분 종류
PC 윈도즈(Windows)
유닉스(UNIX)
리눅스(Linux)
모바일 안드로이드(Android)
iOS

 

 

네트워크(Network) : 컴퓨터 장치들의 노드 간 연결(데이터 링크)을 사용하여 서로에게 데이터를 교환할 수 있도록 하는 기술

 

OSI 7계층(Layer) [아파서 티내다, 피나다]

네트워크 기본 모델 / 네트워크 통신에서 생긴 여러가지 충돌 문제를 완화하기 위함

 

응용계층 (Application Layer, 7) : HTTP, FTP

표현계층 (Presentation Layer, 6) : JPEG, MPEG

세션계층 (Session Layer, 5) : SSH, TLS

전송계층 (Transport Layer, 4) : TCP, UDP

네트워크 계층 (Network Layer, 3) : IP, ICMP

데이터 링크 계층 (Data Link Layer, 2) : 이더넷

물리계층 (Physical Layer, 1) : RS-232C

 

네트워크 현행 시스템 분석 장비

백본망(Backbone Network) : 다양한 네트워크를 상호 연결하는 컴퓨터 네트워크의 일부/ 각기 다른 LAN이나 부분망 간에 정보를 교환하기 위한 경로를 제공

라우터(Router) : OSI 3계층에서 사용하는 네트워크 장비 / 최적경로를 설정하여 트래픽을 전달

스위치(Switch) : OSI 2계층 장비 / 동일 네트워크 내에서 출발지에 들어온 데이터 프레임을 목적지 MAC 주소 기반으로 빠르게 전달

게이트웨이(Gateway) : 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 장비

방화벽(Firewall) : 외부로부터 불법침입과 내부의 불법정보유출을 방지/ 내외부 네트워크의 상호간 영향을 차단하기 위한 보안시스템

 

 

DBMS (Database Management System) 현행 시스템 분석 시 고려사항 [가성호기구]

가용성

성능

상호 호환성 : JDBC, ODBC

기술 지원

구축 비용

 

JDBC (Java Database Connectivity) : 자바에서 DB를 사용할 수 있도록 연결해주는 응용 프로그램 인터페이스

ODBC (Open Database Connectivity) : DB를 액세스하기 위한 표준 개방형 응용 프로그램 인터페이스

 

CLI (Command Line Interface) : 명령어를 텍스트로 입력하여 조작하는 사용자 인터페이스

GUI (Graphical User Interface) : 그래픽 환경을 기반으로 한 마우스나 전자펜을 이용하는 사용자 인터페이스

 

 

미들웨어 (Middleware) : 분산 컴퓨팅 환경에서 응용 프로그램과 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있도록 제어해주는 소프트웨어 / 운영체제와 소프트웨어 애플리케이션 사이에 위치

 

웹 애플리케이션 서버 (WAS ; Web Application Server) : 대표적인 미들웨어

 

미들웨어의 현행 시스템 분석 시 고려사항

가용성

성능 : 가비지 컬렉션

기술 지원 : 오픈 소스

구축 비용 : 총 소유 비용

 

가비지 컬렉션 (GC ; Garbage Collection) : 메모리 관리 기법/ 필요 없게 된 메모리 영역을 해제하는 기능

오픈소스 (Open Source) : 원시 소스 코드를 누구나 열람, 사용할 수 있도록 한 소프트웨어

총 소유 비용 (TCO ; Total Cost of Ownership) : 직접비용 + 숨겨진 비용까지 파악하는 기법

 

 

오픈소스 사용시 고려사항

라이선스의 종류

사용자 수

기술의 지속가능성

 


 

요구공학 (Requirements Engineering)

사용자의 요구가 반영된 시스템을 개발하기 위하여 사용자 요구사항에 대한 도출, 분석, 명세, 확인 및 검증하는 구조화 된 활동

 

요구사항의 분류

① 기능적 요구사항 : 기능성, 완전성, 일관성

② 비기능적 요구사항 : 신뢰성, 사용성, 효율성, 유지보수성, 이식성, 보안성 및 품질 관련 요구사항, 제약사항

 

요구공학 프로세스

1. 요구사항 개발 단계 (도분명확)

2. 요구사항 관리 단계

 

1. 요구사항 개발 단계 구성 (CMM Level 3 프로세스 영역) [도분명확]

1-1. 도출 (Elicitation)  

1-2. 분석 (Analysis) 

1-3. 명세 (Specification) 

1-4. 확인 및 검증 (Validation & Verification) 

 

 

1-1. 요구사항 도출 단계 주요 기법

인터뷰/ 브레인스토밍/ 델파이 기법/ 롤 플레잉/ 워크숍/ 설문 조사

 

1-2. 요구사항 분석 단계 

추출된 요구사항에 대해 충돌, 중복, 누락 등의 분석을 통해 완전성과 일관성을 확보하는 단계

절차

요구사항 분류 : 요구사항이 기능인지 비기능인지

개념 모델링 생성 및 분석 : 유스케이스 다이어그램, 데이터 흐름 모델, 상태 모델 등 / UML

요구사항 할당 

요구사항 협상

정형 분석 : 형식적으로 정의된 의미를 지닌 언어 / 구문과 의미를 갖는 정형화된 언어를 사용하여 수학적 기호로 표현

 

데이터 흐름도 (DFD ; Data Flow Diagram) : 데이터가 각 프로세스를 따라 흐르면서 변환되는 모습을 나타낸 그림

자료 사전 (DD ; Data Dictionary) : 자료 요소, 자료 요소들의 집합, 자료의 흐름, 자료 저장소의 의미와 그들 간의 관계, 관계 값, 범위, 단위들을 구체적으로 명시하는 사전

UML (Unified Modeling Language) : 객체지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 시 사용되는 모델링 기술과 방법론을 통합해 만든 표준화된 범용 모델링 언어

 

1-3. 요구사항 명세 단계

주요기법

비정형 명세 기법 : 자연어 기반 서술

정형 명세 기법 : 수학적 원리, 표기법으로 서술 / 정형 명세 언어 Z-스키마, Petri Nets, 상태차트

 

산출물

요구사항 명세서 (Requirement Specification ; 요구사항 정의서)

 

요구사항 명세 원리 및 검증 항목 [명완검 일수 추개]

명확성 : 하나의 의미

완전성

검증 가능성

일관성

수정 용이성

추적 가능성

개발 후 이용성

 

1-4. 요구사항 확인 및 검증 단계

정형 기술 검토 [동워인]

동료검토 : 2-3명 / 요구사항 명세서 작성자가 설명

워크 스루 : 검토 자료를 회의 전 배포해서 사전검토한 후 짧은 시간동안 회의 진행

인스펙션 : 저작자 외의 다른 전문가 또는 팀이 검사

 

상세 정형 기술 검토 기법 [관기 인워감]

관리 리뷰 

기술 리뷰

인스펙션

워크 스루

감사

 

2. 요구사항 관리 단계 (CMM Level 2 프로세스 영역)

프로젝트 진행 과정에서 발생하는 요구사항의 변경에 대해 일치성과 무결성을 제공하기 위해 변경제어와 추적 등 일련의 관리를 수행하는 활동

 

형상 관리 : 소프트웨어 생명주기 동안 발생하는 변경사항을 체계적으로 관리하여 소프트웨어의 품질보증을 향상시키는 관리적 활동

형상통제위원회 (CCB ; Configuration Control Board) : 형상관리에 대한 주요 방침을 정하고 산출물을 검토하는 조직

상호 운용성 : 다른 목적을 지닌 2개 이상 시스템들이 상호 간 정보 및 서비스를 교환하면서 효과적으로 운용될 수 있는 시스템의 능력

 


워드 / PDF 다운

CH 1.docx
0.03MB
CH 1.pdf
0.29MB