본문 바로가기

CS 공부

(30)
CS) OOAD와 UML 개발 방식 1. OOAD(Object-Oriented Analysis and Design) 개요 • 객체지향 분석 및 설계는 소프트웨어를 객체 단위로 분석하고 설계하는 과정으로, 현실 세계의 개체(Entity)와 행위를 모델링하여 유지보수성과 확장성을 높인다.   1. OOA (Object-Oriented Analysis, 객체지향 분석) 개념요구사항을 분석하여 객체 모델을 도출하는 과정소프트웨어 개발의 초기 단계에서 문제 영역(Domain)을 분석하고, 사용자가 필요로 하는 기능과 객체 간의 관계를 정의한다.비즈니스 로직과 사용자의 요구사항을 명확히 모델링하는 것이 핵심 주요 특징Use-Case 중심 분석사용자의 요구사항을유스케이스 다이어그램으로 정리액터(Actor)와 유스케이스(Use-Case) 간의 관계 정의..
CS) CASE, 럼바우 기법, 요구사항 모델링 1. CASE (Computer-Aided Software Engineering, 컴퓨터 지원 소프트웨어 공학) 소프트웨어 개발을 지원하는 자동화 도구분석, 설계, 구현, 테스트 등 소프트웨어 개발 과정을 지원요구사항 수집부터 유지보수까지 전체 소프트웨어 개발 라이프사이클(SDLC)에 걸쳐 사용됨  CASE 도구의 주요 기능시스템 모델링 (UML, 다이어그램 생성)코드 자동 생성 및 문서화프로젝트 관리 지원형상 관리(Configuration Management) 기능 제공  CASE 도구의 예시UML 모델링 도구: StarUML, Visual Paradigm형상 관리 도구: Git, SVN테스트 자동화 도구: Selenium, JUnit  2. 럼바우 기법 (Rumbaugh Method, OMT: Obj..
CS) 객체지향 설계 원칙과 OOAD 1. 객체지향 설계 원칙 ( SOLID ) 객체지향 프로그래밍 ( OOP )에서 유지보수성과 확장성을 고려한 설계 원칙으로 SOLID 원칙이 있다.S ( Single Responsibility Principle, 단일 책임 원칙 )한 클래스는 하나의 책임만 가져야 한다.책임이 많아질 경우 클래스를 분리하여 변경이 용이하도록 설계한다.O ( Open/Closed Principle, 개방-폐쇄 원칙 )기존 코드를 수정하지 않고 기능을 확장할 수 있어야 한다.인터페이스 또는 추상 클래스를 활용하여 다형성을 적용한다.L ( Liskov Substitution Principle, 리스코프 치환 원칙 )자식 클래스는 부모 클래스의 기능을 대체할 수 있어야 한다.상속 관계에서 부모의 동작을 보장하도록 설계한다.I (..
CS) 응집도 ( Cohesion ) 1. 응집도 ( Cohesion )란?응집도란 모듈 ( 클래스, 함수, 컴포넌트 등 ) 내부의 요소들이 서로 관련되어 있는 정도를 의미합니다.높은 응집도: 모듈이 하나의 명확한 목적을 가짐 → 유지보수성과 재사용성이 높아짐낮은 응집도: 여러 목적이 섞여 있어 유지보수와 재사용이 어려움 2. 응집도의 유형응집도는 낮은 수준 → 높은 수준으로 여러 가지 유형이 있습니다.유형설명우연적 응집 ( Coincidental Cohesion )관련 없는 기능들이 한 모듈에 우연히 포함됨논리적 응집 ( Logical Cohesion )비슷한 작업(예: 여러 포맷으로 출력)이 한 모듈에 포함됨시간적 응집 ( Temporal Cohesion )특정 시점(예: 초기화 과정)에서 실행되는 기능들이 포함됨절차적 응집 ( Proc..
CS) 데이터베이스 관계대수, 관계 함수, 정규화 1. 관계대수 ( Relational Algebra )관계대수는 관계형 데이터베이스에서 데이터를 조작하고 검색하는 수학적 연산 집합이다. 이를 통해 원하는 데이터를 효과적으로 추출할 수 있다.  1. 관계대수 연산순수 관계 연산 ( 기본 연산 )SELECT ( σ, 시그마 연산 ) : 조건을 만족하는 튜플 ( 행 )만 선택PROJECT ( π, 파이 연산 ) : 특정 속성( 열 )만 선택JOIN ( ⋈, 조인 연산 ) : 두 개의 릴레이션을 특정 조건으로 결합DIVISION ( ÷, 디비전 연산 ) : 특정 속성을 포함하는 부분집합을 찾는 연산일반 집합 연산합집합 ( ∪, UNION ) : 두 릴레이션을 합침 ( 중복 제거 )교집합 ( ∩, INTERSECT ) : 공통된 튜플만 선택차집합 ( -, DI..
CS) 정처기 대비 요약 정리 1.  소프트웨어 공학 (Software Engineering)  - 소프트웨어 생명주기(SDLC) 모델별 특징폭포수 모델(Waterfall) → 단계별 진행, 문서 중심, 후반 수정 어려움프로토타이핑 모델(Prototyping) → 사용자의 피드백을 기반으로 반복적 개선나선형 모델(Spiral) → 리스크 분석 중심, 대형 프로젝트에 적합애자일(Agile) 모델 → 짧은 개발 주기, 유연한 대응  자주 틀리는 포인트"폭포수 모델과 애자일 모델의 차이점"을 혼동"나선형 모델 = 위험 분석을 고려"하는 특징을 자주 놓침 2. 데이터베이스 (Database)  - 정규화(Normalization) 제1정규형(1NF) → 중복된 데이터 제거, 원자값 유지제2정규형(2NF) → 부분 함수적 종속 제거제3정규형(..
CS) 소프트웨어 프로젝트 관리에서 3P와 애자일에서의 적용 1. 소프트웨어 프로젝트 관리에서 3P란?  3P란 People ( 사람 ), Process ( 프로세스 ), Product ( 제품 )의 약자로, 프로젝트 관리에서 필수적인 요소입니다. 소프트웨어 프로젝트를 성공적으로 관리하기 위해서는 3P 개념을 이해하는 것이 중요합니다. People ( 사람 ) : 개발 인력의 역할과 책임프로젝트 관리자(PM): 일정, 비용, 품질을 관리하고 프로젝트 진행을 총괄개발자(Developer): 설계, 구현, 테스트, 유지보수를 담당테스터(Tester): 시스템의 결함을 찾아내고 품질을 검증사용자(End User): 요구사항을 제공하고 제품을 검증Process ( 프로세스 ) : 소프트웨어 개발 방법론 적용폭포수 모델(Waterfall Model): 전통적인 개발 방식으..
CS) 결합도 ( Coupling ) 1. 결합도 ( Coupling )란? 결합도는 소프트웨어 모듈 ( 클래스, 함수, 컴포넌트 등 ) 간의 상호 의존성을 나타내는 지표입니다.결합도가 낮을 수록 ( Loose Coupling ) 유지보수와 확장성이 뛰어나고, 결합도가 높을 수록 ( Tight Coupling ) 변경이 어려워 집니다. 즉, 낮은 결합도를 가지고, 높은 응집도를 가지는 소프트웨어가 좋은 소프트 웨어입니다. 좋은 소프트 웨어낮은 결합도 ( Low Coupling )높은 응집도 ( High Cohesion ) 2. 결합도의 종류 ( 낮은 결합도 → 높은 결합도 )결합도 종류설명예제자료 결합 ( Data Coupling )모듈 간에 단순한 데이터 값(변수)만 주고받는 경우sum(a, b) 같은 함수 호출스탬프 결합(Stamp Co..