1. 소프트웨어 생명주기 (SDLC)
️
️
️
SDLC
프로젝트 계획 → 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
생명주기 모델 종류
•
폭포수
•
프로토타입
•
나선형
•
애자일(Agile)
2. 프로젝트 계획
️
️
️
비용 산정 모형
•
하향식 산정 방법
◦
전문가 감정 기법
◦
델파이 기법 : 한 명의 조정자와 여러 전문가의 의견을 종합
•
상향식 산정 방법
◦
LoC : 코드 라인 수의 낙관치(o), 중간치(m), 비관치(p)를 측정 (o + 4m + p / 6)
◦
MM(Man Month) : 한 사람이 1개월 동안 할 수 있는 일의 양
◦
COCOMO : 보헴이 정의. 프로그램 규모에 따라 비용 산정
◦
Putnam : 개발 주기의 단계별 요구
◦
기능점수(FP) : 요구사항을 증가시키는 인자별로 가중치 부여
일정 관리 모형
•
주 공정법(CPM) : 임계경로 계산 (프로젝트 시작과 종료까지 가장 긴 시간이 걸리는 경로를 계산)
•
PERT: 비관치, 중간치, 낙관치의 3점 추정방식으로 일정 관리
•
중요 연쇄 프로젝트 관리(CCPM)
WBS
Work Breakdown Structure. 프로젝트 목표 달성을 위한 활동과 업무를 세분화
3. 요구사항 분석
️
️
️
요구사항 개발 프로세스
도출 → 분석 → 명세 → 확인 (도분명확)
•
도출 : 요구사항 식별, 인터뷰, 브레인스토밍, 워크샵
•
분석 : 개념 모델링, 정형 분석, 요구사항 할당
•
명세 : 문서화, 시스템 요구사항 명세서, 시스템 정의서
•
확인 : 프로토타이핑, 모델 검증, 인수 테스트
구조적 분석 도구
•
데이터/자료 흐름도 (DFD, Data Flow Diagram)
•
자료 사전 (DD, Data Dictionary)
객체 지향 분석 방법론
•
OOSE - 야콥슨
•
OMT - 럼바우
◦
객체 모델링 → 동적 모델링 → 기능 모델링 (객동기)
▪
객체 모델링 : 정보 모델링이라고도 함. 객체 간의 관계를 정의하여 ER 다이어그램을 만드는 과정. 객체 다이어그램으로 표현
▪
동적 모델링 : 객체들 사이의 동적인 행위를 표현. 상태 다이어그램으로 표현
▪
기능 모델링 : 자료 흐름을 중심으로 프로세스를 표현. 자료흐름도(DFD)로 표현
•
OOD - 부치
4. 소프트웨어 설계
️
️
️
현행 시스템 파악 개념
현재 개발하고자 하는 시스템의 개발 범위를 설정하기 위해 구성과 기능, 연계정보, 소프트웨어, 하드웨어, 네트워크의 구성을 파악하는 과정
현행 시스템 파악 절차
•
구성/기능/인터페이스 파악
◦
시스템 구성 파악
◦
시스템 기능 파악
◦
시스템 인터페이스 현황 파악
•
아키텍처 및 소프트웨어 구성 파악
◦
아키텍처 파악
◦
소프트웨어 구성 파악
•
하드웨어 및 네트워크 구성 파악
◦
시스템 하드웨어 현황 파악
◦
네트워크 구성 파악
소프트웨어 아키텍처
여러 소프트웨어 구성요소와 외부 특성, 구성요소 간의 관계를 표현하는 시스템 구조나 구조체
소프트웨어 아키텍처 프레임워크
소프트웨어 집약적인 시스템에서 아키텍처가 표현해야하는 내용 및 이들 간의 관계를 제공하는 아키텍처 표준 기술
소프트웨어 아키텍처 4+1 뷰
고객의 요구사항을 정리해둔 시나리오를 4개의 관점에서 바라보는 소프트웨어적 접근 방법
•
유스케이스 뷰 : 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는데 사용 (사용자, 설계자, 개발자, 테스트 관점)
•
논리 뷰 : 시스템의 기능적 요구사항이 어떻게 제공되는지 설명 → 클래스 다이어그램
•
프로세스 뷰 : 시스템의 비기능적 속성. 병행 실행, 비동기, 이벤트 처리 등을 표현
•
구현 뷰 : 정적인 소프트웨어 모듈의 구성 → 컴포넌트 뷰, 컴포넌트 다이어그램
•
배포 뷰 : 물리적인 노드의 구성 → 시스템 아키텍처
소프트웨어 아키텍처 패턴
소프트웨어를 설계할 때 참조할 수 있는 전형적 해결 방식. 일반화되고 재사용 가능한 솔루션
•
계층화 패턴 : 추상화, 계층 간 연결
•
클라이언트-서버 패턴 : 하나의 서버와 다수의 클라이언트
•
파이프-필터 패턴 : 데이터 스트림을 생성하고 처리하는 시스템. 데이터 파이프라인
•
브로커 패턴 : 분리된 컴포넌트로 이루어진 분산 시스템. 컴포넌트 간 라우팅
•
MVC 패턴 : 대화형 애플리케이션을 모델, 뷰, 컨트롤러로 구조화
5. UML
️
️
️
고객/개발자 간 원활한 의사소통을 위해 표준화한 대표적 객체지향 모델링 언어. 여러 객체지향 방법론의 장점 통합.
UML 구성요소
사물, 관계, 다이어그램(6개의 구조, 7개의 행위 다이어그램) (사과다)
•
사물 : 구조(개념, 물리적 요소), 그룹, 행동, 주해(제약조건)
•
관계
◦
연관 관계 : 2개 이상의 사물 서로 관련
◦
집합 관계 : 하나의 사물이 다른 사물에 포함
◦
포함 관계 : 포함되는 사물에게 영향 미침
◦
일반화 관계 : 사물끼리 일반/구체적인지 표현
◦
의존 관계 : 연관은 있으나 서로 영향을 줄 때만 연관을 유지
◦
실체화 관계 : 행위, 인터페이스로 서로 그룹화할 수 있는 관계
•
구조 다이어그램 (클객컴패복패)
◦
클래스 - 구조
◦
객체 - 객체 간 관계
◦
컴포넌트 - 구현, 인터페이스
◦
배치 - 물리적 위치
◦
복합체 구조 - 내부 구조
◦
패키지 - 그룹화
•
행위 다이어그램 (유시커상활타상)
◦
유스케이스 - 모델링
◦
시퀀스 - 메시지
◦
커뮤니케이션 - 메시지 + 연관관계
◦
상태 - 상태 변화
◦
활동 - 로직 흐름
◦
타이밍 - 시간 제약
◦
상호작용 개요 - 제어 흐름
