-
[정보처리기사] 정처기 재수 1일차 : 요구사항 확인정보처리기사 2022. 9. 23. 13:15
소프트웨어 개발 방법론
소프트웨어 생명주기 모델
- 소프트웨어 생명주기(Software Development Life Cycle)
- 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
- 소프트웨어 생명주기 모델 프로세스
- 요구사항분석
- 설계
- 구현
- 테스트
- 유지보수
- 소프트웨어 생명주기 모델 종류
- 폭포수 모델 (선형 순차적 모델, 고전적 생명주기 모델): 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어가는 모델
- 프로토타이핑 모델 : 고객이 요구한 주요 기능을 프로토 타입으로 만들어 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
- 나선형 모델 : 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
- 반복적 모델 : 구축대상을 나누어 병렬적으로 개발 후 통합 하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델
소프트웨어 개발 방법론
- 소프트웨어 개발 방법론
- 소프트웨어 개발 전 과정에 걸쳐 적용시키는 방법, 절차, 기법이다.
- 소프트웨어 개발 방법론 종류
- 구조적 방법론
- 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론
- 프로세스 중심의 하향식 방법론
- 나씨-슈나이더만 차트
- 구조적 방법론
- 정보공학 방법론
- 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
- 객체 지향 방법론
- ‘객체’라는 기본 단위로 시스템을 분석 및 설계하는 방법론
- 컴포넌트 기반 방법론
- 소프트웨어를 구성하는 컴포넌틀를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
- 개발 기간 단축, 확장성, 재사용
- 애자일 방법론
- 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발하는 신속 적응적 경량 개발 방법론
- 제품 계열 방법론
- 특정 제품에 적용하고 싶은 공통적 기능을 정의하여 개발하는 방법론
- 임베디드 소프트웨어를 작성하는데 유용한 방법론
- 애자일
- 애자일 방법론의 유형
- XP(eXtreme Programming)
- XP의 5가지 가치
- 용기
- 단순성
- 의사소통
- 피드백
- 존중
- 12가지 원리
- 짝 프로그래밍
- 공동 코드 소유
- 지속적인 통합
- 계획 세우기
- 작은 릴리즈
- 메타 포어 : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 한다는 원리
- 간단한 디자인
- 테스트 기반 개발
- 리팩토링
- 40시간 작업
- 고객 상주
- 코드 표준
- XP의 5가지 가치
- 린
- 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 저굥해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
- JIT, 칸반 보드 사용
- JIT
- XP(eXtreme Programming)
- 애자일 방법론의 유형
- 스크럼
- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 중심 방법론
- 주요 개념
- 백로그 : 제품과 프로젝트에 대한 요구 사항
- 스프린트
- 스크럼 미팅
- 스크럼 마스터
- 스프린트 회고
- 번 다운 차트
객체 지향 분석 방법론
- 객체 지향 분석의 개념
- 사용자의 요구사항을 분석하여 요구돤 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법
- 객체 지향 분석 방법론 종류
- OOSE
- 야콥슨
- 유스케이스를 모든 모델의 근간으로 활용하는 방법론
- OMT
- 럼바우
- 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
- 객체 모델링(E-R다이어그램), 동적 모델링(상태 다이어그램), 기능 모델링(자료흐름도)
- OOD
- 부치
- 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
- 분석과 설계의 분리가 불가능
- OOSE
비용산정, 일정관리 모형
비용산정 모형
- 비용산정 모형 개념
- 소프트웨어 규모파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위한 비용을 산정하는 모형
- 비용산정 모형 분류
- 하향식 산정방법
- 경험이 많은 전문가에게 비용 산정을 의뢰하거나 여러 전문가와 조정자를 통해 산정하는 방식
- 델파이, 전문가 판단
- 상향식 산정방법
- 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식
- Loc, Man Month, COCOMO, 푸트남, 기능점수
- 하향식 산정방법
- 비용산정 모형 종류
- Loc(Line Of Code)
- $예측치 = {o+4m+p\over6}(o:낙관치, m:중간치, p:비관치)$
- Man Month 모형
- $Man Month = {(Loc)\over(프로그래머의 월간 생산성)}$
- $(프로젝트 기간)={(Man Month)\over(프로젝트인력)}$
- COCOMO
- 보헴
- 규모에 따라 유형이 나뉜다
- 유형
- 조직형 : 기관 내부에서 개발된 중 소규모의 소프트웨어
- 반 분리형 : 유틸 개발에 적합
- 임베디드형 : 초대형 규모의 트랜잭션 처리 시스템이나…
- 푸트남
- 생명주기 예측 모형
- 기능 점수 모형
- Loc(Line Of Code)
- 일정관리 모델
- 주 공정법 : 노드와 노드 간 연결
- 임계경로 : 프로젝트 시작에서 종료까지 가장 긴 시간이 걸리는 경로
- PERT : 비관치, 중간치, 낙관치
- 중요 연쇄 프로젝트 관리 : 자원제약사항을 고려하여 일정을 작성
- 주 공정법 : 노드와 노드 간 연결
현생 시스템 분석
현행 시스템 파악
- 현행 시스템 파악 절차
- 구성/인터페이스 파악→ 아키텍처 및 소프트웨어 구성 파악 → 하드웨이 및 네트워크 구성 파악
소프트웨어 아키텍처
- 소프트웨어 아키텍처 개념
- 여러 가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 그리고 구성요소 간의 관게를 표현하는 시스템의 구조나 구조체이다.
- 소프트웨어 아키텍처 프레임워크
- 소프트웨어 아키텍처 프레임워크 개념
- 아키텍처 기술 표준
- 소프트웨어 아키텍처 프레임워크 구성요소
- 아키텍처 명세서
- 이해관계자
- 관심사
- 관점
- 뷰
- 근거
- 목표
- 환경
- 시스템
- 소프트웨어 아키텍처 프레임워크 개념
- 소프트웨어 아키텍처 4+1 뷰
- 소프트웨어 아키텍처 4+1 뷰 개념
- 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법이다.
- 유스케이스를 사용한다.
- 소프트웨어 아키텍처 4+1 뷰 구성요소
- 1은 유스케이스 뷰이고, 4는 논리 뷰, 구현 뷰, 프로세스 뷰, 배포 뷰이다.
- 유스케이스 뷰 : 유스케이스 또는 아키텍처를 도출하고 설계하며, 다른 뷰를 검증하기 위해 사용한다.
- 논리 뷰 : 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
- 프로세스 뷰: 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현한 뷰
- 구현 뷰 : 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
- 배포 뷰: 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여준다.
- 소프트웨어 아키텍처 4+1 뷰 개념
- 소프트웨어 아키텍처 패턴
- 소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식
- 유형
- 계층화 패턴 : 시스템을 계층으로 구분하여 구성하는 패턴이다. 각 하위 모듈들은 특정한 수준의 추상화를 제공하고, 각 계층은 다음 상위 계층에 서비스를 제공한다. 서로 마주 보는 두개의 계층 사이에서만 작용이 이루어진다.
- 클라이언트-서버 패턴 : 하나의 서버와 다수의 클라이언트로 구성된 패턴이다.
- 파이프-필터 패턴 : 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴이다.
- 브로커 패턴
- publish: 서버가 브로커에 기능을 넘겨주는 행위
- redirection: 클라이언트가 브로커에 한 요청을 브로커가 적합한 서비스로 연결해주는 행위
- 모델-뷰-컨트롤러 패턴
- 모델: 핵심 기능과 데이터 보관
- 뷰: 사용자에게 정보 표시
- 컨트롤러: 사용자로부터 요청을 입력받아 처리
- 소프트웨어 아키텍처 비용 평가 모델
- 소프트웨어 아키텍처 비용 평가 모델 종류
- SAAM: 변경 용이성과 기능성에 집중, 평가가 용이하여 경험이 없는 조직에서도 활용 가능한 비용 평가 모델
- ATAM: 아키텍처 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상충관계까지 평가하는 모델
- CBAM: ATAM 바탕의 시스템 아키텍처 분석 중심으로 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델
- ADR: 소프트웨어 아키텍처 구성요소 간 응집도를 평가하는 모델
- ARID: 전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 비용 평가 모델
- 소프트웨어 아키텍처 비용 평가 모델 종류
디자인 패턴
- 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
- 디자인 패턴 종류
- 생성패턴
- Builder
- Prototype : 기존 객체를 복사함으로써 객체를 생성한다.
- Factory Method : 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
- Abstract Factory: 동일 주제의 다른 팩토리 묶음
- Singleton : 한 클래스에 한 객체만 존재하도록 제한
- 구조 패턴
- Bridge
- Decorator
- Facade
- Flyweight
- Proxy
- Composite
- Adapter
- ...이하 다른 글에서 정리
- 생성패턴
개발 기술 환경 정의
개발 기술 환경 현행 분석
- 운영체제의 개념 : 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스를 담당하는 프로그램(소프트웨어)
- 운영체제 종류 및 특징
- 윈도즈 : 중/소규모 서버, 일반 pc
- 유닉스 : 대용량 처리, 안정성 높은 엔터프라이즈급 서버
- 리눅스 : 중/대규모 서버 대상, 높은 보안성 제공
- 안드로이드 : 리눅스 운영체제 위에서 구동하며 개발자들이 자바, 코틀린 언어로 응용 프로그램을 작성할 수 있게 했다.
- iOS : 스마트폰, 태블릿 pc의 높은 보안성과 고성능 제공
네트워크 현행 시스템 분석
- 네트워크의 개념 : 컴퓨터 장치들의 노드 간 연결을 사용하여 서로에게 데이터를 교환할 수 있도록 하는 기술
- OSI 7계층
- 응용계층 : 사용자와 네트워크 간 응용서비스 연결, 데이터 생성 (HTTP, FTP)
- 표현 계층 : 데이터 형식 설정과 부호교환, 암/복호화 (JPEG,MPEG)
- 세션 계층 : 연결 접속 및 동기제어 (SSH, TLS)
- 전송 계층 : 신뢰성 있는 통신 보장, 데이터 분할과 재조립, 흐름제어, 오류 제어, 혼잡 제어 (TCP, UDP)
- 데이터 링크 계층 : 인접 시스템 간 데이터 전송, 전송오류 제어 (이더넷)
- 물리 계층 : 0 과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환 (RS-232C)
DBMS 현행 시스템 분석
- DBMS : 데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능을 제공하는 응용 프로그램이다.
미들웨어의 현행 시스템 분석
- 미들웨어 : 운영체제와 소프트웨어 애플리케이션 사이에 위치
- WAS : 웹 애플리케이션 서버, 서버 계층에서 애플리케이션이 동작할 수 있는 환경 제공
요구사항 확인
요구사항
요구사항 개발 단계 상세
- 요구사항 도출 단계
- 인터뷰
- 브레인 스토밍
- 델파이 : 전문가의 경험적 지식을 통한 문제 해결 및 미래 예측을 위한 방법
- 롤 플레잉 : 현실에 일어나는 장면을 설저아고 여러 사람이 각자가 맡은 역을 연기함으로써 요구사항을 분석하고 수집하는 장면
- 워크숍 : 단기간의 집중적인 로력을 통해 다양하고 전문적인 정보를 획득하고 공유하는 방법
- 설문조사
- 요구사항 명세 단계
- 비정형 명세 기법 : 자연어 기반
- 정형 명세 기법 : 수학적인 원리와 표기법 사용
- 요구사항 검토
- 정형 기술 검토 활용
- 동료 검토
- 워크 스루 : 검토 자료를 회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 회의 진행
- 인스펙션 : 전문가 또는 팀이 검사
- 정형 기술 검토 활용
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 응용 SW 기초 기술 활용 (0) 2022.10.13 [정보처리기사] 디자인패턴: FlyWeight (java) (0) 2022.10.08 [정보처리기사] 정처기 재수 3일차 : Decorator패턴 (java) (1) 2022.09.26 [정보처리기사] 정처기 재수 2일차: Bridge 패턴(java) (1) 2022.09.24 - 소프트웨어 생명주기(Software Development Life Cycle)