반응형
소프트웨어 설계
- 소프트웨어 설계
- 개념
- 요구사항 명세서를 참조하여 소프트웨어의 구체적인 설계서를 작성하는 단계
- 종류 (CASE 도구의 상위 CASE, 하위 CASE 와 유사)
- 상위 설계 (분석, 설계 관련)
- 아키텍처 설계
- 데이터 설계
- 인터페이스 정의
- 사용자 인터페이스 설계
- 하위 설계 (구현 관련)
- 모듈 설계
- 자료구조 설계
- 알고리즘 설계
- 상위 설계 (분석, 설계 관련)
- 소프트웨어 설계의 원리
- 정보은닉(Information Hiding)
- 다른 객체에게 자신의 정보를 숨기고, 자신의 연산만을 통해 접근이 가능하도록 한다.
- 분할과 정복(Divide & Conquer)
- 규모가 큰 소프트웨어를 여러 개의 작은 서브시스템으로 나누어 하나씩 완성시킨다.
- 추상화(Abstraction)
- 실세계의 복잡한 상황을 간결하고 명확하게 핵심 위주로 단순화시킨다.
- 공통적인 요소를 뽑아서 하위 클래스에서 실제로 구현가능하도록 해야한다.
- 추상화 기법
- 과정 데이터
- 자료 데이터
- 제어 데이터
- 모듈화(Modulization)
- 실제로 개발할 수 있는 작은 단위로 나눈다.
- 단계적 분해(Stepwise Refinement)
- 기능을 점점 작은 단위로 나누어 점차적으로 구체화하는 방법
- 정보은닉(Information Hiding)
- 개념
- 설계 모델링
- 개념
- 소프트웨어를 구성하는 모듈들을 식별하고, 이것들의 연결을 그림으로 표현한 것.
- 설계 모델링 유형
- 구조 모델링
- 시스템의 구성 요소들과 이들 사이의 구조적인 관계와 특성들을 모델링
- UML 정적 다이어그램
- 행위 모델링
- 소프트웨어의 구성요소들이 언제 어떠한 순서로 기능을 수행해야 작용하는지를 모델링
- UML 동적 다이어그램
- 구조 모델링
- 소프트웨어 설계 절차 및 유형
- 협약에 의한 설계
- 클래스에 대한 여러 가정을 공유하도록 명세
- 조건 종류
- 선행 조건: 컴포넌트 오퍼레이션 사용 전에 참이 되어야 할 조건
- 결과 조건: 사용 후 만족되어야 할 결과 조건
- 불변 조건: 오퍼레이션이 실행되는 동안 항상 만족되어야 할 조건 (변하지 않는것)
- 협약에 의한 설계
- 개념
- 소프트웨어 아키텍쳐
- 개념
- 소프트웨어의 골격이 되는 기본 구조
- 시스템의 컴포넌트 사이의 관계를 정의한 구조
- 특징
- 간략성
- 추상화
- 가시성
- 관점 모형
- 의사소통수단
- 소프트웨어 아키텍처 4 + 1 뷰
- 개념
- 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법
- View 종류
- 유스케이스 뷰: 사용자 관점
- 논리 뷰: 기능적인 요구사항
- 프로세스 뷰: 전체적으로 돌아가는 것
- 구현 뷰: 개발 환경
- 배치 뷰: 물리적인 노드에 어떻게 배치되는 지
- 개념
- 소프트웨어 아키텍처 패턴
- 개념
- 소프트웨어 아키텍처의 공통적인 발생 문제에 ****대한 재사용 가능한 해결책
- 소프트웨어 아키텍처 패턴 종류
- 계층화 패턴(Layered Pattern)
- N-티어 아키텍처 패턴으로 부른다.
- 하위 모듈을 그룹으로 나눌 수 있는 구조화된 프로그램에서 사용
- 클라이언트-서버 패턴(Client-Server Pattern)
- 다수의 클라이언트와 하나의 서버로 구성
- 서버는 클라이언트에게 서비스를 제공하며 데이터를 관리하는 역할
- 마스터 슬레이브 패턴(Master-Slave Patter)
- 마스터 컴포넌트가 동등한 구조의 슬레이브 컴포넌트로 작업을 분산하고, 슬레이브가 결과값을 반환하면 최종 결과값을 계산하는 구조
- 클라이언트-서버 패턴과의 차이
- 마스터 슬레이브 패턴의 슬레이브는 결과값을 전달받기만 하고 아무런 영향을 끼칠 수 없다.
- 파이프-필터 패턴(Pipe-Filter Pattern)
- 컨베이어 벨트 시스템과 유사
- 서브시스템이 입력데이터를 받아 처리하고, 결과를 다음 서브시스템으로 넘겨주는 과정을 반복
- 브로커 패턴(Broker Pattern)
- 분리된 컴포넌트로 구성된 분산 시스템에서 사용되는 패턴
- 분산 처리기가 중간에 있다.
- 피어 투 피어 패턴(Peer to Peer pattern)
- 피어라 부르는 각 컴포넌트 간에 서비스를 주고받는 패턴
- 이벤트-버스 패턴(Event-Bus Pattern)
- 이벤트 버스를 통해 특정 채널로 메시지를 발행
- 리스너가 구독한 채널에 소스가 서비스를 제공하면 채널이 리스너에게 서비스를 제공
- 모델-뷰-컨트롤러 패턴(MVC Pattern, Model-View-Controller Pattern)
- 3개의 각 컴포넌트는 각자의 역할을 갖고 사용자에게 서비스를 제공
- 모델: DB 역할
- 뷰: 화면단
- 컨트롤러: 로직
- 블랙보드 패턴(Blackboard Pattern)
- 명확히 정의된 해결 전략이 알려지지 않은 문제에 대해서 유용한 패턴
- 인터프리터 패턴(Interpreter Pattern)
- 특정 언어로 작성된 프로그램을 해석하는 컴포넌트를 설계할 때 사용되는 패턴
- 계층화 패턴(Layered Pattern)
- 개념
- 개념
UML (Unified Modeling Language)
- UML
- 개념
- 프로그램 설계를 표현하기 위해 사용하는 표기법
- 시스템 개발 과정에서 이해관계자 사이에 의사소통을 원활하게 하기 위한 표준화된 모델링 언어
- 프로그램 언어가 아닌 기호와 도식을 이용하여 표현하는 방법을 정의한다.
- UML의 특징
- 가시화 언어: 소프트웨어의 개념 모델을 시각적인 그래핑 형태로 작성
- 구축 언어: 명세화된 설계모델은 다양한 언어의 소스코드로 변환하여 구축 가능
- 명세화 언어: 분석, 설계, 구현 단계의 각 과정에서 필요한 모델을 명세화할 수 있는 언어
- 문서화 언어: 일련의 과정을 문서로 남겨 계속 유지 보수한다.
- UML의 구성요소
- 사물(Thing)
- 구조사물: 시스템의 개념적, 물리적 요소
- 행동사물: 시간과 공간에 따른 요소들의 행위
- 그룹사물: 요소들을 그룹으로 묶은 것
- 주해사물: 부가적 설명이나 제약조건
- 관계
- 일반화관계:
- 상속관계
- 빈 화살표
- ㅡ▷
- 연관관계
- 2개 이상 사물이 서로 완전히 밀접한 관계
- 속찬 화살표
- ㅡ ➤
- 의존성관계
- 아주 잠시 의존되는 관계
- 그래서 연관관계 표기에서 실선이 점선으로 변경
-
-
-
-
- ➤
-
-
-
-
- 집합관계
- 집합-집약 관계
- 한 객체가 다른 객체를 소유하는 has a 관계
- 전체 객체의 라이프타임과 부분 객체의 라이프타임은 독립적
- 전체 객체가 사라진다 해도 부분 객체는 사라지지 않음
- ㅡ ◊
- 집합-합성 관계
- 부분 객체가 전체 객체에 속하는 관계
- 전체 객체가 없어지면 부분 객체도 없어짐
- ㅡ ◆
- 집합-집약 관계
- 실체화관계
- 인터페이스를 구현받아 추상 메서드를 오버라이딩하는 것을 의미
- 한 객체가 다른 객체에게 오퍼레이션을 수행하도록 지정
-
-
-
-
-
- -▷
-
-
-
-
- 일반화관계:
- 다이어그램
- 구조 다이어그램
- 클래스 다이어그램
- 클래스의 속성과 클래스 사이의 관계를 표현
- 자기만의 속성과 일정한 행동으로 구성
- 접근 제한자 표기법
- Private(-): 해당 클래스 내에서만 접근 가능
- Protected(#): 상속, 동일 패키지 내에서만 접근 가능
- Public(+): 어디서든 접근 가능
- Default(): 아무것도 안붙임
- 객체 다이어그램
- 클래스에 속한 객체(인스턴스)를 특정 시점의 객체와 객체 사이의 관계로 표현
- 컴포넌트 다이어그램
- 컴포넌트 사이 관계나 인터페이스를 표현
- 배치 다이어그램
- 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
- 복합체 다이어그램
- 클래스나 컴포넌트가 복합구조를 가질 시 그 내부 구조를 표현
- 패키지 다이어그램
- 유스케이스나 클래스 등 모델 요소들을 그룹화한 패키지들의 관계 표현
- 클래스 다이어그램
- 행위 다이어그램
- 유스케이스 다이어그램
- 사용자의 요구를 분석하여 기능 모델링 작업에 사용됨
- 시스템과 사용자의 상호작용을 다이어그램으로 표현
- 구성요소
- 시스템: 만들고자 하는 프로그램 명칭
- 액터: 시스템의 외부에 있고 시스템과 상호작용을 하는 사람 또는 시스템
- 유스케이스: 사용자 입장에서 바라본 시스템의 기능
- ex) 글 작성, 로그인 등
- 관계: 액터와 유스케이스 사이의 의미있는 관계
- 유스케이스 다이어그램 관계
- 연관관계
- 유스케이스와 액터 간의 상호작용이 있음을 표현
- 유스케이스와 액터를 실선으로 표현
- 포함관계
- 유스케이스를 수행할 때 반드시 실행되어야 하는 경우
- <<include>>
- 확장관계
- 유스케이스를 수행할 때 특정 조건에 따라 확장 기능 유스케이스를 수행하는 경우
- <<extend>>
- 일반화 관계
- 유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스
- 연관관계
- 시퀀스 다이어그램
- 특정 행동이 어떠한 순서로 어떤 객체와 상호작용하는지 표현
- 객체 간의 상호작용 메시지 시퀀스를 시간의 흐름에 따라 나타낸 다이어그램
- 커뮤니케이션 다이어그램
- 동작에 참여한 객체들이 주고받는 메시지와 객체 간 연관까지 표현
- 상태 다이어그램
- 객체가 자신이 속한 클래스의 상태 변화 및 다른 객체 간 상호작용에 따라 상태 변화 표현
- 활동 다이어그램
- 시스템이 어떤 기능을 수행하는지에 따라 객체 처리 로직이나 조건에 따라 처리 흐름을 순서에 따라 표현
- 타이밍 다이어그램
- 객체 상태 변화와 시간 제약을 명시적으로 표현
- 유스케이스 다이어그램
- 구조 다이어그램
- 사물(Thing)
- 개념
화면 설계
- UI(User Interface)
- UI 개념
- 컴퓨터, 웹 사이트, 시스템 등의 정보기기와 사용자가 서로 상호작용을 할 수 있도록 연결해주는 매개체
- UX 개념
- 사용자가 컴퓨터, 웹 사이트, 시스템 등 정보기기의 UI를 직/간접적으로 이용하여 경험한 모든 것
- UI 유형
- CLI(Command Line Interface)
- 컴퓨터 자판을 이용해 명령을 입력하는 시스템
- GUI(Graphical User Interface)
- 사용자의 입력이나 출력을 마우스 등을 통한 시스템
- NUI(Natural User Interface)
- 특별한 하드웨어 없이 인간의 자연스러운 움직임을 인식하여 정보를 제공 (터치, 음성)
- OUI(Organic User Interface)
- 현실의 모든 것이 입출력 장치가 됨
- 미래기술
- AUI(Auditory User Interface)
- 보다 나은 사용자 경험을 제공하기 위해 만들어진 임베디드 사운드 (음성)
- CLI(Command Line Interface)
- UI 개념
- UI 설계
- UI 요구사항 구분
- 기능적 요구사항
- 시스템이 제공해야 하는 기능에 대한 요구사항
- 비기능적 요구사항
- 사용성, 효율성, 신뢰성, 유지 보수성, 재사용성 등 품질에 관한 요구사항
- 기능적 요구사항
- UI 설계 원칙
- 직관성: 누구나 쉽게 이해할 수 있어야 함
- 유연성: 사용자의 요구사항을 최대한 수용해야한다.
- 학습성: 누구나 배우기 쉬워야 함
- 유효성: 사용자의 목적을 정확하게 달성해야 함
- UI 설계 도구
- 와이어 프레임: 선으로 틀을 잡는다는 뜻
- 스토리보드: 개발 후 완성된 콘텐츠의 최종 결과를 예상할 수 있는 기초 문서
- 프로토타입: 실제 서비스와 흡사한 모형을 만드는 작업
- 목업: 와이어프레임보다 좀 더 실제 화면과 유사하게 만든 정적인 형태의 모형
- 유스케이스: 사용자 측면의 요구사항, 다이어그램 형태로 제작
- UI 요구사항 구분
- 감성 공학
- 개념
- 인간의 심상을 구체적인 물리적 설계 요소로 번역하여 이를 실현하는 기술
- 구분
- 감각적 감성: 제품에 관해 사용자가 느끼는 감성
- 기능적 감성: 제품의 성능과 사용 시 편리함에 대한 것
- 문화적 감성: 개인이 속한 사회, 문화에 관련
- 접근 방법
- 1류 접근 방법: 인간의 어휘를 이용해 제품에 대한 이미지 조사 후 디자인 요소와 연계
- 2류 접근 방법: 문화적 감성을 일부 반영한 개념
- 3류 접근 방법: 특정 시제품을 사용해 감각 척도를 계측하고 정량화된 값을 환산
- 개념
- 화면 레이아웃 구성
- 레이아웃의 개념
- 특정 공간에 여러 구성 요소를 보기 좋게 효과적으로 배치하는 작업
- HTML5
- World Wide Web을 통해 제공되는 정보를 나타낼 목적으로 사용되는 마크업 언어
- CSS
- Cascading Style Sheet로 HTML과 함께 웹을 구성하는 기본 프로그래밍 요소
- JavaScript
- 이벤트 중심의 프로그래밍 언어
- 레이아웃의 개념
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 소프트웨어 구축 (4) (0) | 2023.07.05 |
---|---|
[정보처리기사] 소프트웨어 구축 (3) (0) | 2023.07.04 |
[정보처리기사] 소프트웨어 구축 (1) (0) | 2023.07.04 |
[정보처리기사] 프로그램 언어 특성 (0) | 2023.07.03 |
[정보처리기사] 알고리즘 표현 방법 및 변수 표기법 (0) | 2023.07.03 |