소프트웨어 생명주기
소프트웨어 개발 과정을 단계별로 나누고, 각 단계에서 어떤 일을 해야하는지 서술한 것
비용 산정 및 개발 계획 수립에 기초를 제공하고, 개발 용어 등의 표준화 및 프로젝트 관리를 용이하게 함
폭포수 모형
- 순차적으로 한 단계씩 진행하는 방식, 전 단계가 완료되기 전에는 다음 단계로 진행할 수 없음
- 단점: 전 단계를 수정할 수 없어 사용자의 요구사항 변경을 반영하기 어려움 --- 요구사항이 명확한 경우에 적합함
- 계획(타당성 검증) - 요구분석(문서화) - 설계 - 구현 - 테스트 - 유지보수
프로토타입 모형
- 개발 초기에 시스템의 프로토타입(원형, 모형)을 만들어 사용자가 직접 사용하게 함으로써, 사용자가 만족할 때까지 프로토타입을 재구축하며 시스템을 개선하는 방식
- 장점: 사용자의 요구사항 변경을 반영할 수 있음, 오류를 초기에 발견할 수 있음
- 단점: 프로토타입을 개발하며 비용이나 시간 등을 낭비하게 됨
- 요구분석 - 프로토타입 설계 - 프로토타입 개발 - 고객평가
나선형 모형
- 고객과의 소통을 통하여 일정 단계를 반복하며 소프트웨어를 개발하는 방식, 대규모 시스템에 적합
- 장점: 복잡해지고 있는 소프트웨어 개발 환경에 위험 요소를 분석하고 해결할 수 있도록 지원, 추가 요구사항 반영 가능, 별도의 유지보수 과정이 필요하지 않음
- 단점: 비용이 많이 필요함
- (계획수립 - 위험분석 - 개발 - 고객평가) 반복
애자일(Agile)
- 고객 만족에 초점을 맞추고 요구사항에 우선순위를 부여하여 진행하는 방식, 소규모 시스템에 적합
- 핵심가치
- 개인과 개인 간의 상호작용
- 작동하는 소프트웨어
- 고객과의 협업
- 변화 대응
요구사항
요구사항의 개념
- 문제를 해결하기 위해 제공하는 서비스에 대한 설명 및 해당 서비스가 정상적으로 운영되기 위한 제약 조건
- 개발하고자 하는 소프트웨어의 전반적인 내용
- 소프트웨어 개발 및 유지보수 단계의 기준 & 근거, 개발자들의 의사소통을 원활하게 함
요구사항의 유형
- 기술 내용을 기준으로
- 기능 요구사항: 시스템이 어떤 기능을 수행하고, 사용자에게 무엇을 제공하는가
- 비기능 요구사항: 장비(하드웨어, 소프트웨어), 성능(처리량, 처리속도), 인터페이스, 데이터, 테스트, 보안, 품질 등
- 기술 관점과 대상의 범위를 기준으로
- 시스템 요구사항: 개발자 관점, 시스템 전체
- 사용자 요구사항: 사용자 관점
요구사항 개발 프로세스
요구 공학의 일부
- 도출(수집)
- 개발자와 사용자 간 의사소통을 통해 요구사항을 도출하는 과정
- 개발의 모든 단계에 걸쳐 진행됨
- 방법: 인터뷰, 설문, 워크샵, 브레인스토밍 등
- 분석
- 수집한 요구사항들의 명확성, 타당성을 검토
- 비용, 일정, 개발 범위 등 설정
- 기법
- 요구사항 분류: 기능/비기능, 제품/개발과정, 우선순위, 영향력, 변경여부
- 개념 모델링: 요구사항을 단순화, 개념화
- 요구사항 할당
- 요구사항 협상
- 정형분석: 구문과 의미를 갖는 정형화된 언어를 이용해 요구사항을 수학적 기호로 나타낸 다음 분석
- 명세(문서화)
- 요구사항을 이해하기 쉽고 명확하게 기술
- 확인
- 요구사항이 정확하게 작성되었는지 검토
- 요구되는 지식: 산업 분야, 프로젝트 환경, 업무 특성, 요구공학, 소프트웨어, 통계학 등에 대한 이해
- 요구되는 기술: Use Case 작성 능력, UML 작성 기술, 분석 자동화 도구 및 요구사항 관리 도구 사용 능력, 리뷰 진행 능력 등
- 기법
- 요구사항 검토: 명확하지 않거나, 잘못된 가정을 바탕으로 하거나, 기준을 벗어났는지 등 확인
- 프로토타이핑: 요구사항을 바탕으로 모형을 제작
- 모델 검증: 요구사항 모델이 요구사항을 제대로 충족하는지 확인
- 인수 테스트: 사용자 입장에서 요구사항이 모두 충족되었는지 확인
UML(Unified Modeling Language)
사용자와 개발자 사이 의사소통을 원활하게 하기 위한, 표준화된 객체 지향적인 모델링 언어
국제 표준화 기구 OMG에 의해 표준으로 지정됨
사물
- 모델을 구성하는 기본 요소, 관계가 형성될 수 있는 대상
이름 개념 예시 행동 사물 시간, 공간에 따라 변하는 사물 상호작용, 상태 머신 등 그룹 사물 그룹으로 나타내는 사물 패키지 등 구조 사물 시스템의 개념적, 물리적 표현 클래스, 유즈 케이스, 컴포넌트, 노드 등 주해 사물 주석, 부가적 설명을 표현하는 사물 노트
관계
- 사물과 사물 사이의 연관성
이름 개념 표현 연관 관계 사물과 사물 사이 연관이 있음을 나타냄 실선(방향이 존재하는 경우 화살표도 사용, 양방향인 경우는 생략) 집합 관계 하나의 사물이 다른 사물에 속해있음을 나타냄 더 큰 개념에 비어있는 마름모◇ 포함 관계 하나의 사물이 특정 사물에만 속해있음을 나타냄 더 큰 개념에 채워진 마름모◆ 일반화 관계 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지 나타냄 부모 노드 쪽으로 비어있는 삼각형△ 의존 관계 특정 기간에만 유지되는 관계임을 나타냄 점선+화살표 실체화 관계 그룹화가 가능한 관계임을 나타냄 점선+부모 노드 쪽으로 비어있는 삼각형△
다이어그램
- 사물과 관계를 도형을 사용해 나타낸 것
- 구조적 다이어그램(정적 모델링)
- 클래스, 객체, 컴포넌트, 배치, 복합체 구조, 패키지
- 행위 다이어그램(동적 모델링)
- 유즈 케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 상호작용 개요, 타이밍
요구사항 확인
분석모델에 대해 확인하고 현행 시스템에 대해 분석하는 것
현행 시스템 분석
- 개발하려는 소프트웨어가 현행 시스템에 적용할 수 있는지 확인하기 위함
- 지식: 산업 분야, 플랫폼, 프로젝트 환경, 가상화, 클라우드 등
- 플랫폼: 소프트웨어를 구동시키는데 쓰이는 하드웨어와 소프트웨어의 결합
- 기술: 환경분석, 운영체제, 저장장치, 네트워크, DBMS, 가상화 등
- 절차
- 시스템의 구성, 기능, 인터페이스 파악
- 아키텍처(기술 요소) 및 소프트웨어(제품명, 용도, 라이센스 등) 구성 파악
- 하드웨어 및 네트워크(서버) 구성 파악
운영체제 분석
- 운영체제(Operating System): 하드웨어와 소프트웨어 자원을 관리하는 시스템
- 종류: 유닉스(대형 서버), 리눅스(중/대형 서버), 마이크로소프트 윈도우(개인 pc), IOS, 안드로이드 등
- 운영체제 분석: 운영체제의 종류, 버전 등을 분석
네트워크 분석
- 네트워크(Network): 디지털 전기통신망, 분산되어 있는 컴퓨터를 통신망으로 연결한 것
- OSI(Open System Interconnection) 7계층: 물리 - 데이터링크 - 네트워크 - 전송 - 세션 - 표현 - 응용
- 네트워크 분석: 네트워크 구조 및 사내 인터넷 데이터 센터 분석, 네트워크 구성도 작성
- 네트워크 구성도: 서버의 위치, 서버 간의 네트워크 연결 방식 등의 정보를 포함
DBMS 분석
- DBMS(Data Base Management System): 데이터베이스의 생성, 조회, 변경 등을 관리하는 시스템
- 데이터베이스의 기능: 중복성 통제, 데이터 공유, 데이터 접근 통제, 인터페이스 제공, 관련성 표현, 무결성 보장
- DBMS 분석: 논리/물리 테이블의 구조(정규화 정도, 조인의 난이도 등) 파악
비즈니스 융합 분석
- 비즈니스(Business): 영리를 목적으로 하는 모든 활동
- 비즈니스 융합: 비즈니스 모델의 적용 범위를 확대한 것
- 유형: 제품 융합, 서비스 융합, 제품과 IT 융합, 서비스와 IT 융합, 제품의 서비스화, 서비스의 제품화, 제품과 서비스 융합 등
- 비즈니스 융합 분석: 고객, 제품 및 서비스, 사업구조 분석
※ 강의 링크: https://inf.run/FkNC
'Computer Science > 정보처리기사' 카테고리의 다른 글
[필기] 제2과목 소프트웨어 개발 (2) 통합 구현 (0) | 2022.07.05 |
---|---|
[필기] 제2과목 소프트웨어 개발 (1) 데이터 입출력 구현 (0) | 2022.07.05 |
[필기] 제1과목 소프트웨어 설계 (4) 시스템 인터페이스 설계 (0) | 2022.07.03 |
[필기] 제1과목 소프트웨어 설계 (3) 애플리케이션 설계 (0) | 2022.07.03 |
[필기] 제1과목 소프트웨어 설계 (2) 화면 설계 (0) | 2022.06.24 |