목차 디자인 패턴 (Design Pattern)의 개요 📌 디자인 패턴은 각 모듈의 세분화된 역할이나 모듈들 간의 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미한다. 디자인 패턴은 문제 및 배경, 실제 적용된 사례, 재사용이 가능한 샘플 코드 등으로 구성되어 있다. '바퀴를 다시 발명하지 마라(Don't reinvent the wheel)' 라는 말과 같이, 개발 과정 중에 문제가 발생하면 새로 해결책을 구상하는 것보다 문제에 해당하는 디자인 패턴을 참고하여 적용하는 것이 더 효율적이다. 디자인 패턴은 한 패턴에 변형을 가하거나 특정 요구사항을 반영하면 유사한 형태의 다른 패턴으로 변화되는 특징이 있다. 디자인 패턴은 199..
목차 코드 (Code)의 개요 📌 코드는 컴퓨터를 이용하여 자료를 처리하는 과정에서 분류, 조합 및 집계를 용이하게 하고, 특정 자료의 추출을 쉽게 하기 위해서 사용하는 기호이다. 코드는 정보를 신속, 정확, 명료하게 전달할 수 있게 한다. 코드는 일정한 규칙에 따라 작성되며, 정보 처리의 효율과 처리된 정보의 가치에 많은 영향을 미친다. 일반적인 코드의 예로 주민등록번호, 학번, 전화번호 등이 있다 코드의 주요 기능에는 식별 기능, 분류 기능, 배열 기능, 표준화 기능, 간소화 기능이 있다. 식별 기능 데이터 간의 성격에 따라 구분이 가능하다. 분류 기능 특정 기준이나 동일한 유형에 해당하는 데이터를 그룹화 할 수 있다. 배열 기능 의미를 부여하여 나열할 수 있다. 표준화 기능 다양한 데이터를 기준에 ..
목차 공통 모듈의 개요 📌 공통 모듈은 여러 프로그램에서 공통적으로 사용할 수 있는 모듈을 의미한다. 자주 사용되는 계산식이나 매번 필요한 사용자 인증과 같은 기능들이 공통 모듈로 구성될 수 있다. 모듈의 재 사용성 확보와 중복 개발 회피를 위해 설계 과정에서 공통 부분을 식별하고 명세를 작성할 필요가 있다. 공통 모듈을 구현할 때는 다른 개발자들이 해당 기능을 명확히 이해할 수 있도록 다음의 명세 기법을 준수해야 한다. 정확성(Correctness) 시스템 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성한다. 명확성(Clarity) 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성한다. 완전성(Completeness) 시스템 구현을 위해 필요한 모든 것을 기술한다. 일관성..
목차 모듈의 개요 📌 모듈은 모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용된다. 모듈은 단독으로 컴파일이 가능하며, 재사용 할 수 있다. 모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미하는 것으로, 모듈이 하나의 기능만을 수행하고 다른 모듈과의 과도한 상호작용을 배제함으로써 이루어진다. 독립성이 높은 모듈일수록 모듈을 수정하더라도 다른 모듈들에게는 거의 영향을 미치지 않으며, 오류가 발생해도 쉽게 발견하고 해결할 수 있다. 모듈의 독립성은 결합도(Coupling)와 응집도(Cohesion)에 의해 측정되며, 독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만..
목차 객체지향 분석의 개념 📌 객체지향 분석(OOA: Object Oriented Analysis)은 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 이와 연관된 속성과 연산, 그들 간의 관계 등을 정의하여 모델링 하는 작업이다. 소프트웨어를 개발하기 위한 비즈니스(업무)를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석한다. 분석가에게 중요한 모델링 구성 요소인 클래스, 객체, 속성, 연산들을 표현해서 문제를 모형화할 수 있게 해준다. 객체는 클래스로부터 인스턴스화되고, 이 클래스를 식별하는 것이 객체지향 분석의 주요한 목적이다. 객체지향 분석의 방법론 📌 객체지향 분석을 위한 여러 방법론이 제시되었으며 각 방법론은 다음과 같다. Rumbaugh(럼바우) 방법 :..
목차 객체지향의 개요 📌 객체지향은 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법을 의미한다. 객체지향 기법은 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되어 사용되고 있다. 객체지향은 소프트웨어의 재사용 및 확장이 용이하여 고품질의 소프트웨어를 빠르게 개발할 수 있고 유지보수가 쉽다. 객체지향은 복잡한 구조를 단계적 / 계층적으로 표현하고, 멀티미디어 데이터 및 병렬 처리를 지원 한다. 객체지향은 현실 세계를 모형화하므로 사용자와 개발자가 쉽게 이해할 수 있다, 객체지향의 주요 구성 요소와 개념에는 객체(Object), 클래스(Cla..
목차 아키텍처 패턴 (Patterns)의 개요 📌 아키텍처 패턴은 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미한다. 아키텍처 패턴은 소프트웨어 시스템의 구조를 구성하기 위한 기본적인 윤곽을 제시한다. 아키텍처 패턴에는 서브시스템들과 그 역할이 정의되어 있으며, 서브시스템 사이의 관계와 여러 규칙 지침 등이 포함되어 있다. 아키텍처 패턴을 아키텍처 스타일 또는 표준 아키텍처라고도 한다. 아키텍처 패턴의 장점 시행착오를 줄여 개발 시간을 단축시키고, 고품질의 소프트웨어를 생상할 수 있다. 검증된 구조로 개발하기 때문에 안정적인 개발이 가능하다. 이해관계자들이 공통된 아키텍처를 공유할 수 있어 의사소통이 간편해진다. 시스템의 구조를 이해하는 것이 쉬워 개발에 참여하지 않은 사람도..
목차 💡 이 장을 공부하면서 반드시 알아두어야 할 키워드 파이프-필터 패턴, 캡슐화, 럼바우의 분석 기법, 객체지향 설계 원칙, 결합도, 응집도, 효과적인 모듈 설계 방안, 생성 패턴, 구조 패턴 , 행위 패턴 소프트웨어 아키텍처의 설계 📌 소프트웨어 아키텍처는 소프트웨어의 골격이 되는 기본 구조이자, 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다. 소프트웨어 개발 시 적용되는 원칙과 지침이며, 이해 관계자들의 의사소통 도구로 활용된다. 소프트웨어 아키텍처의 설계는 기본적으로 좋은 품질을 유지하면서 사용자의 비기능적 요구사항으로 나타난 제약을 반영하고, 기능적 요구사항을 구현하는 방법을 찾는 해결 과정이다. 애플리케이션의 분할 방법과 분할된 모듈에 할당될 기능, 모듈 간..