레이블이 NCS인 게시물을 표시합니다. 모든 게시물 표시
레이블이 NCS인 게시물을 표시합니다. 모든 게시물 표시

요구사항 확인

안녕하세요 이번 시간에는 요구사항 확인에 대해서 글을 써볼까 합니다.

먼저 요구란..

시스템이 가져야 할 기능이나 시스템이 만족하여야 할 조건을 요구라고 합니다.

요구사항의 개발 프로세스는 아래와 같습니다.


(1) 요구사항 도출(Requirement Elicitation)

문제의 해결 또는 목적 달성을 위하여 사용자에 의해 요구되거나, 표준이나 명세 등을 만족하기 위하여 시스템이 가져야 하는 서비스 또는 제약사항(명시적, 묵시적)을 파악하기 위한 활동

※ 다양한 요구사항 소스:  고객, 마케팅, 개발자, 이해관계자, 기존시스템
※ 요구사항 도출기법: 업무절차 및 양식 조사, 문헌 조사, 설문, 인터뷰 등


(2) 요구사항 분석(Requirement Analysis)

(가) 요구사항들 간 상충되는 것을 해결하고, 소프트웨어의 범위를 파악하며, 소프트웨어가 환경과 어떻게 상호 작용하는지 이해한다. 
(나) 시스템 요구사항을 정제하여 소프트웨어 요구사항을 도출한다.

※ 요구사항 도출과 분석작업이 어려운 이유 
- 사용자가 원하는 것을 정확히 표현하기 어렵다. 
- 작업 중에도 요구사항이 바뀌거나 추가될 수 있다. 
- 모순되는 요구사항이 나오거나 동일한 내용이 다르게 표현될 수 있다.

(3) 요구사항 명세(Requirement Specification) 
(가) 요구사항 명세란 체계적으로 검토, 평가, 승인될 수 있는 문서를 작성하는 것을 의미 
(나) 시스템 정의, 시스템 요구사항, 소프트웨어 요구사항을 작성한다.

(4) 요구사항 확인(Requirement Validation)
분석가가 요구사항을 이해했는지 확인(Validation)이 필요하고, 요구사항 문서가    회사의 표준에 적합하고 이해 가능하며, 일관성이 있고, 완전한지 검증(Verification)하는 것이 중요하다. 




요구사항 분석 기법은 크게 5가지가 있다.
가) 요구사항 분류 
나) 개념 모델링 
다) 요구사항 할당 
라) 요구사항 협상 
마) 정형 분석(Formal Analysis) 

가. 요구사항 분류(Requirement Classification)
(1) 요구사항 분류 기준 
요구사항을 다음과 같은 기준으로 분류한다. 
- 요구사항이 기능인지 비기능인지 
- 요구사항이 하나 이상의 고수준 요구사항으로부터 유도된 것인지 또는 이해관계자나 다른 원천(Source)으로부터 직접 발생한 것인지 
- 요구사항이 제품에 관한 것인지 프로세스에 관한 것인지 
- 우선순위가 더 높은 것인지 여부 
- 요구사항의 범위(요구사항이 소프트웨어에 미치는 영향의 범위) 
- 요구사항이 소프트웨어 생명 주기 동안에 변경이 발생하는지 여부

나. 개념 모델링 
개념 모델은 문제 도메인의 엔터티(entity)들과 그들의 관계 및 종속성을 반영한다.
- 사용 시나리오를 나타내기 위해 유스케이스 다이어그램이 많이 사용

다. 요구사항 할당(Requirement Allocation)
(1) 요구사항을 만족시키기 위한 아키텍처 구성 요소를 식별하는 것을 요구사항 할당이라 한다. 
(2) 다른 구성 요소와 어떻게 상호 작용하는지 분석을 통하여 추가적인 요구사항을 발견할 수 있다.

라. 요구사항 협상(Requirement Negotiation)
(1) 두 명의 이해관계자가 서로 상충되는 내용을 요구하거나, 요구사항과 리소스, 기능과 비기능 요구사항들이 서로 상충되는 경우, 어느 한 쪽을 지지하기보다는 적절한 트레이드 오프 지점에서 합의가 중요하다. 
(2) 요구사항에 우선순위를 부여하는 것은 중요한 요구사항을 필터링할 수 있으며, 요구사항들 간 상충되는 문제를 해결하는 데 사용될 수 있다.

마. 정형 분석(Formal Analysis)
(1) 형식적으로 정의된 시맨틱(Semantics)을 지닌 언어로 요구사항을 표현한다. 
(2) 정확하고 명확하게 표현하여 오해를 최소화시킬 수 있다. 
(3) 정형 분석(Formal Analysis)은 요구사항 분석의 마지막 단계에서 이루어진다.





요구사항 확인
분석가가 요구사항을 이해했는지, 요구사항 문서가 회사 표준에 적합한지, 일관성이 있는지, 타당한지 등 검증하는 절차가 요구사항을 확인하는 단계이다

요구사항 확인 기법

(1) 요구사항 검토 
여러 이해 관계자들이 검토하는 데 참여하여 잘못된 가정, 불명확성, 표준과의 차이 등을 찾아내는 작업을 수행한다. 

(2) 프로토타이핑(Prototyping) 
프로토타이핑이란 시스템의 일부 혹은 모형를 만드는 과정이다. 시뮬레이션을 수행하거나, 데모 시스템을 만드는 방법 등이 있다. 프로토타이핑은 새로운 요구사항의 도출 수단으로, 또는 요구사항을 확인하는 수단으로 많이 사용된다. 

(3) 모델 검증 
분석단계에서 개발된 모델을 검증한다.

(4) 인수테스트 
요구사항의 중요한 속성은 최종 제품이 요구사항을 만족시키는지 확인이 가능해 야 한다는 것이다




요구사항의 기술적 타당성 검토

기술적 타당성 검토 4단계


NCS 요구사항 확인 - 기본 아키텍처

이번 시간에는 웹 애플리케이션의 확장성과 유지보수성을 높이기 위해서 많이 사용되는

기본 아키텍처를 살펴보겠습니다.

중,대규모 웹 애플리케이션을 효율적으로 개발, 유지보수 하기 위해서 계층화(Layering)하여 개발 중이죠.

애플리케이션 개발의 기본 아키텍처는 아래 그림과 같습니다.


[1] UI계층 (Presentation Layer/UX Layer)
. 업무처리 서비스와 사용자 간의 인터페이스를 담당하는 서비스로 사용자 화면 구성 및   사용자 입력정보 검증 등의 기능을 제공한다.
· 사용자에 대한 요청 및 응답처리 · 상위계층(비즈니스 계층, 퍼시스턴스 계층)에서 발생하는 Exception, Error에 대한 처리
· 최종 UI에서 표현해야 할 도메인 모델을 엮는 기능
· 비즈니스 로직과 최종 UI 사이를 분리하기 위한 컨트롤러 기능

[2] 비즈니스 계층
. 업무 프로그램의 업무 로직을 담당하는 서비스로 업무 흐름 제어, 트랜잭션 관리, 에러 처리 등의 기능을 제공한다.
· 애플리케이션 비즈니스 로직 처리와 비즈니스와 관련된 도메인 모델의 적합성 검증
· 트랜잭션 처리
· UI계층과 퍼시스턴스 계층 사이를 연결하는 역할로서 두 계층이 직접적으로 통신하지 않게  하여 애플리케이션의 유연성을 증가시킨다.
 · 비즈니스 계층에 있는 객체들 간의 관계를 관리한다.
· 다른 계층들과 통신하기 위한 인터페이스를 제공한다.

[3] 퍼시스턴스 계층 (데이터 처리 계층)
. 업무 프로그램에서 사용할 수 있도록 데이터에 대한 CRUD 기능을 지원한다.
· 영구 데이터를 빼내어 객체화시킨다.
· 영구 저장소(일례로 관계형 데이터베이스)에 데이터를 저장,수정,삭제한다.

[참고] CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다.

[4] 도메인 모델 계층
· 데이터베이스의 엔티티와 비슷한 개념을 가지는 것으로 실제 비즈니스 객체를 의미한다.

위 네 가지 계층은 독립적으로 분리할 수 있도록 구현해야 하며 일반적으로 각 계층 사이에는 도메인 모델을 제외하고 인터페이스를 이용하여 통신하는 것이 일반적이다.
도메인 모델은 UI계층, 비즈니스 계층, 퍼시스턴스 계층 전체에 걸쳐 사용하게 된다.



NCS 요구사항 확인 - 현행 시스템 분석

안녕하세요

이번에는 현행 시스템을 분석하는 방법에 대해서 글을 써볼까 합니다.














1. 현행 시스템의 기능과 특징

가 . 제안 시스템의 구성 현황

현행 시스템 구성 현황의 정의 
현행 시스템 구성 현황은 조직의 주요 업무를 처리하는 기간 업무와 이를 지원하는 지원 업무로 구분하여 기술한 것이다.

현행 시스템 구성 현황 작성 시 고려 사항 
각 업무에 속하는 단위 업무 정보시스템들의 명칭, 주요 기능들을 명시함으로써 조직 내 존재하는 모든 정보시스템의 현황을 파악하도록 한다


나 . 제안 시스템의 기능 구성도

(1) 기능 현황의 정의 
단위 업무 시스템이 현재 제공하고 있는 기능을 기술한 것이다.

(2) 기능 현황 작성 시 고려 사항 
단위 업무 시스템에서 제공하는 기능들을 주요 기능과 하부 기능으로 구분하여 계층형으로 표시한다.



다. 인터페이스 현황

(1) 인터페이스 현황의 정의 
단위 업무 시스템이 다른 단위 업무 시스템과 주고받는 데이터의 종류, 데이터 형식, 프로토콜, 연계유형, 주기 등을 명시한 것이다.

(2) 인터페이스 현황 작성 시 고려 사항 
중요한 고려 사항으로는 어떤 형식(format)으로 데이터를 주고받는지(XML, 고정 포맷,가변 포맷 등), 어떤 통신규약(TCP/IP, X.25 등)을 사용하고 있고, 연계유형(EAI, FEP등)은 무엇인지 등이 있다.



라 . 현행 시스템 아키텍처 및 소프트웨어

2. 1. 현행 시스템 아키텍처 구성도

(1) 현행 시스템 아키텍처 구성도의 정의
기간 업무를 수행하기 위하여 계층별로 어떠한 기술 요소들을 사용하고 있는지 최상위 수준에서 그림으로 표현한 것이다.

(2) 현행 시스템 아키텍처 구성도 작성 시 고려 사항 
단위 업무 시스템별로 아키텍처가 다른 경우에는 가장 핵심이 되는 기간 업무 처리 시스템을 기준으로 한다. 



2. 2. 소프트웨어 구성도

(1) 소프트웨어 구성도의 정의 
단위 업무 시스템의 업무 처리를 위해 설치되어 있는 소프트웨어들의 제품명, 용도, 라이선스 적용 방식 등을 명시한 것이다. 

(2) 고려사항 
시스템 구축 시 인프라 구축 비용에서 하드웨어 비용뿐만 아니라 소프트웨어 비용이 적지 않기 때문에, 상용 소프트웨어의 경우에는 라이선스 적용 방식의 기준(사이트, 서버, 프로세서, 코어(core), 사용자 수 등)과 보유한 라이선스 수량 파악이 중요하다.


2.3 하드웨어 구성도

(1) 하드웨어 구성도의 정의 
단위 업무 시스템들이 어디에 위치하고 있는 서버에서 운용되고 있는지 서버의 주요 사양(CPU 처리 속도, 메모리 크기, 하드디스크의 용량 등)과 수량, 이중화가 적용되어 있는지 여부를 명시한 것이다.


(2) 하드웨어 구성도 작성 시 고려 사항 
이중화는 기간 업무의 서비스 기간, 장애 대응 정책에 따라 필요성 여부가 결정되며,현행 시스템에서 이중화가 적용된 경우에는 목표 시스템에서도 이중화가 필요한 경우가 대부분이며, 이에 따라 인프라 구축 기술 난이도 및 비용 증가 가능성이 존재한다.


2.4 네트워크 구성도
(1) 네트워크 구성도의 정의 
업무 처리 시스템들이 어떠한 네트워크 구성을 가지고 있는지 그림으로 표현한 것. 네트워크 장비의 용도, 제품명, 수량, 주요사양, 위치, 연동 프로토콜 등에 대해 명시한다.


(2) 네트워크 구성도 작성 시 고려 사항
네트워크 구성도의 작성을 통해 서버의 위치, 서버 간의 네트워크 연결 방식을 파악할 수 있다. 네트워크 구성도는 조직 내 서버들의 물리적인 위치 관계 파악, 조직 내 보안 취약성 분석 및 대응, 네트워크 장애 발생 추적 및 대응 등의 다양한 용도로 활용될 수 있다.



NCS 요구사항 확인 - 현행 시스템 파악

안녕하세요

이번 시간에는 현행 시스템을 분석하는 NCS 요구사항확인 문서를 

정리해서 블로그에 써봅니다.


-사전 용어 정리-

하드웨어 - 컴퓨터의 모든 물리적 부품(입력, 연산, 제어, 기억, 출력 기능)

마더보드(메인보드) - CPU나 램과 같은 시스템이 작동되기 위한 주요 부품 장착과 주변 장치를 연 결할 수 있는 인터페이스를 제공하는 인쇄회로기판

중앙처리장치(CPU) -  CPU는 외부에서 정보를 입력 받고, 기억하고, 컴퓨터 프로그램 의 명령어를 해석하여 연산하고, 외부로 출력하는 역할을 한다. 또 컴퓨터 부품과 정보를 교환하면서 컴퓨터 시스템 전체를 제어하는 장치이다.

램 - 랜덤 액세스 메모리(Random Access Memory, 임의 접근 기억 장치) 즉 램 (RAM)은 임의의 영역에 접근하여 읽고 쓰기가 가능한 주기억 장치

소프트웨어 - 저장된 특정한 목적의 하나 또는 다수의 프로그램을 뜻한다. 


1. 운영체제(Operation System)

(1) 운영체제 정의
하드웨어와 소프트웨어 리소스를 관리하고 컴퓨터 프로그램을 위한 공통 서비 스를 제공하는 소프트웨어

(2) 운영체제의 종류 
마이크로소프트 윈도즈(Microsoft Widnows), 유닉스(Unix), 리눅스(Linux), iOS, Android 

(3) 운영체제 관련 요구사항을 식별할 때 고려해야 할 사항


(가) 일반적으로 리눅스(Linux) 기반 시스템이 하드웨어 및 소프트웨어 소유 비용이 가장 적게 소요된다. 
(나) 유지 및 관리 비용 측면에서는 윈도즈(Windows) 기반 시스템이 강점을 가진다. 
(다) 안정적이고 신뢰할 수 있으며 대용량 처리를 위해서는 유닉스(UNIX) 기반 시스템이 선호되고 있다. 
(라) 32bit 운영체제는 4GB 메모리까지 액세스 가능(사용자 메모리는 2GB)하지만, 64bit 운영체제에서는 4GB 이상의 메모리에 액세스 가능하며 구체적인 한계는 운영체제의 종류 및 버전에 따라 다양하다.

2. JVM (Java Virtual Machine) 
자바 가상 머신(JVM: Java Virtual Machine)은 다양한 하드웨어 및 운영체제에서 자바(Java) 언어로 작성된 애플리케이션을 수행하기 위한 사양(Specification)의 구현체

3. DBMS (Database Management System)

(1) DBMS란?
사용자나 다른 애플리케이션, 데이터베이스와 상호작용하여 데이터를 저장하고 분석하기 위한 소프트웨어 애플리케이션으로 데이터베이스 생성, 조회, 변경 등의 관리가 주요 기능

(2) DBMS의 종류 및 특징

(3) DBMS 관련 고려할 사항



4. 미들웨어 (Middleware)

(1) 미들웨어란? 
운영체제와 소프트웨어 애플리케이션 사이에 위치, 소프트웨어 애플리케이션에게 운영체제 제공하는 서비스를 추가, 확장하여 제공하는 컴퓨터 소프트웨어를 말한다. 

(2) WAS 서버란? 
동적인 웹 사이트, 웹 애플리케이션, 웹 서비스의 개발을 지원하기 위하여 설계된 소프트웨어로서 데이터 접근, 세션 관리, 트랜잭션 관리 등을 위한 라이브러리를 제공

(3) WAS의 종류와 특징



(3) WAS 관련 고려사항


오픈소스 사용시 고려할 사항 

소스(Open Source)는 소스 코드를 공개해 누구나 특별한 제한 없이 그 코드를 보고 사용할 수 있는 오픈 소스 라이선스를 만족하는 소프트웨어를 말한다. 
오픈 소스를 사용하는 경우에는 라이선스의 종류, 사용자 수, 기술의 지속 가능성 등을 고려해야 한다