2022. 2. 22. 13:10ㆍ정보처리기사/필기
지극히 주관적인 정리입니다. 과목 전체를 개념 정리한 것이 아닙니다.
상시 수정됩니다.
1. XP(eXtreme Programming)
정의 : 짧은 주기 반복을 통해 요구에 신속 대응하여 고객에게 품질 좋은 소프트웨어를 빠르게 전달하는 애자일 방법론
특징 : 생산성을 높이고자 접근, 고객의 요구사항 변경에 적극 대처
용어 | 설명 |
User Story | 요구사항 수집, 의사소통, Unit에 필요한 내용 간단 기재 |
Spike | 어려운 요구 또는 솔루션을 고려한 프로그램, 스토리의 신뢰성 증대, 위험 감소 |
Release Planning | 프로젝트에 대한 배포 계획, 균일하게 유지 |
Acceptance Tests | 인수 테스트 고객이 수행 |
Samll Release | 마지막 단계, 소규모로 배포해 고객에게 이득 제공 |
XP의 Core Value
핵심 가치 | 설명 |
Courage | 요구 변경에 대한 능동 대처 |
simplicity | 부가 기능, 미사용 알고리즘과 기능 제외 |
communication | 원할환 의사소통 |
Feedback | 꾸준한 테스트와 수정 및 피드백 |
Respect | 팀원 존중 |
Xp의 Practice
Coding standars | 코드가 표준화에 따라 작성 -> 의사소통 향상 |
Planning game = Planning process | 유저 스토리르 이용해 다음 출시의 범위를 빠르게 판단, 우선수위와 평가가 합쳐짐 |
Small relases | 필요한 기능만 갖고 빠르게 출시, 짧은 주기로 새 버전 배포 |
On-site customer | 실시간 상담을 위해 계속 상주 |
40-hour week | 한 주 최대 40시간만 일하고 2주 연속 오버하지 않기 |
Metaphor | 개발 및 커뮤니케이션에서 공통 주제를 공유 |
Simple design | 단순하게 설계 |
Testing | 개발자는 단위 테스트, 고객은 기능 테스트 -> 요구사항 반영 확인 |
Continuous Integration | 하루에 몇 번이라도 시스템 통합해 빌드 |
Collective ownership | 시스템 코드는 누구라도 수정 가능 |
Refactoring | 기능 변경 X, 단순화 및 유연성, 의사소통 향상으로 재구성 |
Pair Programming | 한 컴퓨터에 두 명이서 같이 작업 |
CASE(Computer - Aided Software Engineering)
원천 기술
-> 구조적 기법
-> 프로토타이핑 기술
-> 자동 프로그래밍 기술
-> 정보 저장소 기술
-> 분산 처리 기술
소프트웨어 설계
상위 설계
-> 아키텍처 설계
-> 데이터 설계
-> 시스템 분할
-> 인터페이스 정의
-> 사용자 인터페이스 설계
하위 설계
-> 모듈 설계
-> 인터페이스 작성
UML 관계
관계 | 표시 | 설명 | |
연관 관계 Association | 실선이나 화살표 | 클래스들이 개념상 서로 연결, 한 클래스가 다른 클래스에게 제공하는 기능 | |
일반화 관계 Generalization | 속이 빈 화살표 | 상속 관계, 다른 클래스를 포함하는 상위 개념일때 IS-A라고 한다 | |
집합 관계 |
집약 관계 | 속이 빈 다이아몬드 | 클래스들 사이의 전체 또는 부분 같은 관계 전체와 부분의 라이프 타임은 독립 전체가 사라져도 부분은 사라지지 않음 |
합성 관계 | 속이 찬 다이아몬드 | 클래스들 사이의 전체 또는 부분 같은 관계 전체와 부분의 라이프 타임은 의존 전체가 사라지면 부분도 사라짐 |
|
의존 관계 Dependency | 점선 화살표 | 연관과 같이 제공하는 기능 차이는 관계가 메소드를 실행하는 동안인 매우 짧은 시간만 존재 |
|
실체화 관계 Realization | 빈 삼각형과 점선 | 인터페이스와 실형한 클래스들 사이의 관계 |
다이어그램
행위적 다이어그램
-> 유스케이스 다이어그램
-> 시퀀스 다이어그램
-> 커뮤니케이션 다이어그램
-> 상태 다이어그램
-> 활동 다이어그램
-> 상호작용 개요 다이어그램
-> 타이밍 다이어그램
배치 다이어그램은 구조적 다이어그램
애자일 소프트웨어 개발 기법의 가치
-> 공정과 도구보다 개인과 상호작용에 가치를 둔다
-> 계획을 따르기보다 변화에 더 가치를 둔다
-> 포괄적인 문서보다는 동작하는 소프트웨어에 가치를 둔다
-> 계약 협상보다 고객과의 협력을 가치로 둔다
객체 지향 분석 방법론
-> Coad & Yourdon 방법
-> Booch 방법
-> Rumbaugh 기법
그 외 설명
Rumbaugh -> 가장 일반적으로 사용되는 방법 분석 활동을 객체, 동기, 기능으로 나누어 수행 -> 객동기
Booch -> 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 방법
Jacobson -> Use Case를 강조하여 사용하는 분석 방법
Coad & Yourdon -> E-R 다이어그램을 사용해 개체의 활동들을 데이터 모델링하는데 초점을 둔 기법
Wirfs-Brock -> 분석과 설계 간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법
시스템 구성 요소
Input -> 처리 방법, 처리할 데이터, 조건을 시스템에 투입하는 것
Process -> 입력된 데이터를 처리 방법과 조건에 따라 처리하는 것
Output -> 처리된 결과를 시스템에서 산출하는 것
Control -> 자료를 입력하여 출력될 때까지 처리 과정이 올바르게 진행되는지 감독하는 것
Feedback -> 출력된 결과가 예정된 목표를 만족시키지 못할 경우 목표 달성을 위해 반복 처리하는 것
추상화
소프트웨어 설계에서 사용되는 대표 3가지 추상화
제어 추상화 -> 제어의 정확한 메커니즘을 정의하지 않고 원하는 효과를 정하는데 이용하는 방법
기능 추상화 -> 입력 자료를 출력 자료로 변환하는 과정을 추상화하는 방법
자료 추상화 -> 자료와 자료에 적용될 수 있는 기능을 함께 정의함으로써 자료 객체를 구성하는 방법
코드
코드 -> 목적에 따라 식별, 분류, 배열하기 위하여 사용되는 숫자, 문자 또는 기호로 컴퓨터 처리에 효율적인 것 선정
종류
순차 코드 -> 발생순, 크기순, 가나다순 등 일정 순서로 코드
블록 코드 (구분 코드) -> 코드화 대상을 미리 파악하여 블록으로 구분한 후 그 안에서 순서대로 부여
그룹 분류 코드 -> 구분 코드를 세분화한 형토로 대, 중, 소분류 등 각 분류별로 자릿수 구성
표의 숫자 코드 -> 표현하려는 대상의 의미는 제외하고 수치만을 모아 만든 것으로 대상이 되는 물체의 중량, 면적, 크기 등을 직접 코드에 적용
10진 코드 -> 코드화 대상을 일정한 소속으로 구분하여 십진수 한 자리씩 구분하여 대분류 후 같은 방식으로 중분류와 소분류
연상 코드 -> 숫자나 문자를 조합해 나타내는 것으로 어떤 내용을 기억할 수 있도록 표시한 코드
약자 코드 -> 일반적으로 사용해온 단위의 약자를 코드로 사용
끝자리 분류 코드 -> 다른 종류의 코드와 조합해서 사용, 코드의 끝에 붙여서 그 의미를 표현
Data Dictionary
= : 자료의 정의(~로 구성되어 있다)
+ : 자료의 연결(그리고)
() : 자료의 생략(생략 가능한 자료)
[] : 자료의 선택(또는) ex) [ A | B | C ]
{} : 자료의 반복
* * : 자료의 설명(주석)
요구 사항 명세기법
정형 명세법
->수학적 기반/모델링 기반
-> Z, VDM, Petri-Net(모형기반)
-> CSP, CCS, LOTOS(대수적방법)
-> 시스템 요구특성이 정확하고 명세가 간결하다. 명세와 구현이 일치.
-> 그러나 이해도가 낮으며 이해관계자의 작성 부담 가중.
비정형명세
-> 상태, 기능, 객체 중심 명세법
-> FSM(Finite state machine)
-> Decision Table, ER모델링
-> State chart(SADT)
-> UseCase : 사용자기반모델링
-> 명세 작성이 간편하고 의사전달 방법이 다양하다.
-> 불충분한 명세가능성, 모호성.
'정보처리기사 > 필기' 카테고리의 다른 글
[정보처리기사] 5과목 정보시스템 구축관리 - 헷갈리는 개념 정리 (0) | 2022.02.23 |
---|---|
[정보처리기사] 4과목 프로그래밍 언어 활용 - 헷갈리는 개념 정리 (0) | 2022.02.22 |
[정보처리기사] 3과목 데이터베이스 구축 - 헷갈리는 개념 정리 (0) | 2022.02.22 |
[정보처리기사] 2과목 소프트웨어 개발 - 헷갈리는 개념 정리 (0) | 2022.02.22 |