본문 바로가기

CS BASIC

(56)
[CS BASIC] 프로그램과 프로그래밍 그리고 프로그램 패러다임 오늘은 프로그램과 프로그래밍, 그리고 프로그래밍 패러다임에 대해서 다뤄보도록 하겠습니다. 요즈음에는 다양한 경로를 통해 프로그래밍을 접할 수 있고 그래서 누구나 마음만 먹으면 프로그래밍을 배울 수 있습니다. 이렇게 배운 ‘프로그래밍’이란 기술은 우리가 사용하는 다양한 전자기기, 특히 컴퓨터에서 실행시킬 수 있는 프로그램을 만드는데 사용할 수 있는데요. 오늘날에 프로그래밍이 전공을 불문하고 주목 받는 이유는 아무래도 프로그램이 인류에 가져다주는 높은 생산성 때문이지 않을까 생각이 듭니다. 그렇다면, 여기서 도대체 프로그램은 무엇이고 프로그래밍은 또 무엇인지? 혹시 프로그래밍에 대해서 조금 더 많이 배우신 분이라면 객체지향, 절차지향 프로그래밍이라는 것이 있다는데, 그 둘의 차이는 무엇인지 오늘의 포스팅을 ..
[CS BASIC] 기업 응용 프로그램 통합(EAI, Enterprise Architecture Integration) EAI(Enterprise Architecture Integration) - 기업 응용 프로그램 통합 또는 기업 애플리케이션 통합은 기업용 응용 프로그램의 구조적 통합 방안을 가리킨다. - 전사적 응용 프로그램 통합이라고도 한다. - 국내에서는 Enterprise Architecture와 더불어 EAI로 구축하도록 되어있는 법이 존재 - ex) 전사적자원관리(ERP), 고객 관계관리(CRM), 공급망계획(SCP) 시스템, 인트라넷 등… 구축 유형 설명 포인트 투 포인트(Point-to-Point) 가장 기초적인 애플리케이션 통합방법으로 1:1 단순 통합방법 허브 앤 스포크(Hub & Spoke) 단일한 접점 허브 시스템 통하여 데이터를 전송하는 중앙 집중식 방식 허브 장애 시 전재 장애 발생 메시지 버스..
[CS BASIC] 미들웨어(Middle Ware) 솔루션 미들웨어 솔루션이란? 컴퓨터 제작 회사가 사용자의 특정한 요구대로 만들어 제공하는 프로그램으로, 운영 체제와 응용 소프트웨어의 중간에서 조정과 중개의 역할을 수행하는 소프트웨어 미들웨어 (Middleware)의 특징 서로 다른 기종 간의 하드웨어나 프로토콜, 통신환경 등을 연결하여 응용프로그램과 운영환경 간에 원만한 통신이 이루어질 수 있게 서비스를 제공하는 소프트웨어 분산 시스템에서 다양한 부분을 관리하고 통신하며 데이터를 교환하게 해주는 소프트웨어로 볼 수 있다. 위치 투명성(Location Transparency)을 제공한다. 분산 시스템의 여러 컴포넌트가 요구하는 재사용가능한 서비스의 구현을 제공한다. 애플리케이션과 사용자 사이, 프로그램과 환경 간의 분산서비스를 제공한다. 표준화된 인터페이스를 ..
[CS BASIC] 시스템 인터페이스와 인터페이스 대상 식별 시스템 아키텍처 요구사항 하드웨어 소프트웨어를 모두 포함하는 전체 시스템에 대한 논리적 기능 체계 그리고 그것을 실현하기 위한 구성 방식, 시스템 전체의 최적화를 목표로 한다. 요구사항과 시스템의 전체 생명주기를 고려한다. 시스템의 구성, 동작 원리를 정확하게 표현해야 하며 각 컴포넌트에 대한 설계, 구현을 지원하는 수준으로 자세히 기술한다. 각 컴포넌트 사이의 상호작용, 외부 환경과의 관계를 기술한다. 시스템 인터페이스 식별 개발 대상과 시스템 연계 시스템 사이의 인터페이스를 식별하는 것이다. 시스템의 업무 정의서, 시스템 아키텍처 정의서, 유스케이스 정의서 등을 통하여 송신, 수신, 중계 시스템을 식별한다. 인터페이스 요구명세서, 인터페이스 요구사항 목록을 기반으로 개발 대상과 시스템과 연계된 내/외..
[CS BASIC] HTTP, HTTPS, HTTP Method 1. HTTP란? HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜 1.1. 프로토콜(Protocol) 이란? 둘 이상의 통신개체간에 교환되는 메세지 포멧과 순서뿐 아니라, 메세지의 송수신과 이벤트에 따른 행동들을 정의한다. 여러 계층으로 나눠진 네트워크 구조에서 동일 계층에서 사용하는 표준화된 통신 규약으로,네트워크 기능을 효율적으로 발휘하기 위한 협정 1.1.1. 프로토콜의 주요기능 단편화와 재합성 캡슐화 주소지정, 순서지정, 흐름제어 연결제어, 오류제어, 동기화, 다중화 1.2. HTTP의 기본 구조 ① 시작 라인 (Start line) 기본적으로 HTTP 버젼에 대한 정보를 가지고 있으며, Response인지 Reques..
[CS BASIC] 디자인 패턴과 GoF(Gang of Four) 디자인 패턴(Design Pattern)이란? 각 모듈의 세분화된 역할이나 모듈들 간의 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식 자주 사용하는 설계 형태를 정형화하여 유형별로 설계 템플릿을 만들어 두고 소프트웨어 개발 중 나타나는 과제를 해결하기 위한 방법 중 한 가지다. 다양한 응용 소프트웨어 시스템들을 개발할 때 서로 간에 공통되는 설계 문제가 존재하는 데, 각 해결책 사이에도 공통점이 있으며 이러한 유사점을 패턴이라 한다. 개발자 간 원활한 의사소통, 소프트웨어 구조 파악 용이, 설계 변경에 대한 유연한 대처, 개발의 효율성, 유지보수성, 운용성 등 소프트웨어 품질 향상에 도움을 준다. 객체 지향 프로그래밍 설계 시 유사한 상황에서..
[CS BASIC] 소프트웨어 아키텍처 디자인 패턴(Software Architecture Design Pattern) 소프트웨어의 아키텍처(Architecture)란? 외부에서 인식할 수 있는 특성이 담긴 소프트웨어의 골격이 되는 기본 구조로 볼수 있다. 데이터 중심 아키텍처는 공유 데이터저장소를 통해 접근자 간의 통신이 이루어지므로 각 접근자의 수정과 확장이 용이하다. 이해 관계자들의 품질 요구사항을 반영하여 품질 속성을 결정한다. 소프트웨어 아키텍처 패턴의 장점 개발 시간의 단축 고품질 소프트웨어 안정적 개발 가능 개발 단계 관계자 간 의사소통이 간편함 시스템 구조 이해도가 높아 유지보수에 유리함 시스템 아키텍처의 종류 계층화 패턴 (Layered pattern) | OSI 참조 모델 등 모듈들로 응집된 계층 단위로 SW를 구성. 계층간에 사용 가능의 관계로 표현 n-티어 아키텍처 패턴이라고도 불림. 구조화된 프로그..
[CS BASIC] 소프트웨어 아키텍처 (Software Architecture) 소프트웨어 아키텍처란? 요구사항을 기반으로 개발 대상 소프트웨어의 기본 틀(뼈대)를 만드는 것이다. 다수의 이해관계자가 참여하는 복잡한 개발에서 상호이해, 타협, 의사소통을 체계적으로 접근하기 위한 것이다. 전체 시스템의 전반적인 구조를 체계적으로 설계 하는 것이다. 소프트웨어를 구성하는 컴포넌트들의 상호작용 및 관계, 각각의 특성을 기반으로 컴포넌트들이 상호 유기적으로 결합하는 소프트웨어의 여러 가지 원칙들의 집합이다. 설계 및 구현을 위한 구조적/비구조적인 틀(Frame)을 제공한다. 소프트웨어 아키텍처 시스템의 품질 속성 ① 성능, ② 사용 운용성, ③ 보안성, ④ 시험 용이성, ⑤ 가용성, ⑥ 변경 용이성, ⑦ 사용성 소프트웨어 아키텍처 특징 ① 간략성 : 이해하고 추론할 수 있을 정도 간결해야 ..