
✅ SDLC
◾️ XP(eXtreme Programming)
소프트웨어 생명주기 모형 중 agile 모형에 해당하는 개발 기법.
요구사항에 유연하게 대응하기 위해 참여와 짧은 개발 과정의 반복을 극대화하여 개발 생산성을 향상시킨다.
주요 실천 방법 7가지
- Pair Programming(짝 프로그래밍) : 함께 프로그래밍함으로써 책임을 공동으로 나눠 갖는 환경을 조성
- Collective Ownership(공동 코드 소유) : 개발 코드에 대한 권한과 책임을 공동으로 소유
- Test-Driven Development(테스트 주도 개발)
- Whole Team(전체 팀) : 모든 구성원은 각자 역할이 있음. 책임을 다해야 함.
- Continuous Intergration(지속적인 통합): 모듈 난위로 나눠서 개발된 코드들은 마무리 될 때마다 지속적으로 통합됨.
- Refactoring : 프로그램을 기능의 변경없이 시스템을 재구성함
- Small Release(소규모 릴리즈)
✅ 요구사항
요구 공학
📌 요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문
요구사항 확인
📌 요구사항 개발 프로세스 중, 요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 단계
◾️ 요구사항 분석
개발 대상에 대한 사용자의 요구사항을 이해하고 문서화 하는 단계.
◽️ 구조적 분석 기법
자료의 흐름과 처리를 중심으로 하는 요구사항 분석 방법
- 자료 흐름도(DFD;Data Flow Diagram)
자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법.
프로세스, 자료 흐름, 자료 저장소, 단말 이 4가지 기호로 표현 가능.
- 자료 사전(DD;Data Dictionary)
자료 흐름도에 있는 자료를 더 자세히 정의하고 기록하는 것.
◽️ 요구사항 분석용 CASE(자동화 도구)
요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구
ex) SADT, SPEM=RSL/REVS, PSL/PSA, TAGS
시스템의 분석 및 설계, 또는 문서화에 사용되는 기법으로, 시스템 실행과정인 입력&처리&출력의 기능을 표현한 것이다.하향식 SW 개발을 위한 문서화 도구이고 기능과 자료의 의존 관계를 동시에 표현할 수 있다.
◾️ UML(Unified Modeling Language) ⭐️⭐️⭐️
시스템 개발 과정에서 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어. 사물, 관계, 다이어그램 3가지로 구성됨.
◽️ 사물
다이어그램 안에서 관계가 형성될 수 있는 대상들
◽️ 관계
사물 간의 연관성을 표현하는 것
- 연관(Assocation) 관계 : 사람 - 집
- 집합(Aggregation) 관계 : 컴퓨터 - 프린터
- 포함(Composition) 관계 : 문 - 키
- 일반화(Generalization) 관계 : 커피 - 아메리카노 - 에스프레소
- 의존(Dependency) 관계 : 등급 - 할인율
- 실체화(Realization) 관계 : 날 수 있다 - 새 - 비행기
◽️ 다이어그램 ⭐️
- 구조적 다이어그램
- 행위 다이어드램
- 스테레오 타입 : UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하는 것.
<<include>> : 연결된 다른 UML 요소에 대해 포함 관계
<<extend>> : 연결된 다른 UML 요소에 대해 확장 관계
◽️ UML 다이어그램 예시
기능 모델링
📌 개발될 시스템이 갖춰야 할 기능을 정리한 후 사용자와 함께 정리된 내용을 공유하기 위해 그림으로 표현하는 것
- 유스케이스 다이어그램 : 외부요소와 시스템 간 상호작용 확인
- 시스템/시스템 범위
- 액터(주액터, 부액터) : 시스템과 상호작용하는 모든 외부요소
- 유스케이스 : 사용자 관점에서 시스템이 액터에게 제공하는 서비스나 기능
- 관계(포함, 확장, 일반화 관계)
- 액티비티 다이어그램 : 시스템의 흐름 확인
- 액션/액티비티 : 작업
- 시작 / 종료 노드
- 조건(판단) / 병합 노드 : 조건에 따라 제어의 흐름이 분리 or 합쳐짐을 표현
- 포크 / 조인 노드 : 액티비티 흐름이 분리 or 합쳐짐을 표현
- 스윔레인 : 액티비티 수행을 담당하는 주체를 구분하는 선
정적 모델링
📌 사용자가 요구한 기능을 구현하는 데 필요한 자료들의 논리적인 구조를 표현한 것.
- 클래스 다이어그램 : 시스템 구성 요소를 문서화하는 데 사용됨
- 클래스 : 각 객체의 속성과 오퍼레이션을 표현한 것. 클래스명, 속성, 오퍼레이션을 표기함
- 제약 조건
- 관계
- 연관 클래스 : 연관 관계에 있는 두 클래스에 추가적으로 표현해야할 속성이나 오퍼레이션이 있는 경우 생성하는 클래스
- 패키지 다이어그램 : 요소들을 그룹화한 패키지 간 의존관계 표현
동적 모델링
📌 시스템의 내부 구성요소들의 상태 변화 과정과 과정에서 발생하는 상호작용을 표현한 것.
✅ S/W 공학의 발전적 추세
◽️ SW 재사용
이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것.
- 합성 중심 : 블록을 끼워 맞춰 SW를 완성시키는 방법;블록 구성 방법
- 생성 중심 : 추상화 형태로 써진 명세를 구체화;패턴 구성 방법
◽️ SW 재공학
기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가하여 SW 성능을 향상시키는 것.
◽️ CASE(Computer Aided Software Engineering)
SW 개발 과정에서 사용되는 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것.
✅ SW 개발 비용 산정 기법
◾️ 상향식 비용 산정 기법 종류
◽️ LOC(원시 코드 라인 수) 기법
비관치, 예측치, 낙관치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정
◽️ 개발 단계별 인월수(Effort Per Task) 기법
기능을 구현시키는 데 필요한 노력을 생명 주기와 각 단계별로 산정
◽️ 수학적 산정 기법
- COCOMO 모형 : LOC 에 의한 비용 산정 기법
- 개발 유형
- 조직형 : 5만 라인 이하
- 반분리형 : 30만 라인 이하
- 내장형 : 30만 라인 이상
- 종류
- 기본형 : 크기와 개발 유형만을 이용하여 비용 산정
- 중간형 : 공식 + 제품, 컴퓨터, 개발요원, 프로젝트 특성 참고
- 발전형 : 중간형을 보완
- PUTNAM 모형
소프트웨어 생명주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
- 기능점수(FP) 모형
소프트웨어의 기능을 증대시키는 요인별로 기능점수(FP)를 구한 후 이를 이용해서 비용을 산정하는 기법
◾️ 프로젝트 일정 계획
-
PERT(Program Evaluation and Review Technique;)
프로그램 평가 및 검토 기술
전체 작업의 상호 관계를 표시하는 네트워크
- 작업 예측치 = (비관치 + 기대치*4 + 낙관치) / 6
- 평방 편차 = [(비관치-낙관치)/6]**2
-
CPM(Critical Path Method)
임계 경로 기법
작업을 나열하고 작업에 필요한 소요 기간을 예측하는 데 사용하는 기법
노드, 간선, 이정표로 표현함.
-
간트 차트
작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
✅ SW 개발 표준
SW 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준
◽️ ISO/IEC 12207
ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
- 기본 생명 주기 프로세스
- 지원 생명 주기 프로세스
- 조직 생명 주기 프로세스
◽️ CMMI(Capabliti Maturity Model Integration)
SW 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델이다.
성숙도(5)
◽️ SPICE(Software Process Improvement Capability dEtermine)
SW 품질 및 생산성 향상을 위해 SW 프로세스를 평가 및 개선하는 국제 표준
SPICE의 구성(고공지관조)
수행 능력 단계(6)