PART 01. 소프트웨어 설계
- CHAPTER 01. 요구사항 확인 (NCS 5 level)
● "요구사항 확인"이란?
업무 분석가가 수집/분석/정의한 요구사항과 이에 따른 분석모델에 대해서 확인과 현행 시스템에 대해 분석하는 능력
● 현행 시스템 분석하기
- 개발하고자 하는 응용SW에 대한 이해를 높이기 위해, 현행 시스템의 적용현황을 파악함으로써 개발범위와 향후 개발될 시스템으로의 이행방향성 분석 가능.
- 개발하고자 하는 응용SW와 관련된 OS, DB, 관리시스템, MW 등의 요구사항 식별 가능.
- 현행 시스템을 분석하여, 개발하고자 하는 응용SW가 이후 적용될 목표 시스템을 명확하고 구체적으로 기술 가능.
▷ 1단계 : 현행 시스템 파악
1. 구성/기능/인터페이스 파악
- 시스템 구성 현황 파악
- 시스템 기능 파악
- 시스템 인터페이스 현황 파악
- 주요 산출물 : 현행 시스템 분석서, 현행 시스템 기능 정의서, 현행 인터페이스 현황 정의서
2. 아키텍처 및 SW 구성 파악
- 아키텍처 파악
- SW 구성 파악
- 주요 산출물 : 현행 시스템 아키텍처 구성도, 현행 SW 구성도
3. HW 및 네트워크 구성 파악
- 시스템 HW 현황 파악
- 네트워크 구성 파악
- 주요 산출물 : 현행 하드웨어 구성도, 현행 네트워크 구성도
▷ 2단계 : 목표시스템 아키텍처 선정
- 목표 시스템의 SW 및 시스템 아키텍처 정의
- 아키텍처 평가
- 주요 산출물 : SW 아키텍처 정의서, 시스템 아키텍처 정의서, 아키텍처 평과 결과서
▷ 3단계 : 목표시스템 개발표준 정의
- 목표시스템 모델링 표준 정의
- P/G 표준 정의
- 개발환경 표준 정의
- 주요 산출물 : 모델링 표준 정의서, P/G 표준 정의서, 개발환경 표준 정의서
● 플랫폼이란?
- SW 플랫폼을 의미. 응용SW P/G 구동시키는데 쓰이는 HW와 SW의 결합
- SW 개발과 운영을 쉽게 하고 한번 생성된 SW는 동일한 플랫폼에서는 장소와 시간 구분없이 손쉽게 구동 될 수 있도록 만들어진 결합체
- 요구사항을 확인하기 위해 현행 시스템을 분석하려면 현재 시스템의 구성요소인 SW 및 HW 플랫폼을 상세하게 분석해야함.
● 플랫폼 종류
- HW 플랫폼 : 표준 기술을 통해 다양한 제품을 만들 수 있는 기술 도구.
x86 서버, 메인프레임, 데스크탑
- SW 플랫폼 : SW를 쉽게 개발 및 구동하기 위한 기술 도구
리눅스, 윈도우, 자바, 닷넷, iOS, 안드로이드
- 서비스 플랫폼 : 다양한 서비스를 제공할 수 있는 기술 환경
페이스북, 인스타그램, 트위터
● 플랫폼 기능 **
- SW 운영 환경 제공 : SW 구동에 필요한 HW 자원 할당 및 프로세스 관리 기능 등 공통 실행환경 제공
- SW 개발 및 운영 비용 감소 : 동일 플랫폼 활용 시 모듈 재활용, 비용 절감 가능
- SW 개발 생산성 향상 : 개발 프레임워크를 통한 기간 단축, 품질 향상
- 동일 플랫폼 간 네트워크 효과 유발 : 개발자, 운영자, 사용자간 커뮤니티 형성
● 플랫폼 기능 특성 확인 방법
- 기능 테스트 : 현재 시스템의 플랫폼을 평가할 수 있는 기능 테스트 수행
- 사용자 인터뷰 : 현재 시스템 사용자를 대상으로 플랫폼 기능의 불편함을 인터뷰
- 문서 점검 : 현재 시스템의 플랫폼과 유사한 플랫폼의 기능 자료 분석
● 현행 시스템 분석하기에서 플랫폼의 성능 특성을 알아야 하는 이유
- 현재 시스템에 구성된 플랫폼의 성능을 분석해야 사용자가 사용하기에 속도가 느린지 빠른지 알 수 있기 때문.
- 사용자 요구사항 중 성능에 대한 요구사항이 있는데 이는 현재 시스템의 플랫폼 성능이 느려서 제기되는 요구사항일 가능성이 높기 때문
● 플랫폼 성능 특성 확인 방법
- 성능 테스트 : 현재 시스템 플랫폼을 대상으로 성능/부하 테스트 수행
- 문서 점검 : 현재 시스템의 플랫폼과 유사한 플랫폼의 성능 자료 분석
- 사용자 인터뷰 : 현재 시스템 사용자와의 인터뷰를 통하여 성능 확인
● 플랫폼 성능 측정 주요 지표 ****
- 응답시간 (Response Time) : 사용자 측면에서 응답시간이 성능 목표 기준. 응답시간은 업무 처리에 소요되는 시간.
- 업무량/처리량 (Throughput) : 업무 피크 시간 동안 시스템이 처리해야 하는 단위 시간 당 최대 업무처리 건수
- 가용성 (Availability) : 시스템이 정상적으로 사용 가능한 시간
- 사용률 (Utilization) : CPU, 메모리, 디스크, 네트워크 등의 사용 비율
● 운영체제 (OS : Operating System)
- HW와 SW 자원을 관리하고 컴퓨터 P/G을 위한 공통 서비스를 제공하는 SW.
- 사용자 편의성을 위한 인터페이스인 동시에 다양한 자원을 관리하는 자원 관리자.
- 사용자 <> SW <> OS <> HW
● 운영체제 역할
- 시스템을 제어하며 컴퓨터와 사용자간의 상호교신을 담당
- 자원 관리 및 사용자와 컴퓨터 간 인터페이스
- 제한된 컴퓨터 시스템의 자원을 보다 효율적으로 관리하고 운영
● 현재 시스템 운영체제 분석 : 현재 운영 체제의 종류, 버전, 패치 일자, 백업 주기 등을 분석
● 운영체제 종류 및 특징
OS | 저작자 | 시초 | 주요 용도 |
Windows | Microsoft | OS/2, MS-DOS | 중소 규모 서버, 개인용 PC, Tablet PC, Embedded System |
UNIX | IBM(AIX), HP(HP-UX), SUN(Solaris) |
UNIX System V, SunOS | 대용량 처리, 안정성이 요구되는 서버, Server, NAS, Workstation |
Linux | Linus Torvalds | Linux kernel | 중/대규모 서버 |
iOS | Apple | OS X NeXTSTEP, BSD | 스마트폰, Tablet PC, Music 플레이어 등 |
Android | Linux | 스마트폰, Tablet PC |
● 네트워크
- 컴퓨터를 통신망으로 연결한 것
- 컴퓨터 네트워크에서 컴퓨팅 장치들은 노드 간 연결(데이터 링크)을 사용하여 서로에게 데이터를 교환. 이 데이터 링크들은 유선, 광케이블과 같은 케이블 매체 또는 와이파이와 같은 무선 매체를 통해 확립됨.
● 네트워크 구성 요소
- 호스트 (Host) : 최종 사용자가 사용하는 장치. 서버, 컴퓨터, 노트북, 스마트폰 등을 의미
- NIC (Network Interface Card) : 호스트를 네트워크에 연결시키고 데이터 패킷 전송/수신을 처리하는 장치
- 미디어 (Media) : 네트워크에서 전기적 신호를 전달해주는 매체. 동축케이블, LAN 케이블, 광케이블, Wireless Lan 등이 있음
- 허브 (Hub) : 여러 대의 호스트, 네트워크 장비를 연결하는 장치. 상호간의 통신을 할 수 있게 데이터 전송을 중계함
- 스위치 (Switch) : 허브보다 향상된 네트워크 처리 용량과 속도를 제공. 데이터 링크 계층에서 동작함.
- 라우터 (Router) : 네트워크 간 데이터 전송을 위해 최적 경로를 설정하여 데이터를 전송하는 장치. 전송할 데이터의 수신 주소를 읽어 경로를 설정해주는 교환기 같은 역할을 하며 네트워크 계층에서 동작함.
● OSI (Open System Interconnection) 7 Layout
- 국제표준 기구(ISO)에서 제시한 네트워크 기본 모델
- 특징
- 계층 간 독립성을 보장 → 변경이 다른 계층에 영향을 주지 않음.
- 각 계층은 다른 계층에 대해 알 필요가 없고 자신의 계층에서 정보를 감추는 캡슐화가 가능
● 기능
계층 | 설명 | 주요 프로토콜 | 단위 |
응용 계층 (Application Layer) |
사용자 <> 네트워크 간의 응용 서비스 연결, 데이터 생성 | HTTP, TELNET, DHCP, DNS, FTP, SSH, SMTP, SNMP | Data |
표현 계층 (Presentation Layer) |
데이터 형식 설정과 부호 교환, 암호화, 해독 | MIME, TLS, SSL, JPEG, MPEG, SMB, AFP | Data |
세션 계층 (Session Layer) |
응용 프로세스 간의 연결 접속 및 동기 제어 | SSH, TLS, RPC | Data |
전송 계층 (Transport Layer) |
- 프로세스 간 논리적 통신 서비스 제공 - 패킷들의 전송유효 확인, 실패한 패킷은 재전송하여 신뢰성 통신 보장 |
TCP(3-Way Handshaking), UDP, SCTP, RTP | Segment |
네트워크 계층 (Network Layer) |
단말 간 시스템끼리 Data를 전송하기 위한 최선의 통신 경로 선택 제공 | IP, ARP, ICMP, IGMP, IPsec | Packet |
데이터링크 계층 (Data Link Layer) |
- 인접 시스템 간의 데이터 전송, 전송 오류 제어(Frame) - 오류 검출 / 재전송 / 흐름 제어 |
Ethernet, ATM, PPP | Frame |
물리 계층 (Physical Layer) |
통신 회선으로 Data를 나타내는 '0'과 '1' 비트 정보를 회선에 내보내기 위한 전기적 변환이나 기계적 작업 담당 | RS-485, RS-232, X25/21 | Bits |
● 현재 시스템 네트워크
- 현재 시스템이 구성된 네트워크 구조 분석
- 사내 인터넷 데이터 센터(IDC), 백본망, 라우터, 스위치, 방화벽 등 분석
- 현재 시스템 서버 위치, 서버 간의 네트워크 연결 방식, 논리 및 물리 네트워크 구성도 작성
● DB : 사용자와 다른 애플리케이션, DB 등과 상호 작용하여 데이터를 저장하고 분석하기 위한 컴퓨터 SW로 DB 생성, 조회, 변경 등의 관리가 주요 기능.
● DB 기능
- 데이터 저장과 개발 및 유지보수 측면에서 중복성 통제
- 다중 사용자 간의 데이터 공유
- 권한 없는 사용자의 데이터 접근 통제
- 다양한 사용자에게 다양한 형태의 인터페이스 제공
- 데이터 사이에 존재하는 복잡한 관련성 표현
- 데이터베이스 무결성 보장
- 백업, 복구 기능 제공
● 현재 시스템 데이터베이스 시스템
- DBMS 종류, 버전, 구성방식, 스토리지 크기, 백업 주기 등 분석
- 테이블 수량, 데이터 증가 추이, 백업 방식 등 분석
● DB 분석 시 주요 고려사항
- 가용성 : 시스템 장시간 운영에 따라 발생 가능한 OS 고유의 장애 발생 간으성, DBMS 결함 등에 따른 패치 설치 관련 재가동, 백업/복구 편의성, DBMS 이중화 및 복제 등..
- 성능 : 대규모 데이터 처리 성능, 대용량 트랜잭션 처리 성능, 튜닝 옵션의 지원, 최소화된 설정과 비용 기반 쿼리 최적화 지원 등...
- 상호호환성 : 설치 가능한 OS 종류, JDBC, ODBC와 같은 인터페이스 호환 등
- 구축 비용 : 라이선스 정책 및 비용, 유지관리 비용 등
● DBMS 주요 유형 및 특징
구성 | RDBMS | NoSQL |
정의 | 하나의 데이터를 관계로 구조화하여 2차원 테이블 형식으로 저장한 DB | 수평적 확장이 가능하며 다수 서버들에 데이터 복제 및 분산저장이 가능한 DB |
데이터 구성 | 테이블 | 문서, Key-Value, Wide-column |
스키마 (Schema) | 사전정의 스키마 | 다이나믹 스키마 |
트랜잭션 정책 | ACID** 로 트랜잭션 보장 (원자성-Atomicity, 일관성-Consistency, 독립성-Isolation, 지속성-Durability) |
BASE 가용성과 성능 중시 (Basically, Available, Soft-State, Eventually Consistency) |
확장 방식 | 수직적 확장 | 수평적 확장 |
조회(Query) 방식 | Sort, Join, Grouping, Index 등 다수 | 기본적으로 Put/Get 지원 |
데이터 일관성 | 강한 일관성 | 약한 일관성 |
목표 | 트랜잭션 보장 집중 | 가용성 집중 |
시스템 측면 | 엄격한 데이터 관리 | 성능 중시 |
대표제품 | Oracle, MySql, MS-SQL 등 | MongoDB, CouchDB, Redis 등 |
● 논리/물리 테이블 구조 파악
- 각 테이블의 정규화 정도, 조인의 난이도 파악
- 조인 : 여러 개의 테이블을 결합하여 데이터를 검색하는 것
- 각종 프로시저, JOB, 트리거 등 분석
● 가상화
- 물리적으로 분산된 시스템을 논리적으로 통합하거나, 하나의 시스템을 논리적으로 분할하여 자원을 효율적으로 사용하는 기술.
- 프로세서(CPU), 메모리(Memory), 스토리지(Storage), 네트워크(Network)를 포함
- 위의 구성 요소들로 이루어진 서버나 장치들을 가상화함으로써 높은 수준의 자원 사용율과 분산 처리 능력 제공
● 가상화 유형
▷ 서버 가상화
- 서버 물리적 자원을 추상화, OS 또는 애플리케이션이 가상화 계층을 통해 자원 접근
- 종류 : 호스트 가상화, 반 가상화, 전 가상화, 하이퍼바이저 가상화, 컨테이너 가상화
▷ 스토리지 가상화
- 물리적인 스토리지를 논리적인 스토리지로 추상화
- 종류 : 호스트 기반(Host-based), 스토리지 장비 기반(Storage device-based), 네트워크 기반 (Network-based) 방식
▷ 네트워크 가상화
- 물리적인 네트워크 자원을 논리적인 단위로 가상화
- 종류 : VLAN, VPN, Channel Bounding, 가상 NIC
▷ 데스크탑 가상화
- 데스크탑의 컴퓨팅 환경을 서버에서 제공하는 가상화
- 종류 : SBC(Server-Based Computing), VDI(Virtual Desktop Infrastructure)
● 하이퍼바이저 방식 VS 컨테이너 방식
구분 | 하이퍼바이저 방식 가상화 | 컨테이너 방식 가상화 |
개념 | 공유자원을 관리하는 하이퍼바이저를 통해 가상머신을 생성하여 가상화하는 방식 | 하이퍼바이저 없이 리눅스 컨테이너 기술을 바탕으로 응용 P/G을 격리된 상태에서 실행하는 가상화 방식 |
이식성 | 가상머진 단위로 이동, 복제, 생성 모놀리딕(Monolithic) 구조 | 응용 P/G 단위로 실행에 필요한 모든 환경이 포함되어 배포됨. 마이크로서비스(Micro-Service) 구조 |
효율성 | 하이퍼바이저와 게스트OS의 성능 오버헤드 (손실) 존재 | 서버의 OS커널을 공유하므로 필요한 만큼 유연하게 자원사용 가능 |
용량 | Gbyte 단위 용량의 가상머신 실행 | Mbyte 단위 컨테이너 이미지 실행 |
안정성 | 독립된 가상머신들로 안정적인 운영 가능 | OS커널을 공유하므로 하이퍼바이저 방식에 비해 장애 영향 받음. 컨테이너 오케스트레이션 플랫폼으로 해결 |
● 가상화 장점
- 물리시스템 통합
- 여러 대의 물리적 시스템을 하나의 논리적 가상머신으로 통해서 관리 가능
- 하드웨어 종속성 해결
- HW 가상화하여 제공하기 때문에 특정 모델이나 업체에 종속되지 않음
- 리소스 효율성 증가
- 일반적인 서버 시스템은 리소스의 20% 미만 밖에 사용하지 않아 낭비 많음
- 가상화를 이용할 경우 70% 이상 사용 가능해 효율성 증가됨
- 구축비용 절감
- 유휴장비 또는 자원 활동도가 낮은 서버에 가상 시스템을 구성하고 네트워크를 가상으로 구성함으로서 물리적 제약을 극복하고 시스템 구매 비용이 절감됨
● 가상화 시스템 분석
- 시스템 장비 구성 분석 : HW, SW, 네트워크 등 가상화 시스템 유형별 내역 분석
- 기능 요구사항 분석 : 시스템이 제공해야하는 기능이나 사용자가 수행해야 하는 기능 분석
- 테스트 요구사항 분석 : 시스템이 제대로 운영되는가를 테스트하고 점검하기 위한 요구사항 분석
- 보안 요구사항 분석 : 정보자산의 기밀성, 무결성, 가용성 확보 위해 시스템의 테이터 및 기능, 운영 접근 요구사항 분석
● 클라우드 컴퓨팅 : 네트워크를 통해 가상화된 컴퓨터의 시스템 리소스(IT 리소스)를 요구하는 즉시 서비스 형태로 제공하는 방식
● 클라우드 컴퓨팅 서비스 유형 (서비스 유형 > 제공 기능 > 설명)
- IaaS > 인프라 서비스 > 가상화 기술, 네트워크 기술을 통해 물리적인 컴퓨팅 자원을 분할, 통합, 관리하는 가상머신 환경 서비스 제공
- PaaS > 플랫폼 제공 서비스 > 가상 OS, 프로그래밍 언어 실행 환경, DB, 웹 서비스 등 자원 및 개발도구 제공
- SaaS > 온디맨드(on-demand) 서비스 > 클라우드 상에서 응용 SW와 DB 등을 제공 (구글 Docs, 네이버 클라우드, Dropbox 등..)
● 클라우드 컴퓨텅 서비스 종류
- 사설 클라우드 (Private Cloud) : 기업 내부 데이터 센터에 클라우드를 구축
- 내부 가상화 시스템에 S/W, 데이터를 저장 관리
- 데이터 보안 장점
- 공용 클라우드 (Public Cloud) : 클라우드 업체가 제공하는 서비스를 비용 지불하고 이용
- HW, SW 등을 사용한 만큼 비용을 지불하여 사용
- 확장성 장점
- 하이브리드 클라우드 (Hybrid Cloud) : 사설, 공용 클라우드 모두 사용
- 공용 클라우드 사용 시 보안 문제와 사설 클라우드 사용 시 비용 문제를 해결
● 클라우드 컴퓨팅 시스템 분석
- 클라우드 컴퓨팅 시스템 기능 분석
- 제공방식 및 구축방식에 따른 제공기능 분석
- 표준 요구사항 분석
- 하이퍼바이저 호환성, 범용 OS 제공 및 기존 업무시스템 연계를 위한 API 제공 기능 분석
- 멀티텐넌시 및 안정성, 확장성 요구사항 분석
- 다수 사용자 동시 접속 시 동작을 보장하는 멀티텐넌시 환경 지원여부 확인
- 안정적인 서비스 수준을 보장하는 서비스 수전협약(SLA) 제공여부 확인
- 부하에 따라 탄력적으로 시스템 자원 확장 확인
- 보안 요구사항 분석
- 모든 데이터가 클라우드 저장소에 집중됨에 따라 네트워크 장애, 해킹, 관리자 보안사고 등의 보안 대책 요구사항 분석
- 비용 요구사항 분석
- 클라우드 서비스 구축 및 유지관리에 소요되는 비용 요구사항 분석
● 비즈니스 융합
- 비즈니스 (Business)
- 유무형의 가치를 제공하고 그에 상응하는 대가를 보상받는 등 영리를 목적으로 행하는 모든 활동
- 재화나 서비스의 개발 및 제공을 통해 영리 추구하는 기업활동 또는 경영활동
- 비즈니스 모델 (Business Model)
- 고객 가치 창출 및 시장에서 성공적인 경쟁 위해 고안된 조직 목표, 전략, 프로세스, 기술, 구조 등을 포함하는 요소들의 구성체
- 비즈니스 융합 (Convergence)
- 산업 또는 시장 간 경계를 허물고 ICT 등을 통한 새로운 전달방식을 도입함으로써 비즈니스 모델 적용범위를 확대시키는 것
● 비즈니스 융합 유형
- 제품 융합 : 2가지 이상 제품의 기능과 속성을 하나로 모음
- 서비스 융합 : 2가지 이상 서비스의 기능과 속성을 하나로 모음
- 제품과 IT융합 : 기존 제품에 IT 부품 또는 자재, SW 등을 추가
- 서비스와 IT 융합 : 기존 서비스에 IT 부품 또는 자재, SW 등을 추가함
- 제품의 서비스화 : 제품에 자사 또는 타사의 서비스를 부가하며 서비스 제공
- 서비스의 제품화 : 서비스를 제품화 또는 장비, 기기로 전환
- 제품과 서비스 통합 : 사용자 요구에 부합하는 시스템 또는 솔루션
● 비즈니스 융합 분석
- 고객 분석
- 비즈니스 모델 상에서 사업자에게 수익을 제공하는 참여자(고객) 식별 및 분석
- 제품 및 서비스 분석
- 비즈니스 모델 상에서 자사가 제공하는 상품 또는 서비스 식별 및 분석
- 비즈니스 융합 참여자 간 제공하는 서비스와 제공받는 서비스 식별 및 분석
- 사업구조 분석
- 상품 및 서비스의 제공자, 소비자 등 참여자 간의 관계와 구조 식별 및 분석
320x100
'정보처리기사 > 필기' 카테고리의 다른 글
[정보처리기사 필기 요약] 디자인 패턴(1) - 생성패턴 (0) | 2021.03.02 |
---|---|
[정보처리기사 필기 요약] 객체지향 설계원칙 (SOLID) (0) | 2021.03.02 |
[정보처리기사 필기 요약] 객체지향 (0) | 2021.03.02 |
[정보처리기사 필기 요약] 코드의 기능 (0) | 2021.03.02 |
[정보처리기사 필기 요약] SW 아키텍처 4+1 View (0) | 2021.03.02 |
댓글