본문 바로가기

공부중인것

정보처리기사 실기 준비 1과목(소프트웨어 개발 방법론)

Chater1. 소프트웨어 개발 방법론

 

1. 소프트웨어의 생명주기 : 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차

 

2. 소프트웨어 생명주기 모델 종류

종류 설명
폭포수모델 가장오래된모델 / 소프트웨어 개발시 각 단계를 확실히 마무리 지은후 다음단계로 넘어가는 모델
프로토타이핑 고객이 요구한 주요 기능을 먼저 개발하고 피드백을 받는 모델
나선형 시스템 개발 시 위험을 최소화 하기 위한 점진적 개발 시스템
반복적 제품 일부분을 반복적으로 개발하여 최종 시스템을 완성

 

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

종류 설명
구조적방법론 프로세스 중심 하향식 방법론 / 나씨 슈나이터만 차트 사용
정보공학 방법론 개발주기를 이용해 대형 프로젝트 수행하는 체계적인 방법
객체지향 방법론 복잡한 현실세계를 사람이 이해하는 방식 / 객체, 클래스, 메시지 사용
컴포넌트기반  개발 기간 단축으로 생산성을 향상 / 새로운 기능 추가가 쉽다
애자일 절차보다 사람이 중심이 되어 유연하고 신속하게 개발
제품계열 임베디드 소프트웨어 작성하는데 유용한 방법론 / 영역 공학과 응용 공학으로 구분

 

4. TDD(Test Driven Development)

작성해야하는 프로그램에 대한 테스트를 먼저 수행하고 테스트를 통과하기 위한 프로그램 코드 작성

 

5. 애자일방법론의 유형

종류 설명
XP 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법
1~3주 개발 주기를 가진다
스크럼 매일 정해진 시간 장소에서 짧은 시간의 개발을 위한 팀을 위한 프로젝트 관리 중심
백로그 제품과 프로젝트에 대한 요구사항
스프린트 2~4주 짧은 개발 기간 반복으로 품질 향상
스크럼팬미팅 매일 15분 정도 미팅시간을 가져 To-Do list 작성
스크럼마스터 프로젝트 리더
스프린트 회고 스프린트가 끝난 시점이나 일정 주기 실행
번다운 차트 백로그 대비 시간을 그래픽적으로 표현한 차트
도요타의 린 시스템 품질기법 적용 / JIT, 칸반 보드 사용

 

6. 비용산정 모델

산정방법 종류 설명
하향식 델파이기법 전문가의 경험과 지식을 통한 문제 해결
상향식 LOC 원시 코드라인수의 낙관치 / 중관치 / 비관치 측정
Man Month 한 사람이 1개월 동안 할 수 있는 일의양 기준
COCOMO 보헴이 제안한 모형으로 프로그램 규모에 따라 규정
Putnam 소프트웨어 개발주기의 단계별로 요구할 인력 분포 가정
기능점수(FP) 요구 기능을 증가시키는 인자에 가중치를 부여 & 합산

 

7. 비용산정 자동화 추정 도구

종류 설명
SLIM Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 자동화 추정도구
ESTIMACS 다양한 프로젝트와 개인별 요소를 수용하도록 FP모형을 기초로 하여 개발된 자동화 추정 도구

 

8. 일정관리 모델 종류

종류 설명
CPM 여러 작업의 수행 순서가 얽혀 있는 프로젝트 일정을 계산하는 기법
임계경로(Critical Path) : 프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로
PERT 일의 순서를 계획적으로 정리하기 위한 수렴기법 비관치/중간치/낙관치 3점 추점 방식을 사용
CCPM 주 공정 연쇄법으로 자원제약사항을 고려하여 일정 작성

 

 

Chater2. 현행 시스템 분석

 

1. 소트트웨어 아키텍처

외부에 드러나는 특성, 구성요소 간의 관례를 표현한 시스템 구조체

 

2. 현행시스템 파악 절차

구성/기능/인터페이스 파악  →  아키텍처 및 소프트웨어 구성 파악  → 하드웨어 및 네트워크 구성 파악

 

3. 소프트웨어 아키텍츠 4+1 뷰  (유.논.프.구.배)

설명 관점
유스케이스 유스크에스 또는 아키텍처를 도출하고 설계하여 다른뷰를 검증하는데 사용 사용자,설계자,개발자,테스트 관점
논리 시스템의 기능적인 요구사항이 어떡해 제공되는지 설명 설계자, 개발자 관점
프로세스 시스템의 비기능적인 속성으로 자원의 효율적인 사용, 병행 실행, 비동기 이벤트처리 등을 표현한 뷰 개발자, 시스템 통합자 관점
구현 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰,
컴포넌트 구조와 의존성을 보여주고 부가적인 정보 정의
배포 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰

 

4. 소프트웨어 아키텍처 패턴

유형 설명
계층화 패턴 시스템을 계층으로 구분하여 구성하는 패턴
클라이언트 서버 하나의 서버와 다수의 클러이언트로 구성
파이프 필터 데이터 스트림을 생성하고 처리하는 시스템, 재사용성이 좋고 추가가 쉬워 확장 용이
브로커 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용, 각 컴포넌트 원격서비스 실행을 통해 상호작용 
가능
MVC  Model(핵심 기능과 데이터 보관) / View (사용자에게 정보 표시) / Controller (사용자로부터 요청을 받아 처리) 3개의 서브 시스템 구조로 이루어짐

 

5. 소프트웨어 비용 평가 모델 종류

종류 설명
SAAM 변경 용이성과 기능성에 집중, 경험이 없는 조직에서도 활용 가능 비용평가 모델
ATAM 아키텍처 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상층관계까지 평가하는 모델
CBAM ATAM 바탕의 시스템으로 경제적 의사결정에 대한 요구를 충족하는 평가 모델
ADR 소프트웨어 아키텍처 구성요소간 응집도 평가 모델
ARID 전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하여 비용 평가 모델

 

6. 디자인 패턴

구분 유형 설명
목적 생성 객체의 인스턴스 생성에 관여, 클래스 정의와 객체 생성방식을 구조화, 캡슐화
구조 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
행위 클래스나 객체들이 상호 작용하는 방법과 역할 분담을 다루는 패턴
범위 클래스 상속 관계를 다루는 패턴, 컴파일 타임에 정적으로 결정
객체 객체간 관련성을 다루는 패턴, 런타임에 동적으로 결정

 

7. 디자인 패턴의 종류

패턴 종류 설명
생성 패턴 Builder 복잡한 인스턴스를 조립해서 만드는 구조, 생성과 표기를 분리해서 복잡한 객체 생성
Prototype 기존 객체를 복제함으로써 객체를 생성
Factory Method 상위클래스 객체를 생성하는 인터페이스 정의 / 하위클래스에 인스턴스 생성
Abstract Factory 사용자에게 인터페이스(API)제공, 동일한 주제의 다른 팩토리를 묶음
Singleton 전연 변수 사용하지 않고 객채를 하나만 생성 / 한 클래스에 한 객체만 존재
구조 패턴 Bridege 구현 뿐만아니라 추상화된 부분까지 변경하는 경우 활용
Decorator 객체의 결합을 통해 기능을 동적으로 유연하게 확장
Facade 통합된 인터페이스 제공
Flyweight 여러게의 가상 인터페이스를 제공하여 메모리 절감
Proxy 특정 개채로의 접근을 제어하기 위한 용도
Composite 복합 객체와 단을 동일하게 취급
Adapter 호환 되지 않는 타 클래스와 함께 사용할 수 있도록 기존 인터페이스를 덧씌움
행위 패턴 Mediator 중재자를 두어 통신빈도수를 줄여 객체 지히향 목표 달성 / 상호작용의 유용한 변경
Interpreter 여러형태의 언어 구문을 해석할수있게 만듬 / 문법 캡슐화
Iterator 내부구조 유출하지 않고, 복합객체의 원소를 순차적으로 접근 가능
Template Method 코드 양을 줄이고 유지보수를 용이하게 만듬 / 상위 구조를 안바꾸면서 서브 클래스로 작업을 수행
Observer 상호작용하는 객체 사이에서 느슨하게 결합 / 일대다 의존
State 원시 코드 수정 최소화, 유지보수 편의성, 객체 상태에 따라 행위 내용 변경
Visitor 객체 구조 변경하지 않고 기능만 따로 추가 & 확장
Command 재사용성이 높은 클래스를 설계하는 패턴 / 요구사항을 객체로 캡슐화
Strategy 행위클래스로 캡슐화 하여 동적으로 행위를 자유롭게 변환
Memento 객체를 이전 상태로 복구 시켜야 하는 경우 작업취소(Undo) 요청 가능
Chain of Responsibility 한 요청을 2개이상의 객체에서 처리

 

8. 운영체제 종류 및 특징

구분 종류 설명
PC 윈도즈(Windows) 마이크로소프트에서 개발, 중/소규모 서버, 일반 PC에서 사용
유닉스(Unix) IBM,HP,SUN에서 개발, 대용량 처리, 안정성 높은 엔터프라이즈급 서버에 사용
리눅스(linux) 중/대규모 서버 대상, 높은 보안성 제공
모바일 안드로이드 구글에서 개발, 리눅스 운영체제 기반, 자바 코틀린 언어 사용
ISO 애플에서 개발, 스마트폰, 태블릿PC 에 사용되며 높은 보안성 제공

 

9. OSI Layer 7계층

계층 설명 프로토콜 전송단위
응용 응용서비스 연결, 데이터 생성 Http,FTP 데이터
표현 데이터 형식 설정 부호교환, 암/복호화 JPEG,MPEG
세션 연결 접속 및 동기제어 SSH,TLS
전송 흐름제어,오류제어,혼잡제어 TCP/UDP 세그먼트
네트워크 최적화된 경로 제공 IP/ICMP 패킷
데이터링크 전송,전송오류제어,동기화,흐름제어 이더넷 프레임
물리 0과 1 비트정보를 회선에 보내기위한 전기적 
신호 변환
RS-232C 비트

 

10. DBMS(DataBase Management System)

데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능을 제공하는 으용프로그램

 

11. 네트워크 현행 시스템 분석

백봉망,라우터,스위치,게이트웨이,방화벽 대상으로 분석

 

12. JDBC

JAVA 언어를 이용하여 DB에 접근하는 인터페이스

 

13. 미들웨어의 종류

종류 설명
DB 데이터베이스 벤더에서 제공하는 클라이언트와 원격의 데이터베이스와 연결하기 위한 미들웨어
RPC 원격 프로시저를 마치 로컬 프로시저처럼 호출
MOM 메시지 기반 비동기형 메시지 전달
TP-Monitor 항공 철도 예약시 트랜잭션 처리 및 감시 역할
ORB 객체지향 미들웨어 코바 표준 스펙 구현
WAS 사용자의 컨텐츠를 처리하기위한 미들웨어 (Tomcat,jboss,jetty,jeus)

 

Chater3. 요구사항 확인

 

1. 요구공학

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

 

2. 요구사항의 분류

요구사항 설명 특성
기능적 요구사항 시스템이 제공하는 기능, 서비스에 대한 요구사항
특정 입력/상황에 대해 시스템이 어떻게 반응/동작해야
하는지 기술
기능성,완전성,일관성
비기능적 요구사항 시스템 구축에 대한 제약사항에 관한 요구사항
품질 속성에 관련하여 시스템이 갖춰야할 관한 기술, 시스템이 준수해야할 제한 조건에 대한 기술
신뢰성,사용성,효율성,유지보수성,이식성,보안성 및 품질관련 요구사항, 제약사항

 

3. 요구사항 개발 프로세스

순서 설명
도출 요구사항 식별, 인터뷰, 브레인스토밍, 리서치, 워크숍
분석 요구사항분류, 개념 모델링, 요구사항 협상, 요구사항 할당, 정형 분석
명세 문서화, 시스템요구사항 명세서, 시스템 정의서
확인 요구사항 검토, 프로토타이핑, 모델검증, 인수테스트

 

4. 개념 모델링

요구사항 분석의 핵심으로 요구사항을 단순화하여 개념적으로 표현한것

 

5. UML

개발자들이 효율적으로 의사소통을 하기 위해 만들어진 표준 통합 모델링 언어

 

6.정형분석

구문과 의미를 갖는 정형화된 언어를 수학적 기호로 표현하여 분석

 

7. 모델검증

분석단계에서 개발된 모델의 품질 검증 필요

 

8. 인수테스트

사용자의 입장에서 알파테스트 / 베타테스트 존재

 

10. 정형기술 검토 활용

동료검토 : 2~3명 리뷰 진행, 요구사항 명세서를 설명하고 이해관계자들이 들으면서 결합을 발견하는 형태

워크스루 : 검토 자료를 회의전에 배포하여 짧은 시간동안 회의를 진행하는 형태로 리뷰

인스펙션 : 소트프웨어 요구, 설계 원시 코드 등의 저작자 외의 다른 전문가가 검사하여 오류를 찾아내는 검토방법