본문 바로가기

CS101

[SW공학] 디자인 패턴: 생성, 구조, 행위 패턴의 종류 디자인 패턴은 개발자들이 객체지향 프로그래밍에서 자주 쓰는 코드 모음입니다. 이러한 종류에는 크게 생성 패턴, 구조 패턴, 행위패턴이 있습니다. 종류별로 어떤 디자인 패턴이 있는지 알아보겠습니다. [ Contents ] 1. 디자인 패턴 (Design Pattern) 객체 지향 프로그래밍에서 각 유형별로 가장 적합한 설계를 일반화하여 체계화한 패턴 객체 지향 프로그래밍에서 자주 발생한 문제들을 회피하고, 성능 및 개발 편의성을 높이기 위한 족보입니다. 베이스 코드라고 볼 수 있죠. 이미 수많은 개발자들이 수많은 프로그램을 개발했고, 그들의 프로그래밍에는 일련의 공통점이 있습니다. 자주 사용하는 솔루션이 생기기 시작했고, 그러한 것들이 모여 '디자인 패턴'이 되었습니다. 2. 생성 패턴 (객체 생성) - .. 2023. 4. 28.
[SW공학] UML 다이어그램의 종류: 유즈케이스, 클래스, 시퀸스, 상태, 액티비티, 복합 구조, 컴포넌트, 배치 소프트웨어 공학에서는 UML 다이어그램으로 시각화하여 설계합니다. 그 예시로는 유즈케이스 다이어그램, 클래스 다이어그램, 순서 다이어그램, 상태 다이어그램, 액티비티 다이어그램, 복합 구조 다이어그램, 컴포넌트 다이어그램, 배치 다이어그램이 있으며 이를 자세히 알아보겠습니다. [ Contents ] 1. 사용 사례 다이어그램 (Use case Diagram) 사용자의 관점에서 시스템의 기능과 관계를 나타낸 다이어그램 보통 '유즈케이스 다이어그램'이라고 부릅니다. 사용자의 요구를 추출하고 분석하는 데에 사용합니다. cf) 유즈케이스 다이어그램에서 화살표의 의미 : include: 필수적으로 필요한 기능, extend: 부가적으로 필요한 기능 2. 클래스 다이어그램 (Class Diagram) 소프트웨어 내.. 2023. 4. 27.
[SW공학] 소프트웨어 아키텍처: MVC, 이벤트 기반, 파이프 필터 소프트웨어 아키텍처는 전체 시스템 구조도로, 소프트웨어 성향에 따라 다양한 아키텍처 패턴을 사용합니다. 그중 많이 쓰이는 MVC 패턴, 이벤트 기반(Event-driven) 패턴, 파이프 필터 패턴을 알아보겠습니다. [ Contents ] 1. 소프트웨어 아키텍처 소프트웨어의 구성요소와 (외부) 특성, 그리고 구성 요소 간 관계를 표현한 시스템 구조도 소프트웨어 아키텍처는 구성요소(컴포넌트) 간 인터페이스와 인터랙션을 한눈에 보기에 좋습니다. 전체적인 시스템 구조를 표현하며, 사용자의 요구를 바탕으로 시스템을 설계하는 중요한 단계입니다. 위 예시는 클라이언트 서버(Client-Server) 아키텍처로, 사용자와 서버와의 인터페이스와 인터랙션을 중심으로 그려진 설계도입니다. 이외에도 MVC, 이벤트 기반,.. 2023. 4. 27.
[SW공학] 모듈화(Modulariation): 결집도와 응집도의 종류와 강도 소프트웨어는 모듈화되어 개발됩니다. 각 모듈 간 결집도는 낮을수록 좋고, 모듈 내 응집도는 높을수록 좋습니다. 이러한 이유를 살펴보고, 결집도와 응집도의 종류에 대해 알아보겠습니다. [ Contents ] 1. 모듈화 (Modulariation) 소프트웨어 설계에서 기능 단위로 분해하여 추상화한 단위를 '모듈(Module)'이라고 합니다. 소프트웨어는 각 기능 단위로 모듈화되어있으며, 각각의 독립성을 보장해야 합니다. 모듈의 독립성이 보장되어야 모듈의 디버깅 및 수정, 테스트, 통합이 용이합니다. 만약 하나의 모듈이 여러 모듈에게 영향을 끼친다면, 그 모듈들을 모두 수정해야하는 번거로움이 생깁니다. 따라서 모듈간의 결합도는 낮고, 모듈 내 응집력은 강해야 좋습니다. 2. 결합도 (Coupling) - 자.. 2023. 4. 27.
[SW공학] CMMi: 기존 CMM을 통합한 조직 성숙도 평가모델 조직 성숙도 평가 모델인 CMMi과 해당 모델의 성숙도 단계에 대해 알아보겠습니다. [ Contents ] 1. CMMi (Capability Maturity Model integration) 여러 개로 나누어져 있던 CMM을 통합한 조직 성숙도 평가 모델 SEI(Software Engineering Institute, 소프트웨어 공학 연구소)에서 만든 통합 평가모델입니다. 시스템 공학과 소프트웨어 공학의 기능적 통합에 중점을 두고, ISO 15504(SPICE) 표준과 호환성을 갖도록 통합했습니다. 2. 성숙도 단계 0단계 (not performed): 실행 안 됨 1단계 (performed): 실행됨 2단계 (managed): 문서화된 계획 3단계 (defined): 표준 프로세스, 소프트웨어 공학 .. 2023. 4. 27.
[SW공학] ISO/IEC 9126 품질 특성: 신뢰성, 사용성, 이식성, 기능성, 유지보수성, 효율성 ISO/IEC에서 정의한 소프트웨어 품질 특성에 대해서 알아봅니다. [ Contents ] 1. ISO/IEC 9126 품질 특성 소프트웨어의 품질 특성과 평가요소를 정의한 국제 표준 ISO는 국제 표준화 기구이며, IEC는 국제 전기기술협회입니다. ISO/IEC 9126은 소프트웨어의 품질 특성을 정의한 표준으로, 현재는 폐기되었습니다. (ISO/IEC 25000 SQuaRE로 통합됨) 하지만 여전히 국내에서는 사용되고 있는 품질 평가기준입니다. 2. 품질 특성 요소 1) 신뢰성 (Reliability) 규정 조건에서 규정된 성능을 보장, 사용자 오류 방지 2) 사용성 (Usability) 사용자가 쉽게 이해하고 학습하여 사용 가능 3) 이식성 (Portability) 다양한 환경에서 사용 가능 4) .. 2023. 4. 27.
[SW공학] 일정계획: 작업분해(WBS), CPM/PERT, 간트 차트 소프트웨어 공학에서 일정계획을 할 때 작업분해(WBS), CPM/PERT 네트워크 차트, 간트 차트를 사용합니다. 이에 대해서 알아보겠습니다. [ Contents ] 1. 일정계획 개발모형(SDLC) => 작업 분해(WBS) => CPM/PERT => 간트 차트(Gantt Chart) 2. 작업 분해 (WBS, Work Break-dwon Structure) 프로젝트에 필요한 활동과 업무를 세분화하는 작업 프로젝트의 모든 작업을 찾아내기 위해, 목표를 작은 단위로 세분화하는 작업입니다. 각 단위별 필요한 관리와 비용을 산정합니다. 3. CPM/PERT (Critical Path Method, Promgram Evaluation and Review Technique) 각 작업별 순서와 소요시간을 나타낸 프.. 2023. 4. 27.
[SW공학] 비용 산정 방법: 델파이, LOC, COCOMO모델, 기능 점수 소프트웨어 공학에서 비용을 산정하는 방법에는 델파이, LOC, COCOMO모델, 기능 점수가 있습니다. 이러한 방법의 특징과 산정방식에 대해서 알아보겠습니다. [ Contents ] 1. 델파이 (Delphi) 전문가 패널을 구성하여 고문을 받는 방식입니다. 각 패널들은 서로를 알지 못하는 익명성이 유지되어야 합니다. 조사자는 패널들의 의견을 취합하고, 다시 패널들에게 전달합니다. 패널들은 취합된 의견을 보며, 수정한 자신의 의견을 다시 전달합니다. 이런 식으로 반복하여 비용을 산정하는 방식입니다. 소프트웨어 공학 외에도 행정학, 정책학 등 다양한 분야에서 사용됩니다. '델파이'라는 명칭은 델포이(delphoe) 신전에서 나왔으며, 마치 신전의 신탁을 연상케 하는 방식입니다. 2. LOC (Lines O.. 2023. 4. 27.
[SW공학] 익스트림 프로그래밍(XP, eXtreme Programming) - 애자일(Agile) 기법 애자일 기법으로 유명한 익스트림 프로그래밍 개발기법에 대해서 알아보겠습니다. [ Contents ] 1. 익스트림 프로그래밍(XP, eXtreme Programming) 고객의 참여를 극한(extreme)까지 유도하는 소프트웨어 개발기법 흔히 '에자일(Agile)'기법이라고 불리며, 사용자의 요구변화에도 유연하고 신속하게 대응할 수 있는 개발방식입니다. 작은 작업단위로 진행하며, 수시로 프로토타입을 만들어 고객에게 피드백을 받습니다. 이러한 개선을 반복하며 점진적으로 개발을 완성해갑니다. 나선형 모델과 유사한 점이 많으나, 차이점은 '고객의 참여 극대'와 '개발 경량화 및 편의'입니다. 개발자들은 문서화 작업에 익숙하지 않으며, 형식적인 문서작업보다는 코드 한 줄을 더 쓰려는 경향이 있습니다. 이러한 개.. 2023. 4. 27.