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명 리뷰 진행, 요구사항 명세서를 설명하고 이해관계자들이 들으면서 결합을 발견하는 형태
워크스루 : 검토 자료를 회의전에 배포하여 짧은 시간동안 회의를 진행하는 형태로 리뷰
인스펙션 : 소트프웨어 요구, 설계 원시 코드 등의 저작자 외의 다른 전문가가 검사하여 오류를 찾아내는 검토방법
'공부중인것' 카테고리의 다른 글
정보처리기사 실기(7과목 SQL응용) (0) | 2022.06.16 |
---|---|
정보처리기사 실기 (5과목 인터페이스 구현) (0) | 2022.06.16 |
정보처리기사 실기 (4과목 통합 구현) (0) | 2022.06.16 |
정보처리기사 실기 (3과목 데이터 입출력 구현) (0) | 2022.06.15 |
정보처리기사 실기 (2과목 화면설계) (0) | 2022.06.15 |