[정보처리기사] 1과목 소프트웨어 설계 - 헷갈리는 개념 정리

2022. 2. 22. 13:10정보처리기사/필기

728x90
반응형

지극히 주관적인 정리입니다. 과목 전체를 개념 정리한 것이 아닙니다.

 

상시 수정됩니다.


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 : 사용자기반모델링
-> 명세 작성이 간편하고 의사전달 방법이 다양하다.
-> 불충분한 명세가능성, 모호성.

728x90
반응형