본문 바로가기
자격증

[5일차] 정보처리기사 실기 1장 요구사항 확인

by lovedeveloping 2024. 10. 4.
반응형

교재 참고
교재 참고

공부를 너무 띄엄띄엄하는 것 같군요.. 그래도 오늘은 했으니 정리 해보겠습니다.

소프트웨어 개발 방법론

소프트웨어 생명주기

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

순서 프로세스 설명 활동
1 요구사항 분석 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계 - 기능 요구사항
- 비기능 요구사항
2 설계 시스템 명세 단계에서 정의한 기능을 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계 -시스템 구조 설계
- 프로그램 설계
- 사용자 인터페이스 설계
3 구현 설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계 - 인터페이스 개발
- 자료 구조 개발
- 오류 처리
4 테스트 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 단계 - 단위 테스트
- 통합 테스트
- 시스템 테스트
- 인수 테스트
5 유지보수 시스템이 인수되고 설치된 후 일어나는 모든 활동 - 예방, 완전,교정, 적응, 유지보수

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

종류 설명
폭포수 모델 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
프로토타이핑 모델 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
나선형 모델 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가
반복적 모델(애자일 모델) - 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델
- 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델

소프트웨어 개발 방법론

개념

소프트웨어 개발 방법론은 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법이다.
종류 설명
구조적 방법론 - 프로세스 중심의 하향식 방법론
- 구조적 프로그래밍 표현을 위해 나씨-슈나이더만 차트 사용
정보공학 방법론 - 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
- 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
객체 지향 방법론 - "객체"라는 기본 단위로 시스템을 분석 및 설계하는 방법론
컴포넌트 기반 방법론 - 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
- 소프트웨어 재사용이 가능
애자일 방법론 - 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
제품 계열 방법론 - 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
- 임베디드 소프트웨어를 작성하는 데 유용한 방법론

애자일 방법론

애자일 방법론 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속
적응적 경량 개발 방법론이다.
종류 내용
XP - 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
- 1~3주의 반복 개발주기
XP의 5가지 가치
- 용기(Courage), 단순성(Simplicity), 의사소통(Communication), 피드백(Feedback), 존중(Respect)

XP의 12가지 기본 원리
- 짝 프로그래밍(Pair Programming), 공동 코드 소유(Collective Ownership), 지속적인 통합(Continuous Integration),
  계획 세우기(Planning Process), 작은 릴리즈(Samll Release), 메타포어(Metaphor), 간단한 디자인(Simple Design),
  테스트 기반 개발(Test, Driven Development), 리팩토링(Refactoring), 40시간 작업(40-Hour Work),
  고객 상주(On Site Customer), 코드 표준(Coding Standard)
종류 내용
스크럼 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
주요 개념
- 백로그 : 제품과 프로젝트에 대한 요구사항
- 스프린트: 2~4주의 짧은 갭라 기간으로 반복적 수행으로 개발품질 향상
- 스크럼 미팅: 매일 15분 정도 미팅으로 To-Do List 계획수립
- 스크럼 마스터: 프로젝트 리더, 스크럼 수랭 시 문제를 인지 및 해결하는 사람
- 스프린트 회고: 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록
- 번 다운 차트: 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
- JIT(Just In Time), 칸반Kanban) 보드 사용

객체 지향 분석 방법론

객체 지향 구성 요소

구성 요소 설명
클래스 - 객체 지향 프로그래밍에서 데이터를 추상화하는 단위
- 특정 객체 내에 있는 변수와 메서드를 정의하는 일종의 틀
객체 - 물리적, 추상적으로 자신과 다른 것을 식별 가능한 대상
- 객체마다 각각의 상태와 식별성을 가짐
메서드 - 클래스로부터 생성된 객체를 사용하는 방법
- 전통적 시스템의 함수 또는 프로시저에 해당하는 연산 가능
메시지 - 객체 간 상호 작용을 하기 위한 수단
- 객체에게 어떤 행위를 하도록 지시하는 방법
- 객체 간의 상호 작용은 메시지를 통해 이루어짐
인스턴스 - 객체 지향 기법에서 클래스를 통해 만든 실제의 실형 객체
- 클래스에 속한 각각의 객체
속성 - 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의

객체지향 기법

기법 설명
캡슐화 - 결합도가 낮아지고 재사용이 용이
- 정보 은닉과 관계가 깊음
- 변경 발생 시 오류의 파급 효과가 적음
상속성 상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법
다형성 - 상속 받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질
- 오버로딩: 매개변수의 유형과 개수를 다르게 하여 같은 이름의 메서드를 여러 개 가지는 기법
- 오버라이딩: 상위 클래스에서 정의한 일반 메서드의 구현을 하위 클래스에서 무시하고 재정의할 수 있는 기법
추상화 - 공통 성질을 추출하여 추상 클래스를 설정하는 기법
정보 은닉 - 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술
-모듈 사이의 독립성을 유지하는 데 도움을 준다.
관계성 연관화(Association)
- is-member-of 관계
- 클래스와 객체의 참조 및 이용 관계
- 같은 계층에 속하는 클래스들 사이의 상호 의존성을 보여주는 비계층적 관계성을 나타냄
집단화(Aggregation)
- is part of 관계, part-whole 관계
- 서로 관련 있는 여러 개의 객체를 묶어 한 개의 상위 객체를 만드는 특징이 있음
- 일반화와 달리 상위 클래스의 성질들이 하위 클래스로 상속되지는 않음
분류화(Classification)
- is-instance-of 관계
- 공통된 속성에 의해 정의된 객체 구성원들의 인스턴스
일반화(Generalization)
- is-a 관계
- 클래스들 간의 개념적인 포함 관계
특수화(Specialization)
- is-a 관계
- 상위 클래스와 특성들을 상속받으면서 하위 클래스에서 나름대로 수정을 가하고 자기 자신의 고유한 특성을 갖는 관계

객체 지향 설계 원칙(SOLID)

  1. 단일 책임의 원칙(Single Responsibility Principle)
  2. 개방 폐쇄 원칙(Open Close Principle)
  3. 리스코프 치환의 원칙(Liskov Substitution Principle)
  4. 인터페이스 분리의 원칙(Interface Segregation Principle)
  5. 의존성 역전의 원칙(Dependency Inversion Principle)

객체 지향 분석 방법론 종류

다른 것 보단 럼바우 하나만 알면 될 것 같습니다.

럼바우(Rumbaugh)
1. 객체 모델링
  - 정보 모델링이라고도 함
  - 시스템에서 요구하는 객체를 찾고 객체들 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링
2. 동적 모델링
  - 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현하는 모델링
  - 상태 다이어그램을 활용하여 표현
3. 기능 모델링
  - 프로세스들의 자료 흐름을 중심으로 처리 과정 표현 하는 모델링
  - 자료 흐름도(DFD)를 활용하여 표현

프로젝트 관리 3대 요소

요소 설명
사람 프로젝트 관리에서 가장 기본이 되는 인적 차원
문제 사용자의 입장에서 문제를 분석하여 인식함
프로세스 소프트웨어 개발에 필요한 전체적인 작업 계획 및 구조

비용산정 모형

비용산정 모형 분류

분류 설명 종류
하향식 산정방법 경험이 많은 전문가에게 비용 산정을 의뢰하거나 여러 전문가와 조정가를 통해 산정하는 방식 - 전문가 판단
- 델파이 기법
상향식 산정방법 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식 - 코드 라인 수(LoC)
- Man Month
- COCOMO 모형
- 푸트남 모형
- 기능점수(FP) 모형

중요

LOC 계산법: (낙관치 + 4*중간치 + 비관치) / 6

Man Month 계산법

1. Man Month = (LOC) / (프로그래머의 월간 생산성)

2. 프로젝트 기간 = (Man Month) / 프로젝트 인력

3. 기능점수(FP) 모형 = 총 기능점수 x [0.65 + (0.1 x총 영향도)]

COCOMO 소프트웨어 개발 유형

조직형(Organic Mode)
- 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형

반 분리형(Semi-Detached Mode)
- 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형

임베디드형(Embedded Mode)
- 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형

일정관리 모델

주 공정법(CPM): 프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로이다.
PERT
중요 연쇄 프로젝트 관리(CCPM)

현행 시스템 분석

현행 시스템 파악 절차

1단계 --> 2단계 --> 3단계
구성/기능/인터페이스 파악 아키텍쳐 및 소프트웨어 구성 파악 하드웨어 및 네트워크 구성 파악

소프트웨어 아키텍쳐

소프트에어 아키텍쳐는 여러 가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 그리고 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체이다.
설명
유스케이스 뷰 사용자, 설계자, 개발자, 테스트 관점
논리 뷰 설계자, 개발자 관점
프로세스 뷰 개발자, 시스템 통합자 관점
구현 뷰 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
배포 뷰 컴포넌트가 물리적인 아키텍쳐에 어떻게 배치되는가를 매핑해서 보여주는 뷰

소프트웨어 아키텍쳐 패턴

유형 설명
계층화 패턴 시스템 계층으로 구분하여 구성하는 패턴
클라이언트-서버 패턴 하나의 서버와 다수의 클라이언트로 구성된 패턴
파이프-필터 패턴 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 페턴
브로커 패턴 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 이 컴포넌트들은 원격 서비스 실행을 통해
상호 작용이 가능한 패턴
모델-뷰-컨트롤러 패턴 모델: 핵심 기능과 데이터 보관
뷰: 사용자에게 정보 표시(하나 이상의 뷰가 정의될 수 있음)
컨트롤러: 사용자로부터 요청을 입력받아 처리

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

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

디자인 패턴 유형

생성 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴
구조 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
행위 클래스나 객체들이 상호 작용하는 방법가 역할 분담을 다루는 패턴

디자인 패턴 종류

생성: Builder, Protype, Factory Method, Abstract Factory, Singleton

구조: Bridge, Decorator, Facade, FlyWeight, Proxy, Composite, Adapter

행위: Mediator, Interpreter, Iterator, Template Method, Observer, State, Visitor, Command, Strategy, Memento
        Chain of Responsibility
반응형