정보처리기사 필기 준비하며 정리한 내용입니다.
소프트웨어 공학
품질 높은 소프트웨어를 개발하기 위한 학문
소프트웨어 공학의 3R
- 역공학 Reverse Engineering
- 기본에 개발된 시스템을 CASE 도구를 이용해 문서로 추출.
- 개발단계를 역으로 올라가는 것
- 재공학 Re-engineering
- 기존 시스템 재구성 + 이기종에서 사용할 수 있도록 변환.
- 예방 보수와 관련됨
- 유지 운영. 유지보수성 향상
- 과정 ⭐
- 분석 → 재구성 → 역공학 → 이관(마이그레이션)
- 기존 시스템 재구성 + 이기종에서 사용할 수 있도록 변환.
- 재사용 Reuse
- 이미 개발된, 잘 만들어진 소프트웨어 전체 또는 일부분 다시 사용
- 범위
- 함수와 객체
- 컴포넌트
- 애플리케이션
- 방법
- 합성Composition 중심 : 블록(모듈)을 끼워맞춰서
- 생성Generation 중심 : 추상화 형태로 쓰여진 명세를 구체화
소프트웨어 개발 단계
- 계획 : 비용, 기간 예측
- 요구사항 분석 : 기능, 비기능
- 설계
- 시스템 구조 설계 : 모듈 간의 관계와 구조
- 프로그램 설계 : 모듈 처리 절차나 알고리즘
- 사용자 인터페이스 설계 : 사용자가 시스템을 사용하기 위해 보여지는 부분 설계
- 구현
- 코딩, 디버깅, 실제로 작성
- 단위(모듈)테스트 진행
- 테스트
- 유지보수
- 수정 보수 Corrective Maintenance
- 테스트 때 발견 못한 잠재적 오류 찾아 수정 (하자 보수)
- 적응 보수 Adaptive Maintenance
- 운영체제 같은 환경 변화에 맞추기 위함.
- 향상 보수 Perfective Maintenance
- 새 기능 추가, 기존 기능 개선, 요구사항 계속 받아들임.
- 예방 보수 Preventive Maintenance
- 선제적으로 하는 유지 보수. 미리 예방수단 강구. 재공학과 관련됨.
- 수정 보수 Corrective Maintenance
소프트웨어 개발 방법론
- 구조적 방법론
- 정보공학 방법론
- 기업에 초점을 두는 데이터 중심 방법론
- 계획 수립 → 업무 영역 분석 → 설계 → 구축
- 객체지향 방법론
- 캡슐화, 정보 은닉, 상속, 다형성, 추상화
- CBD 분석 방법론
- Component Based Development
- 재사용 가능한 컴포넌트 개발
- 또는 상용 컴포넌트 조합으로 개발
- 확장성
- 애자일 방법론
- 변화에 빠른 대응을 위함
- 종류
- XP (eXtreme Programming)
- 5가지 핵심가치
- 의사소통
- 피드백
- 존중
- 용기
- 단순성
- 12가지 실천사항
- 짝 프로그래밍
- 계획 세우기
- 테스트 기반 개발
- 고객 상주
- 지속적인 통합
- 코드 개선
- 작은 릴리즈
- 코딩 표준
- 공동 코드 소유
- 간단한 디자인
- 시스템 메타포어
- 작업 시간 준수
- 5가지 핵심가치
- SCRUM 스크럼
- 개발 주기 30일 정도로 조절
- 개발 주기마다 실제 동작할 수 있는 결과 제공
- 주요 개념
- 제품 백로그 : 요구 사항 목록
- 스프린트 : 반복적 개발 주기. 1~3주
- 일일 스크럼 회의 : 날마다 진행되는 15분 정도의 미팅
- 스크럼 마스터 : 프로젝트 관리자
- 개발 주기 30일 정도로 조절
- FDD (Feature-Driven Development) : 기능
- Crystal
- ASD (Adaptive Software Development)
- 개발은 혼란! 적응해야 한다!는 방법론
- Lean
- XP (eXtreme Programming)
소프트웨어 생명주기 모델 SDLC
Software Development Life Cycle
기획, 개발부터 폐기까지의 전 과정
- 일반적인 소프트웨어 생명 주기
- 정의 (계획) : 검토
- 개발 : 설계, 구현, 테스트 진행
- 유지보수
소프트웨어 개발 모델
폭포수 모델
- 순차적. 단계별 산출물 명확
프로토타이핑 모델
- 프로토타입(시제품)으로 구현하여 완성해가는 모델
나선형 모델 ⭐
- 폭포수와 프로토타이핑의 장점 + 위험 분석 추가
- 점증적 개발 모델
- 대규모, 위험 부담 큰 시스템 개발
- 순서
- 계획 및 요구분석
- 위험분석 ⭐
- 프로토타입 개발
- 사용자 평가
- 위의 과정을 반복
RAD (Rapid Application Development) 모델
- 매우 짧은 개발 주기
- CASE 도구 이용
- 소규모
V 모형
- 폭포수 모델 + 시스템 검증과 테스트 작업
- 순서
- 계획 설계 구현
- 단위 테스트
- 통합 테스트
- 시스템 테스트
- 인수 테스트
4세대 기법
- CASE같은 자동화 도구 이용
- 원시코드 자동 생성
소프트웨어 개발 비용 계획
비용 산정 기법
하향식 산정 기법 : 사람이
- 전문가 판단 기법
- 조직 내 경험 있는 전문가가 비용 산정
- 델파이 기법
- 여러 전문가 의견 종합
상향식 산정 기법 : 라인 수로
- 원시 코드 라인 수
- LOC, Line Of Code
- ⭐ 추정 LOC : (낙관치 + (4 * 중간치) + 비관치) / 6
- 개발 단계별 노력 기법
- LOC 확장
수학적 산정 기법 ⭐
- COCOMO 기법 ⭐⭐
- LOC 기법을 소프트웨어 종류에 따라 다르게 적용시키는 것. 즉 라인수로 판단
- 개발 유형
- 조직형 Organic
- 5만 라인 이하
- 일반 업무용 소프트웨어
- 5만 라인 이하
- 반분리형 Semidetached
- 30만 라인 이하
- 운영체제 등
- 30만 라인 이하
- 내장형 Embedded
- 30만 라인 이상
- 미사일
- 30만 라인 이상
- 조직형 Organic
- Putnam 기법
- Rayleigh-Norden 곡선
- SLIM : 자동화 추정도구
- 기능 점수 기법 FP (Function Point)
- 기능 개수 기준
- ESTIMACS : 자동화 추정 도구
- 기능 분류
- 기능 점수
- 데이터 기능
- 내부논리파일ILF
- 외부연계파일EIF
- 트랜잭션 기능
- 외부입력EI
- 외부출력EO
- 외부조회EQ
- 데이터 기능
- 기능 점수
- 비용 산정에 이용되는 요소 ⭐
- 자료 입력
- 입력 양식
- 정보 출력
- 출력 보고서
- 명령어
- 사용자 질의수
- 데이터 파일
- 필요한 외부 루틴과의 인터페이스
- 자료 입력
소프트웨어 개발 일정 계획
- 작업 순서 ⭐
- 작업 분해 Work Breakdown Structure
- 업무 세분화
- CPM 네트워크 작성
- 최소 소요 기간을 구함
- 소요 M/M (man/month), 기간 산정하여 CPM 수정
- 간트 차트로 표현
- bar 형태의 도구
- 작업 분해 Work Breakdown Structure
Network Chart (PERT/CPM)
- PERT
- 미군 미사일 프로젝트 일정 관리 위해 개발, 시간 단축 목표
- 예측치 = (낙관치 + (4 * 중간치) + 비관치) / 6 ← LOC와 동일
- 작업 선 후행 관계 고려하여 전체 작업의 완료 시간 결정
- CPM (Critical Path Method)
- 듀폰, 레밍톤 사 유지 관리 위해 개발, 시간 단축 목표
- 추가비용 투입을 고려하여 전체 작업 완료시간 단축
- 듀폰, 레밍톤 사 유지 관리 위해 개발, 시간 단축 목표
- PERT/CPM
- 위 둘울 합친 것
- 임계경로 ⭐
- 프로젝트 끝내기 위해 필요한 최소 소요기간
- CPM 소작업 리스트 → CPM 네트워크 작성 (노드와 엣지로 이루어진) → 소요 기간 산정
소프트웨어 테일러링
테일러링 ⭐
테일러링은 재단하다 라는 뜻.
이미 정의된 개발 방법론의 절차, 기법, 산출물등을 수정하여 프로젝트 에 맞게 적용하는 기법.
테일러링의 필요성
아래의 항목들이 다를 경우
- 내부적 요인
- 개발 환경
- 요구 사항
- 프로젝트 규모
- 보유 기술
- 외부적 요인
- 법적 제약사항
- 표준 품질기준
테일러링 절차 항목
- 프로젝트 특성 파악
- 베이스라인 방법론 산정
- 테일러링 수행
- 테일러링 프로세스 교육
테일러링을 위한 소프트웨어 개발 프레임워크
- ISO/IEC 12207
- CMMI
- SPICE
소프트웨어 개발 표준
국제 표준 제품 품질 특성
소프트웨어 개발 프레임워크
서버 개발 프레임워크
프레임워크의 특징
- 모듈화
- 재사용성
- 확장성
- 제어의 역흐름 inversion of control
구분
- 자바 : 전자정부 표준, 스트럿츠, 스프링
- ORM : 아이바티스 마이바티스 하이버네이트