- 소프트웨어 아키텍처
- 개발 환경 구축
- 개발 환경 구축 개요
- 개발 환경 구축: 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것을 의미
- 하드웨어 환경
- 하드웨어 환경: 사용자와의 인터페이스 역할을 하는 클라이언트 (Client) 그리고 클라이언트와 통신하여 서비스를 제공하는 서버 (Server) 로 구성
- 클라이언트의 종류: 개인용 컴퓨터 (PC), 스마트 폰 등
- 서버의 종류: 웹 서버 (Web Server), 웹 어플리케이션 서버 (WAS: Web Application Server), 데이터베이스 서버 (DB Server), 파일 서버 (File Server)
- 소프트웨어 환경
- 소프트웨어 환경: 클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성
- 시스템 소프트웨어의 종류: 운영체제 (OS), 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS 등
- 개발 소프트웨어의 종류: 요구사항 관리 도구, 설계/모델링 도구, 구현 도구, 빌드 도구, 테스트 도구, 형상 관리 도구
- 웹 서버 (Web Server) 의 기능: HTTP/HTTPS 지원, 통신 기록 (Communitation Log), 정적 파일 관리 (Managing Static Files), 대역폭 제한 (Bandwidth Throttling), 가상 호스팅 (Virtual Hosting), 인증 (Authentication)
- 개발 언어의 선정 기준: 적정성, 효율성, 이식성, 친밀성, 범용성
- 개발 환경 구축 개요
- 소프트웨어 아키텍처 개요
- 소프트웨어 아키텍처의 개념
- 소프트웨어 아키텍처 (Software Architecture): 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체
- 소프트웨어 아키텍처 설계의 기본 원리
- 모듈화 (Modularity)
- 추상화 (Abstraction)
- 단계적 분해 (Stepwise Refinement)
- 정보 은닉 (Information Hiding)
- 소프트웨어 개발의 설계 단계: 상위 단계, 하위 단계
- 소프트웨어 아키텍처의 품질 속성
- 소프트웨어 아키텍처의 품질 속성: 소프트웨어 아키텍처가 이해 관계자들이 요구하는 수준의 품질을 유지 및 보장할 수 있게 설계 되었는지 확인하기 위해 품질 평가 요소들을 구체화 시켜 놓은 것
- 품질 평가 요소의 종류
- 시스템 측면: 성능, 보안, 가용성, 기능성, 사용성, 변경 용이성, 확장성, 테스트 용이성, 배치성, 안정성 등
- 비지니스 측면: 시장 적시성, 비용과 혜택, 예상 시스템 수명, 목표시장, 공개 일정, 기존 시스템과의 통합 등
- 아키텍처 측면: 개념적 무결성, 정확성, 완결성, 구축 가능성, 변경성, 시험성, 적응성, 일치성, 대체성 등
- 소프트웨어 아키텍처의 설계 과정
- 설계 목표 설정
- 시스템 타입 결정
- 아키텍처 패턴 적용
- 서브시스템 구체화
- 검토
- 협약 (Contract)에 의한 설계
- 협약에 의한 설계: 컴포넌트를 설계할 때 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것
- 명세에 포함될 조건: 선행 조건 (Precondition), 결과 조건 (Postcondition), 불변 조건 (Invariant)
- 소프트웨어 아키텍처의 개념
- 개발 환경 구축
- 아키텍처 패턴
- 아키텍처 패턴의 개념
- 아키텍처 패턴 (Architecture Patterns): 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미
- 아키텍처 스타일 (Architecture Style) 또는 표준 아키텍처 (Standard Architecture)라고도 함
- 아키텍처 패턴의 종류
- 레이어 패턴 (Layers pattern)
- 클라이언트-서버 패턴 (Client-Server Pattern)
- 파이프-필터 패턴 (Pipe-Filter Pattern)
- 모델-뷰-컨트롤러 패턴 (Model-View-Controller Pattern)
- 기타 패턴
- 마스터-슬레이브 패턴 (Master-Slave Pattern)
- 브로커 패턴 (Broker Pattern)
- 피어-투-피어 패턴 (Peer-To-Peer Pattern)
- 이벤트-버스 패턴 (Event-Bus Pattern)
- 블랙보드 패턴 (Blackboard Pattern)
- 인터프리터 패턴 (Interpreter Pattern)
- 아키텍처 패턴의 개념
- 객체지향 개념
- 객체지향 (Object-Oriented) 의 개념
- 객체지향: 소프트웨어의 각 요소들을 객체 (Object)로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법
- 객체지향의 구성 요소
- 객체 (Object): 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 소프트웨어 모듈
- 클래스 (Class): 공통된 속성과 연산을 갖는 객체의 집합으로, 객체의 일반적인 타입 (Type) 을 의미함
- 메시지 (Message): 객체들 간의 상호작용을 하는데 사용되는 수단으로, 객체에게 어떤 행위를 하도록 지시하는 명령 또는 요구사항
- 객체지향의 특성
- 캡슐화 (Encapsulation): 외부에서의 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것
- 상속 (Inheritance): 이미 정의된 상위 클래스 (부모 틀래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것
- 다형성 (Polymorphism): 메시지에 의해 객체 (클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
- 연관성 (Relationship): 두 개 이상의 객체 (클래스) 들이 상호 참조하는 관계를 의미
- 객체지향 (Object-Oriented) 의 개념
- 객체지향 분석 및 설계
- 객체지향 분석 (OOA: Object Oriented Analysis)의 개념
- 객체지향 분석: 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스 (객체), 이와 연관된 속성과 연산, 그들 간의 관계 등을 정의하여 모델링하는 작업
- 객체지향 분석의 방법론
- Rumbaugh (럼바우) 방법
- Booch (부치) 방법
- Jacobson 방법
- Coad 와 Yourdon 방법
- Wirfs-Brock 방법
- 럼바우 (Rumbaugh)의 분석 기법
- 럼바우의 분석 기법: 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법
- 객체 모델링 기법 (OMT, Object-Modeling Technique)이라고도 함
- 분석 활동은 '객체 모델링 (Object Modeling) -> 동적 모델링 (Dynamic Modeling) -> 기능 모델링 (Functional Modeling)' 순으로 이루어짐
- 객체지향 설계 원칙
- 객체지향 설계 원칙은 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜져야 할 원칙
- SRP, OCP, LSP, ISP, DIP 의 다섯 가지 원칙의 앞 글자를 따 SOLID 원칙이라고도 함
- 객체지향 설계 원칙의 종류
- 단일 책임 원칙 (SRP, Single Responsibility Principle)
- 개방-폐홰 원칙 (OCP, Open-Closed Principle)
- 리스코프 치환 원칙 (LSP, Liskov Substitution Principle)
- 인터페이스 분리 원칙 (ISP, Interface Segregation Principle)
- 의존 역전 원칙 (DIP, Dependency Inversion Principle)
- 객체지향 분석 (OOA: Object Oriented Analysis)의 개념
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 실기 노트 - 인터페이스 구현 (0) | 2025.01.07 |
---|---|
[정보처리기사] 실기 노트 - 서버 프로그램 구현 2 (0) | 2025.01.06 |
[정보처리기사] 실기 노트 - 통합구현 (0) | 2025.01.06 |
[정보처리기사] 실기 노트 - 데이터 입출력 구현 4 (1) | 2025.01.03 |
[정보처리기사] 실기 노트 - 데이터 입출력 구현 3 (0) | 2025.01.03 |