[TIL/정보처리기사] 2023/11/10
1과목: 소프트웨어 설계 🔴 1장: 요구사항 확인 🟠 1장-7: 요구사항 분석 🟡 1장-7-1: 요구사항 분석의 개요 🟢 1장-7-2: 구조적 분석 기법 🟢 1장-7-3: 자료 흐름도(DFD) 🟢 1장-7-4: 자료 사전 🟢 1장-8: 요구사항
1과목: 소프트웨어 설계 🔴
1장: 요구사항 확인 🟠
1장-7: 요구사항 분석 🟡
#### 1장-7-1: 요구사항 분석의 개요 🟢
a) 소프트웨어 개발의 실제적인 첫 단계로, 개발 대상에 대한 사용자의 요구사항을 이해하고 문서화(명세화)하는 활동을 의미한다.(개발 비용이 가장 많이 소요되는 단계 X, 유지보수 단계에 해당한다.)
b) 사용자의 요구를 정확하게 추출하여 목표를 정하고, 어떤 방식으로 해결할 것인지를 결정한다.
c) 요구사항 분석을 통한 결과는 정확하고 일관성 있게 분석하여 문서화해야 한다.(향후 유지보수 단계에서 유용하게 활용할 수 있다.)
d) 사용되는 도구 UML(Unified Modeling Language), 자료 흐름도(DFD), 자료 사전(DD), 소단위 명세서(Mini-Spec), 개체 관계도(E-R Diagram, ERD), 상태 전이도(STD), 제어 명세서 등 ->(AVL Diagram X, Phase Diagram X)
#### 1장-7-2: 구조적 분석 기법 🟢
최근 10회 출제 X
#### 1장-7-3: 자료 흐름도(DFD) 🟢
a) 요구사항 분석에서 자료의 흐름 및 변환 과정과 기능을(시간 흐름을 명확하게 표현할 수 있다 X) 도형 중심으로 기술하는 방법으로, 버블 차트라고도 한다.
b) 자료 흐름과 처리를 중심으로 하는 구조적 분석 기법에 이용된다.
c) 종류

d) 작성 지침
1. 자료 흐름은 처리(Process)를 거쳐 변환될 때마다 새로운 이름을 부여한다.
2. 어떤 처리(Process)가 출력 자료를 산출하기 위해서는 반드시 입력 자료가 발생해야 한다.
3. 상위 단계의 처리(Process)와 하위 자료 흐름도의 자료 흐름은 서로 일치되어야 한다.
4. 입력 화살표가 있다고 하여 반드시 출력 화살표가 있어야 하는 것은 아니다.
#### 1장-7-4: 자료 사전 🟢
a) 자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것으로, 이처럼 데이터를 설명하는 데이터를 데이터의 데이터 또는 메타 데이터라고 한다.
b) 표시 기호 종류 자료의 정의(=), 자료의 연결(+), 자료의 생략(()), 자료의 선택([]), 자료의 반복({}), 자료의 설명( )
1장-8: 요구사항 분석 CASE와 HIPO 🟡
#### 1장-8-1: 요구사항 분석을 위한 CASE(자동화 도구) 🟢
a) 종류 중 하나 SADT(Structured Analysis and Design Technique)
: SoftTech 사에서 개발한 것으로 시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위해 널리 이용되어 온 구조적 분석 및 설계 도구이다.
: 구조적 요구 분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구이다.
#### 1장-8-2: HIPO 🟢
a) Hierarchy Input Process Output은 시스템의 분석 및 설계나 문서화할 때 사용되는 기법으로, 시스템 실행 과정인 입력, 처리, 출력의 기능을 나타낸다.
b) 기본 시스템 모델은 입력, 처리, 출력으로 구성되며, 하향식 소프트웨어 개발을 위한 문서화 도구이다.
c) 기호, 도표 등을 사용하므로 보기 쉽고 이해하기도 쉽다.
d) 기능과 자료의 의존 관계를 동시에 표현할 수 있다.
e) HIPO Chart의 종류
: 가시적 도표(Visual Table of Contents), 시스템의 전체적인 기능과 흐름을 보여주는 계층(Tree) 구조도, 도식 목차라고도 한다.
: 총체적 도표(Overview Diagram), 입력, 처리, 출력에 대한 전반적인 정보를 제공하는 도표, 총괄도표, 개요 도표라고도 한다.
: 세부적 도표(Detail Diagram), 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술하는 도표, 상세 도표라고도 한다.
1장-9: UML(Unified Modeling Language) 🟡
#### 1장-9-1: UML(Unified Modeling Language)의 개요 🟢
a) 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어이다.
b) 구성 요소에는 사물, 관계, 다이어그램 등이 있다.(Terminal X)
#### 1장-9-2: 사물(Things) 🟢
a) 모델을 구성하는 가장 중요한 기본 요소로, 다이어그램 안에서 관계가 형성될 수 있는 대상들을 말한다.
b) 종류 구조 사물(Structural Things), 행동 사물(Behavioral Things), 그룹 사물(Grouping Things), 주해 사물(Annotation Things) (Internet of Things X)
#### 1장-9-3: 관계(Relationships) 🟢
a) 의존(Dependency) 관계 : 사물 사이에 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계를 표현한다. : 일반적으로 한 클래스가 다른 클래스를 오퍼레이션의 매개 변수로 사용하는 경우에 나타나는 관계이다.
b) 실체화(Realization) 관계 : 사물이 할 수 있거나 해야 하는 기능(오퍼레이션, 인터페이스)으로 서로를 그룹화 할 수 있는 관계를 표현한다. :한 사물이 다른 사물에게 오퍼레이션을 수행하도록 지정하는 의미적 관계이다.
c) 일반화(Generalization) 관계 : 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현한다. : 예를 들어 차는 버스, 트럭, 택시보다 일반적인 개념이고 반대로 버스, 트럭, 택시는 차보다 구체적인 개념이다.
#### 1장-9-4: 다이어그램(Diagram)🟢
a) 구조적(정적) 다이어그램의 종류
: 클래스 다이어그램
: 객체(Object) 다이어그램
: 컴포넌트 다이어그램
: 배치(Deployment) 다이어그램
: 복합체 구조(Composite Structure) 다이어그램
: 패키지 다이어그램
b) 행위(동적) 다이어그램의 종류
: 유스케이스 다이어그램
: 순차(Sequence) 다이어그램
: 커뮤니케이션 다이어그램
: 상태(State) 다이어그램
1. 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현한다.
2. 객체들 사이에서 발생하는 이벤트(event)에 의한 객체들의 상태 변화를 그림으로 표현한다.
3. 럼바우(Rumbaugh) 객체지향 분석 기법에서 동적 모델링에 활용된다.
: 활동(Activity) 다이어그램
1. 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현한다.
2. 오퍼레이션이나 처리 과정이 수행되는 동안 일어나는 일들을 단계적으로 표현한다.
: 상호작용 개요(Interaction Overview) 다이어그램
: 타이밍 다이어그램
c) 스테레오 타입(Stereotype) : UML에서 표현하는 기본 기능 외애 추가적인 기능을 표현하기 위해 사용한다. : 길러멧(Guilemet)이라 부르는 겹화살괄호(≪≫) 사이에 표현할 형태를 기술한다.
1장-10: 주요 UML 다이어그램 🟡
#### 1장-10-1: 유스케이스(Use Case) 다이어그램 🟢
a) 사용자(개발자 X)의 요구사항을 분석하기 위한 도구로 사용된다.
b) 유스케이스 다이어그램의 구성요소
: 시스템 범위
: 액터 1. 시스템과 상호작용하는 모든 외부 요소, 사람이나 외부 시스템을 의미한다. 2. 주액터, 시스템을 사용함으로써 이득을 얻는 대상, 주로 사람이 해당한다. 3. 부액터(시스템 액터), 주액터의 목적 달성을 위해 시스템에 서비스를 제공하는 외부 시스템, 조직이나 기관 등이 될 수 있다.
: 유스케이스 액터가 인식할 수 없는 시스템 내부의 기능을 하나의 유스케이스로 파악해서는 안 된다.
: 관계 연관관계, 포함관계(특정 조건에 부합되어...O), 확장관계, 일반화 관계 (구체화 관계 X)
#### 1장-10-2: 클래스(Class) 다이어그램🟢
a) 시스템을 구성하는 클래스, 클래스의 특성인 속성과 오퍼레이션, 속성과 오퍼레이션에 대한 제약조건, 클래스 사이의 관계를 표현한 것이다.
b) 오퍼레이션은 클래스가 수행할 수 있는 동작으로, 함수(메소드, method)라고도 한다.
#### 1장-10-3: 순차(Sequence) 다이어그램🟢
a) 시스템이나 객체들이 메세지를 주고받으며 시간의 흐름에 따라 상호 작용하는 과정을 액터, 객체, 메세지 등의 요소를 사용하여 그림으로 표현한 것이다.
b) 교류 다이어그램(Interaction Diagram)의 한 종류로 볼 수 있다.
c) 순차 다이어그램에서 수직 방향은 시간의 흐름을 나타낸다.
d) 구성 요소 액터, 객체, 생명선, 실행 상자, 메세지, 회귀 메세지, 제어 블록 (확장 X)
2장: 화면 설계 🟠
2장-11: 사용자 인터페이스 🟡
#### 2장-11-1: 사용자 인터페이스(UI)의 개요 🟢
최근 10회 출제 X
#### 2장-11-2: 사용자 인터페이스(UI)의 특징 🟢
a) 사용자의 편리성과 가독성을 높임으로써 작업 시간을 단축시키고 업무에 대한 이해도를 높여준다.
b) 사용자 중심으로 설계되어 사용자 중심의 상호 작용이 되도록 한다.
#### 2장-11-3: 사용자 인터페이스(UI)의 구분 🟢
: CLI(Command Line Interface), 명령과 출력이 텍스트 형태로 이루어지는 인터페이스
: GUI(Graphical User Interface)
: NUI(Natural User Interface), 사용자의 말이나 행동으로 기기를 조작하는 인터페이스, 모바일 제스처를 활용한다.
: VUI(Voice User Interface)
: OUI(Organic User Interface)
#### 2장-11-4: 사용자 인터페이스(UI)의 기본 원칙 🟢
: 직관성, 누구나 쉽게 이해하고 사용할 수 있어야 한다.
: 유효성
: 학습성
: 유연성
#### 2장-11-5: 사용자 인터페이스(UI)의 설계 지침 🟢
: 사용자 중심, 사용자가 쉽게 이해하고 편리하게 사용할 수 있는 환경을 제공하며, 실사용자에 대한 이해가 바탕이 되어야 한다.
: 사용성, UI 설계시 가장 우선적으로 고려해야 한다.
: 일관성
: 단순성
: 결과 예측 가능
: 가시성, 메인 화면에 주요 기능을 노출시켜 최대한 조작이 쉽도록 설계해야 한다.
: 심미성
: 표준화
: 접근성, 사용자의 연령, 성별, 인종 등 다양한 계층이 사용할 수 있도록 설계해야 한다.
: 명확성
: 오류 발생 해결, 오류가 발생하면 사용자가 쉽게 인지할 수 있도록 설계해야 한다.(소리나 색의 사용을 줄이고...X)
#### 2장-11-6: 사용자 인터페이스(UI) 개발 시스템의 기능 🟢
1. 사용자의 입력을 검증할 수 있어야 한다.
2. 에러 처리와 그와 관련된 에러 메세지를 표시할 수 있어야 한다.
3. 도움과 프롬프트를 제공해야 한다.
(소스코드 분석 및 오류 복구 X)
2장-12: UI 설계 도구 🟡
#### 2장-12-1: UI 설계 도구 🟢
최근 10회 출제 X, 다만 '드림 위버'는 UI 설계에 사용되는 Tool이 아니다.
#### 2장-12-2: 와이어프레임(Wireframe) 🟢
a) 기획 단계의 초기에 제작하는 것으로, 페이지에 대한 개략적인 레이아웃이나 UI 요소 등에 대한 뼈대를 설계하는 단계이다.
#### 2장-12-3: 목업(Mockup) 🟢
a) 디자인, 사용 방법 설명, 평가 등을 위해 와이어프레임보다 좀 더 실제 화면과 유사하게 만든 정적인 형태의 모형이다.
b) 시각적으로만 구성 요소를 배치하는 것으로 실제로 구현되지는 않는다.
#### 2장-12-4: 스토리보드(Story Board) 🟢
a) 와이어프레임에 콘텐츠에 대한 설명, 페이지 간 이동 흐름 등을 추가한(=디스크립션) 문서이다.
b) 화면 설계도이며 구체적인 작업 지침서이다.
#### 2장-12-5: 프로토타입(Prototype) 🟢
a) 와이어프레임이나 스토리보드 등에 인터렉션을 적용함으로써 실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형이다.
#### 2장-12-6: 유스케이스(Use Case)🟢
a) 사용자 측면에서의 요구사항으로, 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술한다.
b) 사용자의 요구사항을 빠르게 파악함으로써 프로젝트 초기에 시스템의 기능적인 요구를 결정하고 그 결과를 문서화할 수 있다.
c) 자연어로 작성된 사용자의 요구사항을 구조적으로 표현한 것으로, 일반적으로 다이어그램 형식으로 묘사된다.
More to read
Amazon VPC Architecture 이해하기
새로운 프로젝트를 기획하며, 개발에서 무엇을 가장 먼저 고민해야 하는지 다시 돌아보게 되었습니다.한때는 프론트엔드가 모든 설계의 출발점이라고 믿었습니다. 유저가 무엇을 보고, 어떤 흐름에서 머무르고 이탈하는지에 대한 이해 없이 서비스를 만든다는 건 불가능하다고 생각했기
'원사이트'프론트엔드 관점으로 알고리즘 이해하기
오랜만에 방법론에 관한 글을 쓰게 되었습니다. 최근 상황은 이렇습니다. SSAFY에서는 하루에 엄청난 양의 알고리즘 문제들을 과제로 수행하게 됩니다. 그 과정에서, '구현력'이 매우 떨어진다는 생각이 들었습니다. 완전히 어려운 문제라면 '아쉬움'이라는 감정조차 느끼지
SubnetVPC 설계의 시작: IP와 Subnet
반복되는 루틴 속에서 얻은 안정감을 발판 삼아, 이제는 기술적 스펙트럼을 넓히기 위한 개인 프로젝트에 착수하고자 합니다.이번 프로젝트의 목표는 단순한 포트폴리오 구축을 넘어, 실제 서비스 수준의 블로그 시스템 구현과 다국어 처리 적용 등 실무에 가까운 역량을 한 단계