소프트웨어 개발 방법론
⚡️ 소프트웨어 생명주기 모델(SDLC)
🖥️ 소프트웨어 생명주기 모델 개념
📖시스템의 요구분석에서 유지보수까지 전 공정을 체계화한 절차이자 작업 프로세스를 모델화
🖥️ 소프트웨어 생명주기 모델 프로세스(5)
📖요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
- 요구사항 분석 : 기능 / 비기능 요구사항
- 설계 : 시스템 구조, 프로그램, 사용자 인터페이스 설계
- 구현 : 인터페이스, 자료 구조 개발 및 오류 처리
- 테스트 : 단위, 통합, 시스템, 인수 테스트
- 유지보수 : 예방, 완전, 교정, 적응 유지보수
🖥️ 소프트웨어 생명주기 모델 종류(4)
📖폭포수(Waterfall) / 프로토타이핑(Prototyping) / 나선형(Spiral) / 반복적(Iteration)
- 폭포수 모델 : 확실히 마무리 후 다음 단계 진행 / 가장 오래된 모델 / 고전적 생명주기
- 타당성 검토 > 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
- 프로토타이핑 모델 : 고객의 피드백 반영 / 공동의 참조 모델 제공
- 나선형 모델 : 위험을 최소화 / 점진적 완벽한 시스템 개발
- 계획 및 정의 > 위험 분석 > 개발 > 고객 평가
- 반복적 모델 : 병렬적 개발 후 통합 / 반복적 개발
⚡️ 소프트웨어 개발 방법론
🖥️ 소프트웨어 개발 개념
📖소프트웨어를 하나의 생명체로 간주하고 전 과정을 형상화한 방법론
🖥️ 소프트웨어 개발 종류(6)
📖구조적(Structured) / 정보공학(Information Engineering) / 객체지향(Object-Oriented)
컴포넌트 기반(CBD : Component Based) / 애자일(Agile) / 제품계열(Product Line)
- 구조적 방법론 : 기능에 따라 나누어 개발 / 분할과 정복 접근 / 프로세스 중심 하향식 / 나씨-슈나이더만
- 정보공학 방법론 : 대형 프로젝트 수행
- 객체 지향 방법론 : '객체' 이용 분석 및 설계
- 컴포넌트 기반 방법론 : 생산성 향상 / 새로운 기능 추가 쉬움 / 확장성
- 애자일 : 절차보다 사람 중심의 방법론 / 신속 적응적 경량 개발
- 제품계열 방법론 : 공통된 기능 정의 / 임베디드 소프트웨어 작성에 유용
🖥️ 애자일
- 개념 : 개발 기간 짧음 / 폭포수 모형에 대비 / 유동적 개발
- 등장배경 : 소프트웨어 개발 환경의 변화 / 기존 개발 방법론 한계
- 애자일 방법론의 유형(3)
- XP / 린(Lean) / 스크럼(SCRUM)
- XP(eXtreme Programming)
- 의사소통 개선 / 즉각적 피드백
- 5가지 가치 : 용기 / 단순성 / 의사소통 / 피드백 / 존중
- 12가지 기본원리(핵심만) : 짝 프로그래밍 / 지속적인 통합 / 메타포어 / 테스트 기반 개발 / 리팩토링
- 스크럼(SCRUM)
- 짧은 시간의 개발 / 팀을 위한 프로젝트 관리 중심
- 흐름 : 백로그 > 팀 구성 > 스프린트 > 스크럼 미팅 > 스프린트 회고
- 번 다운 차트 : 남아있는 백로그 대비 시간 표현
- 린(Lean)
- 도요타 / 낭비요소 제거 / JIT & 칸반 보드 사용
- 7가지 원칙 : 낭비제거 / 품질 내재화 / 지식 창출/ 늦은 확정 / 빠른인도 / 사람 존중 / 전체 최적화
⚡️ 객체 지향 분석 방법론
🖥️ 객체 지향 개념
📖속성과 메서드가 결합한 형태의 객체로 표현
🖥️ 객체 지향 구성요소
📖클래스(Class) / 객체(Object) / 메서드(Method) / 메시지(Message) / 인스턴스(Instance) / 속성(Property)
- 클래스 : 일종의 틀 / 데이터를 추상화하는 단위
- 객체 : 상태와 식별성을 가지는 식별 가능한 대상
- 메서드 : 객체를 사용하는 방법 / 구체적인 연산 / 함수 또는 프로시저에 해당
- 메세지 : 객체와 객체 간 전달 / 상호 작용을 하기 위한 수단
- 인스턴스 : 실제로 메모리에 할당 / 클래스를 통해 만든 실형 객체
- 속성 : 객체의 상태를 표현 / 데이터의 값을 단위별로 정의
🖥️ 객체 지향 기법
📖캡슐화(Encapsulation) / 상속성(Inheritance) / 다형성(Ploymophism)
추상화(Absraction) / 정보 은닉(Information Hiding) / 관계성(Relationship)
- 캡슐화 : 필요한 인터페이스만을 밖으로 드러내는 기법 / 정보 은닉과 관계
- 상속성 : 속성과 메서드를 재정의 없이 물려받고 사용하는 기법
- 다형성 : 각 객체의 고유한 방법으로 응답 / 오버로딩 / 오버라이딩
- 추상화 : 공통 성질 추출 / 과정, 자료, 제어 추상화
- 정보은닉 : 공개 인터페이스를 통해서만 접근 / 모듈 사이의 독립성 유지
- 관계성 : 연관화(is-member-of) / 집단화(is part of) / 분류화(is-instance-of) / 일반화(is-a) / 특수화
🖥️ 객체 지향 설계원칙(SOLID)
📖단일책임 / 개방-폐쇄 / 리스코프 치환 / 인터페이스 분리 / 의존성 역전
- 단일책임 원칙 : 하나의 책임 수행에 집중 / 나머지 4원칙의 기초
- 개방-폐쇄 원칙 : 확장 - 오픈 / 수정 - 폐쇄
- 리스코프 치환의 원칙 : 서브타입은 어디서나 기반 타입으로 교체
- 인터페이스 분리의 원칙 : 사용하지 않는 인터페이스는 구현 x
- 의존성 역전의 원칙 : 관계를 최대한 느슨하게 구성
🖥️ 객체 지향 분석의 개념
📖요구된 문제와 관련된 모든 클래스, 속성과 연산, 관계를 정의하여 모델링
🖥️ 객체 지향 분석 방법론 종류
📖OOSE(Object Oriented Software Engineering) / OMT(Object Modeling Technology) /
OOD(Object Oriented Design)
-
OOSE : 야콥슨 / 유스케이스 - 모든 모델의 근간 / 분석, 설계, 구현 단계 / 기능적 요구사항 중심

-
OMT : 럼바우 / 그래픽 표기법 / 객체(or 정보), 동적, 기능 모델링 순서
-
객체 모델링 : 정보 모델링 / ER 다이어그램을 만드는 과정까지 / 객체 다이어그램 활용

-
동적 모델링 : 시간의 흐름에 따라 동적인 행위를 표현 / 상태 다이어그램 활용

-
기능 모델링 : 자료 흐름 중심 / 자료 흐름도(DFD) 활용

-
OOD : 부치 / 설계 문서화 강조 / 분석과 설계 분리 불가능
-
코든-요든 : E-R 다이어그램 / 객체의 행위 모델링
-
워프-브록 : 고객 명세서 평가 / 연속적 수행
🖥️ 기능 모델링 주요 기법
- 데이터흐름도(DFD : Data Flow Diagram)
- 개념 : 시스템 분석과 설계에서 매우 유용 / 자료흐름 그래프 or 버블 차트
- 특징 : 구조적 분석 기법 / 데이터 흐름 중심 / 시간 흐름의 명확성 표현 x
- 자료사전(DD : Data Dictionary)
- 개념 : 다양한 데이터를 이용하여 자료를 참조하기 위한 방법
- 목적 : 자료 용어 의미의 명확성 / 용어 정의 조정