[정보처리기사] 1과목 - 소프트웨어 설계(1)
요구사항 확인
소프트웨어 생명 주기(Life Cycle)
- SW를 개발하기 위해 정의하고 운용 유지보수 등의 과정을 각 단계별로 나눈 것
1. 폭포수 모델(Waterfall Model)
- 이전 단계를 확실히 마무리하고 다음 단계로 진행하는 개발 방법론(선형 순차적 모델)
- 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 시험 -> 유지/보수
2. 프로토 타입 모델(Prototype Model)
- 요구 사항을 정확히 파악하기 위해 실제 개발된 sw에 대한 시제품을 만들어 최종 결과물을 예측하는 모델
- 사용자와 시스템 사이 인터페이스에 중점
- ( 요구사항 수집 - 빠른 설계 - 프로토타입 구축 - 평가 - 조정 - 구현) 단계를 반복
3. 나선형 모델(Spiral Model)
- 폭포수 모형과 프로토타입 모형 장점에 위험 분석 기능을 추가
- 여러 번의 개발 과정을 거쳐 점진적으로 완벽한 최종 SW 개발
- SW를 개발하면서 발생할 수 있는 위험을 관리하고 최소화
- (계획 - 위험 분석 - 개발 - 평가) 단계를 반복
4. 애자일 모형
- 고객과 소통에 초점을 맞춘 모든 방법론
- 스프린트 또는 이터레이션이라 불리는 짧은 개발 주기를 반복
- 요구사항에 우선순위를 부여하여 개발 진행
- 애자일 기반 모형: 스크럼(Scrum), XP(eXtreme Programming), 칸반(Kanban), Lean, 크리스탈, ASD 등
+) 애자일 개발 4가지 핵심 가치
1. 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.
2. 방대한 문서보다는 실행되는 SW에 더 가치를 둔다.
3. 계약 협상보다는 고객과 협업에 더 가치를 둔다.
4. 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.
스크럼(Scrum) 기법
- 팀이 중심이 되어 개발 효율을 높임.
구성 요소
제품 책임자(PO, Product Owner)
- 개발될 제품에 대한 이해도가 높고 요구사항을 책임지고 의사결정할 사람
- 개발 의뢰자나 사용자가 담당
- 이해 관계자들의 의견을 종합하여 제품에 대한 요구사항 작성
- 백로그 작성(팀원들은 백로그에 스토리 추가는 가능, 우선순위 지정은 책임자만 가능)
* 백로그: 제품 개발에 필요한 요구사항을 모두 모아 우선순위를 부여한 목록
* 스토리: 백로그에 작성되는 요구사항
스크럼 마스터(SM, Scrum Master)
- 팀이 잘 수행할 수 있도록 객관적인 시각에서 조언
- 일일 스크럼 회의를 주관하여 진행 상황을 점검하고 개발과정에서 발생된 장애 요소를 공론화하여 처리
개발팀(DT, Development Team)
- PO와 SM을 제외한 모든 팀원
개발 프로세스
1. 제품 백로그(Product Backlog)
- 모든 요구사항을 우선순위에 따라 나열한 목록
- 사용된 스토리를 기반으로 전체 일정 계획(릴리즈 계획)을 수립
- 새롭게 도출되는 요구사항으로 인해 지속적 업데이트
2. 스프린트 계획회의(Sprint Planning Metting)
- 이번 스프린트에서 수행할 작업을 대상으로 단기 일정 수립
- 처리할 요구사항을 개발자들이 나눠 작업할 수 있도록 테스크라는 작업 단위로 나눠 개발자 별로 수행할 작업 목록인 스프린트 백로그(Sprint Backlog) 작성
3. 스프린트(Sprint)
- 실제 개발 작업 진행
- 스프린트 백로그 테스크 대상으로 작업 시간, 양을 추정 후 할당
- 할당 된 테스크는 할 일, 진행 중, 완료의 상태로 표현
4. 일일 스크럼 회의(Daily Scrum Meeting)
- 모든 팀원이 매일 약속된 시간에 진행 상황을 점검
- 스크럼 마스터는 장애 요소를 해결할 수 있도록 도와준다
- 남은 작업 시간은 소멸 차트에 표시
5. 스프린트 검토 회의(Sprint Review)
- 사용자가 포함된 참석자 앞에서 테스트 수행
6. 스프린트 회고(Sprint Retrospective)
- 정해놓은 규칙 준수 여부 확인, 개선할 부분 점검 및 수행
XP(eXtreme Programming) 기법
- 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
- 5대 핵심가치: 의사소통, 단순성, 용기, 존중, 피드백
개발 프로세스
사용자 스토리(User Story)
- 고객의 요구사항을 간단한 시나리오로 표현
릴리즈 계획 수립(Release Planning)
- 몇 개의 스토리가 적용되어 부분적 혹은 전체적으로 기능이 완료된 제품을 제공하는 것에 대한 계획 수립
스파이크(Spike)
- 요구사항의 신뢰성을 높이고 기술 문제에 대한 위험을 감소시키기 위해 별도로 만드는 프로그램
- 처리할 문제 외 다른 조건은 모두 무시하고 작성
주기(Iteration)
- 하나의 릴리즈를 더 세분화 한 단위
승인 검사(Acceptance Test)
- 하나의 이터레이션 안에서 계획된 릴리즈 단위의 부분 완료 제품이 구현되면 수행하는 테스트
소규모 릴리즈(Small Release)
- 고객의 반응을 기능별로 확인, 유연하게 대응 가능
주요 실천 방법
- pair programming: 다른 사람과 함께 프로그래밍
- test-driven development: 실제 코드 작성 전 테스트 케이스를 작성
- whole team: 개발에 참여하는 모든 구성원은 각기 역할이 있고 책임을 다해야 함
- continuous integration: 모듈 단위 개발 코드는 하나의 작업 마무리 시 지속적으로 통합
- design improvement/refactoring: 기능 변경 없이 시스템 재구성
- small release
현행 시스템 파악 절차
- 1단계: 시스템 구성 파악, 시스템 기능 파악, 시스템 인터페이스 파악
- 2단계: 아키텍처 구성 파악, SW 구성 파악
- 3단계: HW 구성 파악, 네트워크 구성 파악
개발 기술 환경 파악(요구사항 식별 시 고려사항)
- 운영체제(os): 가용성, 성능, 기술지원, 주변기기, 구축 비용
- 데이터베이스 관리 시스템(DBMS): 가용성, 성능, 기술 지원, 상호 호환성, 구축 비용
- 웹 어플리케이션 서버(WAS): 가용성, 성능, 기술 지원, 구축비용
요구사항
- SW가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약조건
유형
- 기술 기준: 기능/비기능 요구사항
- 기술 관점 및 대상의 범위 기준: 사용자/시스템(개발자 관점) 요구사항
+) 비기능 요구사항: 시스템 장비 구성, 성능, 인터페이스, 데이터, 테스트, 보안, 품질, 제약 사항, 프로젝트 관리, 프로젝트 지원 등
개발 프로세스
1. 요구사항 도출/수집(Requirement Elicitation)
- 요구사항이 어디에 있고 어떻게 수집할지 식별하고 이해하는 과정
- 주요 기법: 브레인 스토밍, 프로토타이핑, 유스케이스
2. 요구사항 분석(Requirement Analysis)
- 개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 걸러내기 위한 과정
- 사용자 요구사항의 타당성을 조사하고 비용과 일정에 대한 제약 설정
3. 요구사항 명세(Requirement Specification, 요구사항 문서화)
- 요구사항을 체계적으로 분석한 후 승인될 수 있도록 문서화
- 소프트웨어 요구사항 명세서: SW가 반드시 제공할 기능, 특징 등
4. 요구사항 확인(Requirement Validation, 요구사항 검증)
- 개발 자원을 할당 전 명세서 검토
- 이해관계자가 검토
분석 기법
1. 요구사항 분류(Requirement Classification)
- 명확히 확인할 수 있는 정해진 기준으로 분류
- 기능/비기능, 제품/과정, 우선순위 등으로 분류
2. 개념모델링(Requirement Modeling)
- *모델을 만드는 과정
- 개체와 개체 간 관계 및 종속성 반영
- 주로 UML(Unified Modeling Language)을 사용
*모델: 현실 세계의 상황을 단순화하여 개념적으로 표현
3. 요구사항 할당(Requirement Allocation)
- 요구사항을 만족시키기 위한 구성 요소를 식별
4. 요구사항 협상(Requirement Negatiation)
- 요구사항이 충돌될 경우 해결하는 과정
5. 정형 분석(Formal Analysis)
- 구문과 의미를 갖는 정형화된 언어를 이용해 요구사항을 수학적 기호로 표현한 후 분석하는 과정
UML(Unified Modeling Language)
- 시스템 개발자와 고객 또는 개발자 상호간의 의사소통이 원활하게 이루어지도록 표준화한 객체지향 모델링 언어
- 사물, 관계, 다이어그램 등으로 구성
사물(Things)
- 모델을 구성하는 가장 중요한 기본 요소
- 다이어그램 안에서 관계가 형성될 수 있는 대상들을 의미
- 구조 사물: 시스템 개념적, 물리적 요소를 표현 / 클래스, 유즈케이스, 컴포넌트, 노드 등
- 행동 사물: 시간과 공간에 따른 요소들의 행위 표현 / 상호 작용, 상태 머신 등
- 그룹 사물: 요소들을 그룹으로 묶어 표현 / 패키지
- 주해 사물: 부가적 설명이나 제약조건 등을 표현 / 노트
관계(Relationship)
- 사물과 사물 사이의 연관성을 표현
- 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계, 실체화 관계 등
다이어그램(Diagram)
- 사물과 관계를 도형으로 표현
- 정적 모델링은 주로 구조적 다이어그램으로 동적 모델링은 주로 행위 다이어그램으로 표현
- 구조적 다이어그램: 클래스 다이어그램, 객체 다이어그램, 컴포넌트 다이어그램, 배치 다이어그램, 복합체 구조 다이어그램, 패키지 다이어그램
- 행위 다이어그램: 유즈케이스, 시퀀스 다이어그램, 커뮤니케이션 다이어그램, 스테이트 다이어그램, 액티비티 다이어그램, 상호작용 개요 다이어그램, 타이밍 다이어그램
화면 설계
사용자 인터페이스(User Interface)
- 사용자와 시스템 간의 상호작용을 도와주는 장치 또는 SW
- 기본 원칙: 직관성, 유연성, 학습성, 유효성
- 설계 지침: 사용자 중심, 일관성, 단순성, 결과 예측 가능, 가시성, 표준화, 접근성, 명확성, 오류 발생 해결 등
- CLI(Command Line Interface): 명령어 출력이 텍스트 형태
GUI(Graphical User Interface): 아이콘이나 메뉴를 마우스로 선택
NUI(Natural User Interface): 사용자의 말이나 행동으로 조작
UI 표준 및 지침
- UI 표준 및 지침을 토대로 웹 3요소(웹 표준, 웹 접근성, 웹 호환성)가 고려되었는지 확인한다.
한국형 웹 콘텐츠 접근성 지침(KWCAG)
- 장애인과 비장애인이 동등하게 접근할 수 있는 웹 콘텐츠 제작의 방법 제시
- 인식의 용이성: 대체 텍스트, 멀티미디어 대체 수단, 명료성
- 운용의 용이성: 키보드 접근성, 충분한 시간 제공, 광과민성 발작 예방, 쉬운 *네비게이션
- 이해의 용이성: 가독성, 예측 가능성, 콘텐츠의 논리성, 입력 도움
- 견고성: 문법 준수, 접근성
* 네비게이션: 사용자가 사이트에서 원하는 정보를 빠르게 찾도록 도와주는 장치
전자정보 웹 표준 준수 지침
- 정부기관의 홈페이지 구축 시 반영해야 할 최소한의 규약
- 내용 문법 준수, 내용과 표현의 분리, 동작의 기술 중립성 보장, 플러그인의 호환성, 콘텐츠의 보편적 표현, 운영체제에 독립적인 콘텐츠 제공, 부가 기능의 호환성 확보, 다양한 프로그램 제공
UI 설계 도구
- 사용자의 요구사항에 맞게 UI의 화면 구조나 화면 배치 등을 설계할 때 사용하는 도구
- 와이어프레임, 목업, 스토리보드, 프로토타입, 유즈케이스 등
UI 요구사항 확인
- 목표 정의 -> 활동 사항 정의 -> UI 요구사항 작성
1. 목표 정의
- 사용자들을 대상으로 인터뷰를 진행 후 사용자들의 의견이 수렴된 비즈니스 요구사항을 정의
2. 활동 사항 정의
- 조사한 요구사항을 토대로 할 일 정의
3. UI 요구사항 작성
- 요구사항 요소 확인 -> 정황 시나리오 작성 -> 요구사항 작성
- 정황 시나리오 작성: 요구사항을 도출하기 위해 작성하는 것으로 사용자가 수행하는 방법을 순차적으로 묘사
품질 요구사항
- SW 기능, 성능, 만족도 등 SW에 대한 요구사항이 얼마나 충족하는가를 나타내는 SW 특성의 총체
- ISO/IEC 9126: SW 품질 특성(기능성, 신뢰성, 사용성, 효율성, 유지 보수성, 이식성)과 평가를 위한 표준 지침.
UI 프로토타입 제작 및 검토
- 사용자 요구사항을 기반으로 실제 동작하는 것처럼 만든 동적인 형태의 모형
- 최대한 간단하게 제작(일부 핵심 기능 제공)
- 실제 사용자를 대상으로 테스트
- 장점: 사용자 설득 및 이해 용이, 요구사항 점검을 통한 혼선 예방, 사전 오류 검출 가능
- 단점: 반복적인 개선 및 보완 작업으로 인한 작업 시간 증가, 필요 이상으로 자원 소모, 중요 작업 생략 가능
- 종류: 페이퍼 프로토타입, 디지털 프로토타입
- 제작 단계: 요구사항 분석 -> 핵심 기능 중점 개발 -> *(사용자 테스트 -> 프로토 타입 기반 수정 및 합의)
* (사용자 테스트 -> 프로토 타입 기반 수정 및 합의) 단계를 사용자가 승인할 때까지 반복한다.
UI 설계서
- 사용자 요구사항을 바탕으로 UI 설계를 구체화 해 작성하는 문서
- 표지 작성 -> 개정 이력 작성 -> 요구사항 정의서 작성 -> 시스템 구조 작성 -> 사이트 맵 작성 -> 프로세스 정의서 작성 -> 화면 설계
HCI(Human Computer Interaction or Interface)
- 사람이 시스템을 보다 편리하고 안전하게 사용할 수 있도록 연구하고 개발하는 학문
UX(User Experience)
- 사용자가 시스템이나 서비스를 이용하면서 느끼고 생각하게 되는 총체적인 경험
- 특징: 주관성, 정황성, 총체성
감성공학
- 제품이나 작업환경을 사용자의 감성에 맞도록 설계 제작
참고 자료
https://1d1cblog.tistory.com/141