1. 소프트웨어 생명 주기
- 소프트웨어를 개발하기 위한 과정을 각 단계별로 나눈 것
- 나선형 모형, 폭포수 모형, 프로토타입 모형, 애자일 모형 존재
나선형 모형
- 여러번의 SW 개발 과정을 겇려 점진적으로 완벽한 최종 SW를 개발하는 모형
폭포수 모형
- 고전적 생명 주기 모형
프로토타입 모형
- 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측
애자일 모형
- 특정한 개발 방법론X, 요구사항 변화에 유연하게 대응, 일정한 주기 반복
- 스크럼, XP, 칸반, 린, 기능중심개발(FDD) 등
- 소프트웨어 공학 : 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문
- 여러가지 방법론과 도구, 관리 기법들을 통하여 소프트웨어의 품질과 생산성 향상을 목적
- 스크럼
1) PO(백로그 담당), SM(가이드 역할), DT(그냥 일반 팀원)
2) 스프린트 계획 회의 -> 스프린트 -> 일일 스크럼 회의, 스프린트 검토 회의 -> 스프린트 회고
- XP
1) 의사소통, 단순성, 용기, 존중, 피드백
2) XP 실천 방법 : 페어 프로그래밍, 공동 코드 소유, 테스트 주도 개발, 전체 팀, 계속적 통합, 리팩토링, 소규모 릴리즈
2. 관리 시스템들
- DBMS : 가용성, 성능, 기술 지원, 구축 비용, 상호 호환성
- WAS(웹 어플리케이션 서버) : 가용성, 성능, 기술 지원, 구축 비용
- 오픈 소스 : 라이선스 종류, 사용자 수, 기술의 지속 가능성
3. 요구사항
- 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는 데 필요한 제약조건
- 기능 요구사항 : 시스템이 무엇을 하는지, 어떤 기능을 하는지 등에 대하나 기능이나 수행과 관련된 요구사항
- 비기능 요구사항 : 품질이나 제약사항과 과련된 요구사항
- 요구사항 개발 프로세스
1) 도출
2) 분석
- 개발 대상에 대한 사용자의 요구 사항을 이해하고 문서화 하는 활동
- DFD : 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술. 구조적 분석 기법에 이용
- 프로세스, 자료 흐름, 자료 저장소, 단말로 구성
- 자료 사전 : 정의(=), 연결(+), 생략( ( ) ), 선택([]), 반복( { } ), 설명(**)
- 분석용 CASE : 요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구
- SADT, SREM(=RSL/REVS), PSL/PSA, TAGS
- SADT : SoftTech 개발. 시스템 정의/소프트웨어 요구사항 분석/시스템 및 소프트웨어 설계를 위한 도구
- HIPO : 시스템 실핼 과정인 입력, 처리, 출력의 기능을 표현한 것. 하향식 소프트웨어 개발을 위한 문서화 도구
- 고유 모듈로 분할하여 이들 간의 인터페이스를 계층 구조로 표현한 것을 HIPO Chat라고 함.
3) 명세
- 분석된 요구사항을 바탕으로 모델 작성, 문서화
- 정형 명세 기법 : VDM, Z, Petri-net, CSP
- 비정형 명세 기법 : FSM, Decision, Table, ER모델링, State Chart(SADT) 등
4) 확인
3. UML
- UML은 시스템 개발 과정에서 참여자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적 객체지향 모델링 언어
- 구성 요소는 사물(Things), 다이어그램(Diagram), 관계(Relationships)
- 다어어그램은 사물과 관계를 도형으로 표현한 것
- 구조적 다이어그램
- 클래스 다이어그램
- 클래스, 제약조건, 관계로 구성
- 연관 클래스 : 연관 관계에 있는 두 클래스에 추가적으로 표현해야 할 속성이나 오퍼레이션이 잇는 경우 생성하는 클래스
- 객체 다이어그램 : 럼바우의 객체 지향 분석 기법, 인스턴스를 특정 시점의 객체와 개체 사이의 관계로 표현
- 컴포넌트 다이어그램 : 구현 단계에서 사용, 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현
- 배치 다이어그램 : 구현 단계에서 사용, 물리적 요소의 위치
- 복합체 구조 다이어그램 : 복합 구조
- 패키지 다이어그램 : 유스케이스나 클래스 등의 모델 요소를 그룹화한 패키지들의 관계를 표현
- 패키지, 객체, 의존관계
- 클래스 다이어그램
- 행위 다이어그램
- 유스케이스 다이어그램 : 시스템, 액터, 유스케이스, 관계로 구성됨
- 포함관계(include) : 새롭게 만든 유스케이스 쪽으로 점선 화살표 연결
- 확장관계(exclude) : 원래 유스케이스 쪽으로 점선 화살표 연결
- 시퀀스 다이어그램 : 시스템, 객체들의 메세지
- 액터, 객체, 생면선, 실행 상자, 메시지, 객체 소멸, 프레임
- 커뮤니케이션 다이어그램 : 객체들의 메시지, 객체들 간 연관 관계 표현(시퀀스와의 차이점)
- 상태 다이어그램 : 럼바우 동적 모델링 활용, 상호작용에 따라 상태 변화하는 것 표현
- 상태, 시작 상태, 종료 상태, 이벤트, 프레임
- 활동 다이어그램 : 객체 처리 로직이나 조건에 따른 처리 흐름(조건 노드 등)
- 상호작용 개요 다이어그램, 타이밍 다이어그램 : 이름 그대로 쓰면 됨
- 유스케이스 다이어그램 : 시스템, 액터, 유스케이스, 관계로 구성됨
- 관계는 사물과 사물 사이의 연관성을 표현한 것
- 연관 관계 : Association, 실선 연결, 서로 관련되어 잇는 관계( 사람 - 집)
- 집합 관계 : Aggregation, 속이 빈 마름모, 포함되어 있는 관계(컴퓨터 - 마우스)
- 포함 관계 : Composition, 속 찬 마름모, 포함하는 사물 변호가 포함되는 사물에게 영향을 미치는 관계( 문 - 키)
- 일반화 관계 : Generalization, 속이 빈 화살표, 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계(커피 - 아메리카노, 에스프레소)
- 의존 관계 : Dependecy, 점선 화살표, 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계(등급-할인율)
- 실체화 관계 : 속이 빈 점선 화살표, 사물이 할 수 있거나 해야하는 기능(날 수 있다- 새, 비행기)
- 럼바우, 부치, 제이콥스 등의 객체지향 방법론의 장점을 통합함.
- 스테레오 타입 : UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하는 것(<< >>) 내에 표현할 형태를 기술
5. 개발 방법론
- 객체지향 방법론 : 개체를 하나의 객체로 만들어 이 객체들을 조립해서 필요한 SW를 구현하는 방법롭
- 요구사항 분석 - 설계 -구현 -테스트-유지보수(인도)
- 컴포넌트 기반 방법론 : 기존의 시스템이나 SW를 구성하는 컴포넌트를 조합하여 하나의 새로운 App을 제작
- 개발 준비-분석-설계-구현-테스트-전개-인도
- 소프트웨어 재사용 : 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
- 합성 중심 : 블록을 끼워 맞춰 소프트웨어를 완성(블록 구성 방법이라고도 함)
- 생성 중심 : 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법(패턴 구성방법이라고도 함)
- 소프트웨어 재공학 : 기존 시스템을 이용하여 나온 시스템을 구축, 새로운 기능 추가로 SW성능 향상
- CASE : SW 개발 과정에서 사용되는 과정 전체 또는 일부를 컴퓨터와 전용 SW도구를 사용하여 자동화
- 소프트웨어 생명 주기 전 단계 연결, 그래픽 지원, 다양한 SW 개발 모형 지원
- 비용 산정 기법
- 하향식 비용 산정 기법 : 전문가 감전 기법, 델파이 기법
- 상향식 비용 산정 기법 :
- LOC : 낙 + 중*4 + 비/6
- COCOMO : 보햄 제안, LOC에 의함, Man-Month로 나타냄.
- COCOMO 유형 : 조직형(5만 이하), 반분리형(30만 이하), 임베디드형
- 수학적 산정 기법
- Putnam : 노력 분포를 예상. Rayleigh-Nordon 곡선 노력 분포도가 기초. 푸트남이 제안. 생명 주기 예측 모형
- 기능 점수 모형 : 소프트웨어의 기능을 증대시키는 요인 별로 가중치 부여, 기능 점수 구한 후 비용 산정
- 자료 입렵(입력 양식), 정보 출력(출력 보고서), 명령어(사용자 질의수), 데이터 파일, 외부 루틴과의 인터페이스
- 비용 산정 자동화 추정 도구 : SLIM(Rayleigh-Norden + Putnam), ESTMACS(FP모형)
- PERT : 전체 작업의 상호 관계를 표시하는 네트워크(낙관, 가능성, 비관으로 종료 시기 결정)
- CPM : 필요한 작업 나열, 작업에 필요한 소요 기간 예측. 임계 경로(최장 경로) 찾기
- 간트 차트 : 시간선 차트, 막대 도표를 이용하여 작업 일정을 표시하는 프로젝트 일정표
- 소프트웨어 생명 주기 표준 및 평가 모델
- ISO/IEC 12207 : 생명 주기 프로세스, 기본, 지원, 조직으로 나눔
- CMMI : 초기, 관리, 정의, 정량적 관리, 최적화(초관정정최)로 나눠 업무 능력 및 조직 성숙도를 평가
- SPICE: ISO/IEC 15504, 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가.
- 불안정, 수행, 관리, 확립, 예측, 최적화
- 테일러링 : 소프트웨어 개발 방법론의 사용기법 등을 수정 및 보완하는 작업
- 내부적 기준 : 목표 환경, 요구사항, 프로젝트 규모, 보유기술
- 외부적 기준 : 법적 제약사항, 표준 품질 기준
- 개발 프레임워크 : SW 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화 -> 반제품 형태의 SW 시스템
- 스프링 : 자바를 위한 Open Source 경량형 App Framework
- 특성 : 모듈화, 재사용성, 확장성, 제어의 역흐름