Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CustomCode
- JSONParser
- JSONSerialization
- RealmSwift
- Xcode
- UITableView
- 정보처리기사 실기
- cocoapods
- programmers
- JSON
- 정보처리기사 실기 요약본
- 위클리챌린지
- storybaord
- dynamic height
- swift
- pbxfilesystemsynchronizedrootgroup
- 티스토리챌린지
- 프로그래머스
- 정보처리기사
- IOS
- 2018 KAKAO BLIND RECRUITMENT
- Pod
- PageViewController
- Decodable
- issecuretextentry
- parse
- Codable
- pbxgroup
- SwiftGen
- Custom PageViewController
Archives
- Today
- Total
iOS 개발일기
[정보처리기사 실기] 01. 요구사항 확인 본문
소프트웨어 생명주기 모델(SDLC; Swoftware Development Life Cycle)
- 소프트웨어 생명주기 : 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
- 단계 : 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
- 종류 :
- 폭포수 모델(Waterfall Model, 고전적 생명주기 모델)
- 소프트웨어 공학에서 가장 오래되고 가장 폭넓게 사용된 전통적인 소프트웨어 생명 주기 모형
- 소프트웨어 개발 과정의 한 단계가 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모형
- 단계 : 타당성 검토 → 계획 → 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
- 프로토타이핑 모델(Prototyping Model)
- 고객이 요구한 주요 기능을 프로토타입으로 구현, 고객의 피드백을 반영하여 소프트웨어 개발
- 나선형 모델(Spiral Model)
- 보헴(Bohem)이 제안한 것으로 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형
- 단계(반복) : 계획 및 정의 → 위험 분석 → 개발 및 검증 → 고객 평가
- 반복적 모델(Interation Model)
- 구축 대상을 나누어 병렬적, 반복적으로 개발 후 통합하여 소프트웨어 개발
- 폭포수 모델(Waterfall Model, 고전적 생명주기 모델)
소프트웨어 개발 방법론(Software Development Methodology)
- 소프트웨어 개발 전 과정에서 지속적으로 적용할 수 있는 방법, 절차, 기법
- 소프트웨어 하나를 하나의 생명체로 간주하고 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론
- 종류 :
- 구조적 방법론(Structured Development)
- 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론
- 구조적 프로그래밍 표현을 위해 나씨-슈나이더만(Nassi-Shneiderman) 차트 사용
- 프로세스 중심의 하향식 방법론
- 정보공학 방법론(Information Engineering Development)
- 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
- 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
- 객체지향 방법론(Object-Orinted Development)
- '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론
- 객체, 클래스, 메시지 사용
- 컴포넌트 기반 방법론(CBD; Component Based Development)
- 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
- 개발 기간 단축으로 인한 생산성 향상
- 소프트웨어 재사용 및 새로운 기능 추가 용이(확장성)
- 애자일 방법론(Agile Development)
- 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 개량 개발 방법론
- 개발 기간이 짧고 신속하며, 폭포수 모형에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아 유동적으로 개발
- 유형 :
- XP(eXtreme Programming)
- 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
- 5가지 가치 :
- 용기(Courage)
- 단순성(Simplicity)
- 의사소통(Communication)
- 피드백(Feedback)
- 존중(Respect)
- 12가지 원리
- 짝 프로그래밍(Pair Programming)
- 공동 코드 소유(Collective Ownership)
- 지속적인 통합(CI; Continuous Intergration)
- 계획 세우기(Planning Process)
- 작은 릴리즈(Small Release)
- 메타포어(Metaphor)
- 간단한 디자인(Simple Design)
- 테스트 기반 개발(TDD; Test Driven Develop)
- 리팩토링(Refactoring)
- 40시간 작업(40-Hour Work)
- 고객 상주(On Site Customer)
- 코드 표준(Coding Standard)
- 스크럼(Scrum)
- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
- 백로그(Backlog) : 제품과 프로젝트에 대한 요구사항
- 스프린트(Sprint) : 2 ~ 4주의 짧은 개발 기간의 반복적 수행으로 개발품질 향상
- 스크럼 미팅(Scrum Meeting) :
- 매일 15분 정도 미팅으로 To-Do List 계획 수립
- 데일리 미팅(Daily Meeting)이라고도 함
- 스크럼 마스터(Scrum Master) : 프로젝터 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람
- 스프린트 회고(Sprint Retrospective) :
- 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록
- 해당 스프린트가 끝난 시점이나 일정 주기로 시행
- 번 다운 차트(Burn Down Chart) :
- 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
- 백로그는 보통 수직축에 위치하며 시간을 수평축에 위치
- 린(LEAN)
- 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
- JIT(Just In Time), 칸반(Kanban) 보드 사용
- 7가지 원칙 : 낭비 제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화
- XP(eXtreme Programming)
- 구조적 방법론(Structured Development)
객체 지향 분석 방법론(OAA; Object Oriented Analysis)
- 객체 지향 분석 : 사용자의 요구사항을 분석하여 요구된 문제와 관련된 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법
- 종류 :
- OOSE(Object Oriented Software Engineering) : 야콥슨(Jacobson)
- 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용되는 방법론
- 분석, 설계, 구현 단계로 구성되며 기능적 요구사항 중심의 시스템
- OMT(Object Modeling Technology) : 럼바우(Rumbaugh)
- 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
- 분석 절차 : 객체 모델링 → 동적 모델링 → 기능 모델링
- 객체 모델링(Object Modeling)
- 정보 모델링(Information Modeling)
- 시스템에서 요구하는 객체를 갖고 객체들 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링
- 객체 다이어그램을 활용하여 표현
- 동적 모델링(Dynamic Modeling)
- 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현
- 상태 다이어그램을 활용하여 표현
- 기능 모델링(Functional Modeling)
- 프로세스의 자료 흐름을 중심으로 처리 과정을 표현하는 모델링
- 자료 흐름도(DFD; Data Flow Diagram)를 활용하여 표현
- 객체 모델링(Object Modeling)
- OOD(Object Oriented Design) : 부치(Booch)
- 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
- 분석과 설계의 분리가 불가능
- OOSE(Object Oriented Software Engineering) : 야콥슨(Jacobson)
비용 산정 모형
- 소프트웨어 규모 파악을 통한 투입자원, 소요 시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식
- 분류 :
- 하향식 산정 방법 : 전문가 판단, 델파이 기법
- 상향식 상정 방법 :
- 코드 라인 수(LoC; Lines of Code)
- 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측지를 구하고 이를 이용하여 비용을 산정하는 방식
- 측정이 쉽고 이해하기 쉬워 많이 사용
- Man Month
- 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식
- COCOMO(COnstructive COst MOdel)
- 보헴(Bohem)이 제안한 모형으로, 프로그램 규모에 따라 비용을 산정하는 방식
- 비용산정 결과는 프로젝트를 완성하는 데 필요한 노력(Man-Month)으로 산정
- 유형은 규모에 따라 조직형, 반 분리형, 임베디드형으로 나뉜다.
- 유형 :
- 조직형(Organic Mode)
- 5만(50KDSI) 라인 이하
- 기관 내부에서 개발된 중소규모의 소프트웨어
- 일괄 자료 처리, 과학 기술 계산용, 비즈니스 자료 처리 개발에 적용
- 반 분리형(Semi-Detached Mode)
- 30만(300KDSI) 라인 이하
- 단순형과 임베디드의 중간형
- 트랜잭션 처리 시스템, 데이터베이스 관리 시스템, 컴파일러, 인터프리터와 같은 유틸 개발에 적용
- 임베디드형(Embedded Mode)
- 30만(300KDSI) 라인 이상
- 초대형 규모의 트랜잭션 처리 시스템
- 운영체제, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적용
- 조직형(Organic Mode)
- 푸트남(Putnam)
- 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식
- 푸트남이 제안한 것으로 생명주기 예측 모형이라고 한다.
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다.
- 기능 점수(FP; Function Point)
- 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식
- 경험을 바탕으로 단순, 보통, 복잡한 정도에 따라 가중치를 부여
- 코드 라인 수(LoC; Lines of Code)
일정 관리 모델
- 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델
- 종류 :
- 주 공정법(CPM; Critical Path Method)
- 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 방법
- 모든 자원 제약사항을 베재한 상태로 프로젝트의 시작과 끝을 나타내는 노드(Node)와 노드 간 연결을 통해 공정을 계산하기 위한 액티비티(Activity) 표기법
- PERT(Program Evaluation and Review Technique)
- 일의 순서를 계획적으로 정리하기 위한 수렴 기법
- 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정을 관리하는 방법
- 중요 연쇄 프로젝트 관리(CCPM; Critical Chain Project Management)
- 주 공정 연쇄법으로 자원 제약 사향을 고려하여 일정을 작성하는 방법
- 주 공정법(CPM; Critical Path Method)
현행 시스템 파악
- 현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 제공 기능 및 연계 정보는 무엇이며 어떤 기술 요소를 사용하는지를 파악하는 활동
- 사용하고 있는 소프트웨어 및 하드웨어는 무엇인지, 네트워크의 구성은 어떻게 되어 있는지 파악하는 활동
- 절차 : 구성/기능/인터페이스 파악 → 아키텍처 및 소프트웨어 구성 파악 → 하드웨어 및 네트워크 구성 파악
소프트웨어 아키텍처(Software Architecture)
- 여러 가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 그리고 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체
소프트웨어 아키텍처 프레임워크(Software Architecture Framework)
- 소프트웨어 집약적인 아키텍처가 표현해야 하는 내용 및 이들 간의 관계를 제공하는 아키텍처 기술 표준
- 구성요소 :
- 아키텍처 명세서(Architectural Description)
- 아키텍처를 기록하기 위한 산출물
- 이해관계자들의 시스템에 대한 관심을 관점에 맞추어 작성한 뷰로 표현
- 개별 뷰, 뷰 개괄 문서, 인터페이스 명세 등
- 이해관계자(Stakeholder)
- 시스템 개발에 관련된 모든 사람과 조직
- 고객, 최종 사용자, 개발자, 프로젝트 관리자, 유지보수자, 마케팅 담당자 등
- 관심사(Concerns)
- 사용자 입장 : 기본적인 기능, 신뢰성, 보안, 사용성 등
- 유지보수자 입장 : 유지보수의 용이성
- 개발자 입장 : 적은 비용과 인력으로 개발
- 관점(Viewpint)
- 개별 뷰를 개발할 때 토대가 되는 패턴이나 양식
- 이해관계자들이 서로 다른 역할이나 책임으로 시스템이나 산출물들에 대해 보고 싶은 관점
- 뷰(View)
- 서로 관련 있는 관심사들의 집합이라는 관점에서 전체 시스템을 표현
- 시스템에 대한 아키텍처 설명에는 하나 이상의 뷰로 구성
- 근거(Rationale)
- 아키텍처 결정 근거
- 회의 결과, 보고 결과
- 환경(Environment) : 시스템에 영향을 주는 요인으로 개발, 운영 등의 외부 요인 등으로 시스템에 영향을 주는 요인
- 시스템(System) : 각 애플리케이션, 서브 시스템, 시스템의 집합, 제품군 등의 구현체
- 아키텍처 명세서(Architectural Description)
소프트웨어 아키텍처 4+1 뷰
- 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법
- 구성요소 : 1 (유스케이스 뷰) + 4 (논리 뷰, 프로세스 뷰, 구현 뷰, 배포 뷰)
- 유스케이스 뷰(Usecase View)
- 유스케이스 또는 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는 데 사용되는 뷰
- 사용자, 설계자, 개발자, 테스트 관점
- 논리 뷰(Logical View)
- 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
- 설계자, 개발자 관점
- 프로세스 뷰(Process View)
- 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현한 뷰
- 개발자, 시스템 통합자 관점
- 구현 뷰(Implementation View)
- 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
- 컴포넌트 구조와 의존성을 보여주고 컴포넌트에 관한 부가적인 정보 정의
- 배포 뷰(Deployment View) : 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰
- 유스케이스 뷰(Usecase View)
소프트웨어 아키텍처 패턴(Software Architecture Pattern)
- 소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식
- 주어진 상황에서의 소프트웨어 아키텍처에서 일반적으로 발생하는 문제점들에 대한 일반화되고 재사용 가능한 솔루션
- 유형 :
- 계층화 패턴(Layered Pattern)
- 시스템을 계층(Layer)으로 구분하여 구성
- 각 하위 모듈들은 특정한 수준의 추상화를 제공하고, 각 계층은 다음 상위 계층에 서비스를 제공
- 계층화 패턴은 서로 마주보는 두 개의 계층 사이에서만 상호작용이 이루어짐
- 클라이언트-서버 패턴(Client-Server Pattern)
- 하나의 서버와 다수의 클라이언트로 구성
- 사용자가 클라이언트를 통해서 서버에 서비스를 요청하면 서버는 클라이언트에게 서비스를 제공
- 서버는 클라이언트로부터 요청 대기
- 파이프-필터 패턴(Pip-Filter Pattern)
- 데이터 스크림을 생성하고 처리하는 시스템에서 사용 가능한 패턴
- 서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음 서브 시스템으로 넘겨주는 과정 반복
- 필터 컴포넌트는 재사용성이 좋고, 추가가 쉽기 때문에 확장 용이
- 브로커 패턴(Broker Pattern)
- 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 이 컴포넌트 들은 원격 서비스 실행을 통해 상호 작용이 가능
- 브로커 컴포넌트는 컴포넌트 간의 통신을 조정하는 역할 수행
- 모델-뷰-컨트롤러 패턴(MVC; Model View Controller Pattern)
- 각 부분이 별도의 컴포넌트로 분리되어 있어서 서로 영향을 받지 않고 개발 작업 수행 가능
- 컴포넌트를 분리하며 코드의 효율적인 재사용을 가능하게 하고, 대화형 애플리케이션 구축에 적합
- 구성 요소 :
- 모델(Model) : 핵심 기능과 데이터 보관
- 뷰(View) : 사용자에게 정보 표시(하나 이상의 뷰가 정의될 수 있음)
- 컨트롤러(Controller) : 사용자로부터 요청을 입력받아 처리
- 계층화 패턴(Layered Pattern)
소프트웨어 아키텍처 비용 평가 모델
- 아키텍처 접근법이 품질 속성에 미치는 영향을 판단하고 아키텍처의 적합성을 평가하는 모델
- 종류 :
- SAAM(Software Architecture Analysis Method) : 변경 용이성과 기능성에 집중, 평가가 용이하며 경험이 없는 조직에서도 활용 가능한 비용 평가 모델
- ATAM(Architecture Trade-off Analysis Method) : 아키텍처 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상층관계까지 평가하는 모델
- CBAM(Cost Benefit Analysis Method) : ATAM 바탕의 시스템 아키텍처 분석 중심으로 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델
- ADR(Active Design Review) : 소프트웨어 아키텍처 구성요소 간 응집도를 평가하는 모델
- ARID(Active Reviews for Intermediate Designs) : 전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 비용 평가 모델
디자인 패턴(Design Pattern)
- 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
- 디자인 패턴을 참고하여 개발할 경우 개발의 효율성과 유지보수성, 운용성이 높아지며, 프로그램의 최적화에 도움이 된다.
- 구성요소 :
- 패턴의 이름 : 디자인 패턴을 부를 때 사용하는 이름과 디자인 패턴의 유형
- 문제 및 배경 : 디자인 패턴이 사용되는 분야 또는 배경, 해결하는 문제를 의미
- 솔루션 : 디자인 패턴을 이루는 요소들, 관계, 협동 과정
- 사례 : 디자인 패턴의 간단한 적용 사례
- 결과 : 디자인 패턴을 사용하면 얻게 되는 이점이나 영향
- 샘플 코드 : 디자인 패턴이 적용된 원시 코드
- 유형 :
- 목적에 따른 구분
- 생성 : 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 구행하는 패턴
- 구조 : 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
- 행위 : 클래스나 객체들이 상호 작용하는 방법과 역할 분담을 다루는 패턴
- 범위에 따른 구분
- 클래스 : 클래스 간 관련성(상속 관계)을 다루는 패턴, 컴파일 타임에 정적으로 결정
- 객체 : 객체 간 관련성을 다루는 패턴, 런타임에 동적으로 결정
- 목적에 따른 구분
- 종류 :
- 생성 패턴
- Builder
- 복잡한 인스턴스를 조립하여 만드는 구조
- 생성과 표기를 분리해서 복잡한 객체 생성
- Prototype
- 처음부터 일반적인 원형을 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정하여 사용하는 패턴
- 기존 객체를 복제함으로써 객체 생성
- Factory Method
- 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
- 생성할 객체의 클래스를 국한하지 않고 객체 생성
- Abstract Factory
- 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
- 동일한 주제의 다른 팩토리를 묶음
- Singleton
- 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
- 한 클래스에 한 객체만 존재하도록 제한
- Builder
- 구조 패턴
- Bridge
- 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 패턴
- 구현뿐만 아니라, 추상화된 부분까지 변경해야 하는 경우 활용
- Decorator
- 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴
- 객체의 결합을 통해 기능을 동적으로 유연하게 확장
- Facade
- 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 또는 여타 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게 하는 패턴
- 통합된 인터페이스 제공
- Flyweight
- 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스 화하여 공유함으로써 메모리를 절약하고, 클래스 경량화를 목적으로 하는 패턴
- 여러 개의 가상 인스턴스를 제공하여 메모리 절감
- Proxy
- 실제 객체에 대한 대리 객체로 실제 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들며, 이 점을 이용해서 미리 할당하지 않아도 상관없는 것들을 실제 이용할 때 할당하게 하여 메모리 용량을 아낄 수 있으며, 실제 객체를 드러나지 않게 하여 정보은닉의 역할도 수행하는 패턴
- 특정 객체로의 접근을 제어하기 위한 용도로 사용
- Composite
- 객제들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴
- 복합 객체와 단일 객체를 동일하게 다루도록 하는 패턴
- Adapter
- 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴
- 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 타 클래스의 인터페이스를 기존 인퍼테이스에 덧씌움
- Bridge
- 행위 패턴
- Mediator
- 객체간 중재자를 두고, 중재자에게 모든 것을 요구하여 통신의 빈도수를 줄여 객체 지향의 목표를 달성하게 해주는 패턴
- Interpreter
- 언어의 다양한 해석, 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 해석할 수 있게 만드는 패턴
- Iterator
- 컬렉션의 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인 패턴
- 내부 구조를 노출하지 않고, 복합 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴
- Template Method
- 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴
- 상위 클래스(추상 클래스)에는 추상 메소드를 통해 기능의 골격을 제공하고, 하위 클래스(구체 클래스)의 메소드에는 세부 처리를 구체화하는 방식으로 사용하여 코드 양을 줄이고 유지보수를 용이하게 만드는 특징을 갖는 패턴
- Observer
- 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 방법으로 일대 다의 의존성을 가지며 상호 작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 패턴
- State
- 객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조하게 하는 방식으로 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경하여, 변경 시 원시 코드의 수정을 최소화할 수 있고, 유지보수의 편의성도 갖는 패턴
- Visitor
- 각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메소드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴
- 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할 때 사용하는 패턴
- Command
- 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
- 하나의 추상 클래스에 메소드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행되는 특징을 갖는 패턴
- Strategy
- 알고리즘 군을 정의하고(추상 클래스), 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 다음, 필요할 때 서로 교환해서 사용할 수 있게하는 패턴
- 행위를 클래스로 캡슐화하여 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
- Memento
- 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 패턴
- Undo 기능을 개발할 때 사용하는 패턴
- Chain of Responsibility
- 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능한데, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 패턴
- Mediator
- 생성 패턴
현행 시스템 파악
- 현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 제공 기능 및 연계 정보는 무엇이며 어떤 기술 요소를 사용하는지를 파악하는 활동
- 사용하고 있는 소프트웨어 및 하드웨어는 무엇인지, 네트워크의 구성은 어떻게 되어 있는지 파악하는 활동
- 절차 : 구성/기능/인터페이스 파악 → 아키텍처 및 소프트웨어 구성 파악 → 하드웨어 및 네트워크 구성 파악
소프트웨어 아키텍처(Software Architecture)
- 여러 가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 그리고 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체
소프트웨어 아키텍처 프레임워크(Software Architecture Framework)
- 소프트웨어 집약적인 아키텍처가 표현해야 하는 내용 및 이들 간의 관계를 제공하는 아키텍처 기술 표준
- 구성요소 :
- 아키텍처 명세서(Architectural Description)
- 아키텍처를 기록하기 위한 산출물
- 이해관계자들의 시스템에 대한 관심을 관점에 맞추어 작성한 뷰로 표현
- 개별 뷰, 뷰 개괄 문서, 인터페이스 명세 등
- 이해관계자(Stakeholder)
- 시스템 개발에 관련된 모든 사람과 조직
- 고객, 최종 사용자, 개발자, 프로젝트 관리자, 유지보수자, 마케팅 담당자 등
- 관심사(Concerns)
- 사용자 입장 : 기본적인 기능, 신뢰성, 보안, 사용성 등
- 유지보수자 입장 : 유지보수의 용이성
- 개발자 입장 : 적은 비용과 인력으로 개발
- 관점(Viewpint)
- 개별 뷰를 개발할 때 토대가 되는 패턴이나 양식
- 이해관계자들이 서로 다른 역할이나 책임으로 시스템이나 산출물들에 대해 보고 싶은 관점
- 뷰(View)
- 서로 관련 있는 관심사들의 집합이라는 관점에서 전체 시스템을 표현
- 시스템에 대한 아키텍처 설명에는 하나 이상의 뷰로 구성
- 근거(Rationale)
- 아키텍처 결정 근거
- 회의 결과, 보고 결과
- 환경(Environment) : 시스템에 영향을 주는 요인으로 개발, 운영 등의 외부 요인 등으로 시스템에 영향을 주는 요인
- 시스템(System) : 각 애플리케이션, 서브 시스템, 시스템의 집합, 제품군 등의 구현체
- 아키텍처 명세서(Architectural Description)
소프트웨어 아키텍처 4+1 뷰
- 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법
- 구성요소 : 1 (유스케이스 뷰) + 4 (논리 뷰, 프로세스 뷰, 구현 뷰, 배포 뷰)
- 유스케이스 뷰(Usecase View)
- 유스케이스 또는 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는 데 사용되는 뷰
- 사용자, 설계자, 개발자, 테스트 관점
- 논리 뷰(Logical View)
- 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
- 설계자, 개발자 관점
- 프로세스 뷰(Process View)
- 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현한 뷰
- 개발자, 시스템 통합자 관점
- 구현 뷰(Implementation View)
- 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
- 컴포넌트 구조와 의존성을 보여주고 컴포넌트에 관한 부가적인 정보 정의
- 배포 뷰(Deployment View) : 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰
- 유스케이스 뷰(Usecase View)
소프트웨어 아키텍처 패턴(Software Architecture Pattern)
- 소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식
- 주어진 상황에서의 소프트웨어 아키텍처에서 일반적으로 발생하는 문제점들에 대한 일반화되고 재사용 가능한 솔루션
- 유형 :
- 계층화 패턴(Layered Pattern)
- 시스템을 계층(Layer)으로 구분하여 구성
- 각 하위 모듈들은 특정한 수준의 추상화를 제공하고, 각 계층은 다음 상위 계층에 서비스를 제공
- 계층화 패턴은 서로 마주보는 두 개의 계층 사이에서만 상호작용이 이루어짐
- 클라이언트-서버 패턴(Client-Server Pattern)
- 하나의 서버와 다수의 클라이언트로 구성
- 사용자가 클라이언트를 통해서 서버에 서비스를 요청하면 서버는 클라이언트에게 서비스를 제공
- 서버는 클라이언트로부터 요청 대기
- 파이프-필터 패턴(Pip-Filter Pattern)
- 데이터 스크림을 생성하고 처리하는 시스템에서 사용 가능한 패턴
- 서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음 서브 시스템으로 넘겨주는 과정 반복
- 필터 컴포넌트는 재사용성이 좋고, 추가가 쉽기 때문에 확장 용이
- 브로커 패턴(Broker Pattern)
- 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 이 컴포넌트 들은 원격 서비스 실행을 통해 상호 작용이 가능
- 브로커 컴포넌트는 컴포넌트 간의 통신을 조정하는 역할 수행
- 모델-뷰-컨트롤러 패턴(MVC; Model View Controller Pattern)
- 각 부분이 별도의 컴포넌트로 분리되어 있어서 서로 영향을 받지 않고 개발 작업 수행 가능
- 컴포넌트를 분리하며 코드의 효율적인 재사용을 가능하게 하고, 대화형 애플리케이션 구축에 적합
- 구성 요소 :
- 모델(Model) : 핵심 기능과 데이터 보관
- 뷰(View) : 사용자에게 정보 표시(하나 이상의 뷰가 정의될 수 있음)
- 컨트롤러(Controller) : 사용자로부터 요청을 입력받아 처리
- 계층화 패턴(Layered Pattern)
소프트웨어 아키텍처 비용 평가 모델
- 아키텍처 접근법이 품질 속성에 미치는 영향을 판단하고 아키텍처의 적합성을 평가하는 모델
- 종류 :
- SAAM(Software Architecture Analysis Method) : 변경 용이성과 기능성에 집중, 평가가 용이하며 경험이 없는 조직에서도 활용 가능한 비용 평가 모델
- ATAM(Architecture Trade-off Analysis Method) : 아키텍처 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상층관계까지 평가하는 모델
- CBAM(Cost Benefit Analysis Method) : ATAM 바탕의 시스템 아키텍처 분석 중심으로 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델
- ADR(Active Design Review) : 소프트웨어 아키텍처 구성요소 간 응집도를 평가하는 모델
- ARID(Active Reviews for Intermediate Designs) : 전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 비용 평가 모델
디자인 패턴(Design Pattern)
- 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
- 디자인 패턴을 참고하여 개발할 경우 개발의 효율성과 유지보수성, 운용성이 높아지며, 프로그램의 최적화에 도움이 된다.
- 구성요소 :
- 패턴의 이름 : 디자인 패턴을 부를 때 사용하는 이름과 디자인 패턴의 유형
- 문제 및 배경 : 디자인 패턴이 사용되는 분야 또는 배경, 해결하는 문제를 의미
- 솔루션 : 디자인 패턴을 이루는 요소들, 관계, 협동 과정
- 사례 : 디자인 패턴의 간단한 적용 사례
- 결과 : 디자인 패턴을 사용하면 얻게 되는 이점이나 영향
- 샘플 코드 : 디자인 패턴이 적용된 원시 코드
- 유형 :
- 목적에 따른 구분
- 생성 : 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 구행하는 패턴
- 구조 : 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
- 행위 : 클래스나 객체들이 상호 작용하는 방법과 역할 분담을 다루는 패턴
- 범위에 따른 구분
- 클래스 : 클래스 간 관련성(상속 관계)을 다루는 패턴, 컴파일 타임에 정적으로 결정
- 객체 : 객체 간 관련성을 다루는 패턴, 런타임에 동적으로 결정
- 목적에 따른 구분
- 종류 :
- 생성 패턴
- Builder
- 복잡한 인스턴스를 조립하여 만드는 구조
- 생성과 표기를 분리해서 복잡한 객체 생성
- Prototype
- 처음부터 일반적인 원형을 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정하여 사용하는 패턴
- 기존 객체를 복제함으로써 객체 생성
- Factory Method
- 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
- 생성할 객체의 클래스를 국한하지 않고 객체 생성
- Abstract Factory
- 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
- 동일한 주제의 다른 팩토리를 묶음
- Singleton
- 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
- 한 클래스에 한 객체만 존재하도록 제한
- Builder
- 구조 패턴
- Bridge
- 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 패턴
- 구현뿐만 아니라, 추상화된 부분까지 변경해야 하는 경우 활용
- Decorator
- 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴
- 객체의 결합을 통해 기능을 동적으로 유연하게 확장
- Facade
- 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 또는 여타 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게 하는 패턴
- 통합된 인터페이스 제공
- Flyweight
- 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스 화하여 공유함으로써 메모리를 절약하고, 클래스 경량화를 목적으로 하는 패턴
- 여러 개의 가상 인스턴스를 제공하여 메모리 절감
- Proxy
- 실제 객체에 대한 대리 객체로 실제 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들며, 이 점을 이용해서 미리 할당하지 않아도 상관없는 것들을 실제 이용할 때 할당하게 하여 메모리 용량을 아낄 수 있으며, 실제 객체를 드러나지 않게 하여 정보은닉의 역할도 수행하는 패턴
- 특정 객체로의 접근을 제어하기 위한 용도로 사용
- Composite
- 객제들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴
- 복합 객체와 단일 객체를 동일하게 다루도록 하는 패턴
- Adapter
- 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴
- 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 타 클래스의 인터페이스를 기존 인퍼테이스에 덧씌움
- Bridge
- 행위 패턴
- Mediator
- 객체간 중재자를 두고, 중재자에게 모든 것을 요구하여 통신의 빈도수를 줄여 객체 지향의 목표를 달성하게 해주는 패턴
- Interpreter
- 언어의 다양한 해석, 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 해석할 수 있게 만드는 패턴
- Iterator
- 컬렉션의 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인 패턴
- 내부 구조를 노출하지 않고, 복합 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴
- Template Method
- 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴
- 상위 클래스(추상 클래스)에는 추상 메소드를 통해 기능의 골격을 제공하고, 하위 클래스(구체 클래스)의 메소드에는 세부 처리를 구체화하는 방식으로 사용하여 코드 양을 줄이고 유지보수를 용이하게 만드는 특징을 갖는 패턴
- Observer
- 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 방법으로 일대 다의 의존성을 가지며 상호 작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 패턴
- State
- 객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조하게 하는 방식으로 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경하여, 변경 시 원시 코드의 수정을 최소화할 수 있고, 유지보수의 편의성도 갖는 패턴
- Visitor
- 각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메소드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴
- 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할 때 사용하는 패턴
- Command
- 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
- 하나의 추상 클래스에 메소드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행되는 특징을 갖는 패턴
- Strategy
- 알고리즘 군을 정의하고(추상 클래스), 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 다음, 필요할 때 서로 교환해서 사용할 수 있게하는 패턴
- 행위를 클래스로 캡슐화하여 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
- Memento
- 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 패턴
- Undo 기능을 개발할 때 사용하는 패턴
- Chain of Responsibility
- 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능한데, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 패턴
- Mediator
- 생성 패턴
분석 산출물의 종류
- 정보 시스템 구성 현황
- 정보 시스템 기능 구성도
- 인터페이스 구성도
- 인터페이스 현황
- 현행 시스템 아키텍처 구성도
- 소프트웨어 구성도
- 하드웨어 구성도
- 네트워크 구성도
운영체제(OS; Operating System)
- 컴퓨터 시스템이 제공하는 모든 하드웨어, 소프트웨어를 사용할 수 있도록 해주고, 컴퓨터 사용자와 컴퓨터 하드웨어 간 인터페이스를 담당하는 프로그램
- 사용자가 컴퓨터를 좀 더 쉽게 사용하기 위해 지원하는 소프트웨어
- 운영체제 현행 시스템 분석 시 고려 사항
- 품질 측면 : 신뢰도, 성능
- 지원 측면 : 기술 지원, 주변 기기, 구축 비용
OSI 7계층(Open Systems Interconnection 7 Layer)
- 물리 계층(Physical Layer)
- 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
- 프로토콜 : RS-232C
- 전송 단위 : 비트(Bit)
- 데이터 링크 계층(Data Link Layer)
- 인접 시스템 간 데이터 전송, 전송 오류 제어
- 동기화, 흐름 제어 등의 전송 기능 제공
- 오류 검출 / 재전송 등의 기능 제공
- 프로토콜 : 이더넷
- 전송 단위 : 프레임(Frame)
- 네트워크 계층(Network Layer)
- 단말 간 데이터 전송을 위한 최적화된 경로 제공
- 프로토콜 : IP, ICMP
- 전송 단위 : 패킷(Packet)
- 전송 계층(Transport Layer)
- 신뢰성 있는 통신 보장
- 데이터 분할과 재조립, 흐름 제어, 오류 제어, 혼잡제어 등을 담당
- 프로토콜 : TCP, UDP
- 전송 단위 : 세그먼트(Segment)
- 세션 계층(Session Layer)
- 연결 접속 및 동기 제어
- 프로토콜 : SSH, TLS
- 전송 단위 : 데이터(Data)
- 표현 계층(Presentation Layer)
- 데이터 형식 설정과 부호 교환, 암/복호화
- 프로토콜 : JPEG, MPEG
- 전송 단위 : 데이터(Data)
- 응용 계층(Application Layer)
- 사용자와 네트워크 간 응용 서비스 연결, 데이터 생성
- 프로토콜 : HTTP, FTP
- 전송 단위 : 데이터(Data)
데이터베이스 관리 시스템(DBMS; DataBase Management System)
- 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- 고려사항 :
- 성능 측면 : 가용성, 성능, 상호 호환성
- 지원 측면 : 기술 지원, 구축 비용
미들웨어(Middleware)
- 분산 컴퓨팅 환경에서 응용 프로그램과 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있도록 제어해주는 소프트웨어
- 운영체제와 소프트웨어 애플리케이션 사이 위치
웹 애플리케이션 서버(WAS; Web Application Server)
- 서버 계층에서 애플리케이션이 동작할 수 있는 환경을 제공하고 안정적인 트랜잭션 처리와 관리, 다른 이기종 시스템과의 애플리케이션 연동을 지원하는 서버
- 고려사항 : 가용성, 성능, 기술 지원, 구축 비용
요구사항
- 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약 조건
- 유형
- 기능 요구사항(Function Requirements) : 시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 기능이나 수행과 관련된 요구사항
- 비기능 요구사항(Non-Fuction Requirements) : 품질이나 제약사항과 관련된 요구사항
- 사용자 요구사항(User Requirements) : 사용자 관점에서 본 시스템에 제공해야 할 요구사항
- 시스템 요구사항(System Requirements) : 개발자 관점에서 본 시스템 전체가 사용자와 다른 시스템에 제공해야 할 요구사항
요구사항 개발 프로세스
- 개발 대상에 대한 요구사항을 체계적으로 도출하고 분석한 후 명세서에 정리한 다음 확인 및 검증하는 일련의 구조화된 활동
- 단계 : 도출(Elicitation) → 분석(Analysis) → 명세(Specification) → 확인(Validation)
- 요구사항 도출(Requirement Elicitation, 요구사항 수집)
- 시스템, 사용자, 개발자 등 시스템 개발에 관련된 사람들이 서로 의견을 교환하여 요구사항을 어떻게 수집할 것인지를 식별하고 이해하는 과정
- 소프트웨어 개발 생명 주기(SDLC)동안 지속적으로 반복
- 기법
- 청취와 인터뷰
- 설문
- 브레인스토밍(Brain Storming) : 3인 이상의 자유롭게 의견을 교환하면서 독창적인 아이디어를 도출해 내는 방법
- 워크샵
- 프로토타이핑(Prototyping) : 프로토타입을 통해 효과적으로 요구 분석을 수행하면서 명세서를 산출하는 작업
- 유스케이스(Usecase) : 사용자의 요구사항을 기능 단위로 표현하는 것
- 요구사항 분석(Requirement Analysis)
- 개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 이를 걸러내기 위한 과정
- 요구사항의 타당성을 조사하고 비용과 일정에 대한 제약을 설정
- 도구
- 자료 흐름도(DFD; Data Flow Diagram) : 자료의 흐름 및 변환과 기능을 도형 중심으로 기술하는 방법
- 자료 사전(DD; Data Dictionary) : 자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것
- 요구사항 명세(Requirement Specification)
- 분석된 요구사항을 바탕으로 모델을 작성하고 문서화하는 것
- 기능 요구사항을 빠짐없이 기술
- 비기능 요구사항은 필요한 것만 기술
- 요구사항 확인(Requirement Vaildation, 요구사항 검증)
- 개발 자원을 요구사항에 할당하기 전에 요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 활동
- 요구사항 도출(Requirement Elicitation, 요구사항 수집)
요구 공학(Requirements Engineering)
- 사용자의 요구가 반영된 시스템을 개발하기 위하여 요구사항에 대한 도출, 분석, 명세, 확인 및 검증하는 구조화된 활동
'메모장 > 정보처리기사 실기' 카테고리의 다른 글
[정보처리기사 실기] 06. 화면 설계 (0) | 2024.10.06 |
---|---|
[정보처리기사 실기] 05. 인터페이스 구현 (0) | 2024.10.06 |
[정보처리기사 실기] 04. 서버 프로그램 구현 (0) | 2024.10.06 |
[정보처리기사 실기] 03. 통합구현 (0) | 2024.10.04 |
[정보처리기사 실기] 02. 데이터 입출력 구현 (0) | 2024.10.03 |