CS 공부
정보처리기사 실기 공부 ①
Algomalgo
2024. 4. 17. 04:43
728x90
- 소프트웨어 공학의 3R
- 정의 : 완성된 소프트웨어를 기반으로 역공학(Reverse Engineering), 재공학(Re-engineering), 재사용(Re-use)을 통해 소프트웨어의 생산성을 극대화하는 기법
- 역공학
- 차세대 : 재개발 + 재사용 (뭔가 새롭게 만들기)
- 고도화 : 재공학(기존에 뭔가 덧붙이기)
- 재공학
- 재사용
- 방법
- 합성 중심 : 모듈을 끼워 맞춰서 소프트웨어를 완성시키는 방법
- 생성 중심 : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
- 방법
- 소프트웨어 개발 단계
- 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
- 계획 : 범위, 비용, 일정 등을 정함
- 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
- 소프트웨어 개발 방법론 종류
- 구조적 방법론
- 절차지향 소프트웨어(ex: C언어) 개발 방법론
- 제한된 구조에서 코드 생성 및 순차적 실행(하향식)
- 정보공학 방법론
- 기업에서 사용한다.
- 객체지향 개발 방법론
- Java, Python 등에서 사용하며, 분석, 설계, 구현의 전과정을 객체 중심으로 개발하는 상향식 개발이다.
- 객체, 클래스 간의 관계를 식별해 설계 모델로 변환하는 방법론
- 현실 세계의 개체(Entity)를 속성(Attribute)과 메서드(Method)로 표현
- 특징 : 캡슐화, 정보은닉, 상속, 다형성(오버로딩[매서드이름 동일], 오버라이딩[함수 재정의]), 추상
- CBD(Component Based Development) 분석 방법론
- 재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트를 조합해 어플리케이션 개발
- 새로운 기능 추가가 쉬운 확장성
- 생산성 및 품질 향상
- 애자일 방법론
- 기존 방법론들이 절차를 중시한 나머지 변화에 빠른 대응을 할 수 없는 단점 개선을 위해 등장
- XP, SCRUM, FDD, Crystal
- 구조적 방법론
- 소프트웨어 개발 모델
- 폭포수 모델(WaterFall Model)
- 계획, 분석, 설계, 구현, 테스트, 운영 등 전 과정을 순차적으로 접근하는 개발모델(선형 순차 모델)
- 문서화에 중시한다.
- 각 단계 검증 후에 다음 단계를 순차적으로 진행되므로 나중의 요구사항의 변경이 어렵다.
- 가장 오래된 모형으로 적용 경험과 성공사례가 많다.
- 프로토타이핑 모델(Prototyping Model)
- 고객이 요구한 주요 기능을 프로토타입으로 구현해 완성해나가는 모델, 사전에 만들어 요구사항을 유도 및 수집한다. ("시제품")
- 사용자 평가 및 오류를 초기에 발견할 수 있다.
- 나선형 모델(Spiral Model)
- 폭포수 모델과 프로토타이핑 모델의 장점을 수용하고, "위험 분석"을 추가한 점증적 개발 모델
- 위험을 관리 및 최소화 목적
- 대규모 프로젝트 및 위험 부담이 큰 시스템 개발에 적합
- 순서 : 계획 수립 > 위험 분석 > 공학적 개발 > 평가
- RAD(Rapid Application Development) 모델
- 매우 짧은 개발 주기를 강조하며, 강력한 소프트웨어 개발 도구를 이용하는 순차적 소프트웨어 개발이다.
- CASE(Computer Adied Software Engineering) 도구를 이용해 시스템으로 개발하며 60~90일 정도의 개발 기간을 갖는다.
- 기술적으로 위험이 적고 빠른 개발이 요구될 때 사용된다.
- V 모형
- 폭포수 모델에 시스템 검증과 테스트 작업을 강조
- 높은 신뢰성이 요구되는 분야에 적합
- 요구분석 > 아키텍처 설계 > 모듈 설계 > 구현 > 단위 테스트(정적/동적) > 통합테스트(상향식[드라이버], 하향식[스텁], 빅뱅) > 시스템 테스트(기능/비기능) > 인수 테스트(알파[사용자+개발자]/베타[사용자])
- 4세대 기법
- CASE 등의 자동화도구를 이용해 요구사항 명세로부터 원시코드를 자동으로 생성
- 폭포수 모델(WaterFall Model)
- 애자일 방법론
- 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론
- 공적과 도구보다 개인과 상호작용을
- 포괄적인 문서보다 작동하는 소프트웨어를
- 계약 협상보다 고객과의 협력을
- 계획을 따르기보다 변화에 대응하기를
- 애자일 방법론 종류
- XP(eXtream Programming)
- 문서보다는 코드를 중시하고, 5가지 핵심가치(용기, 존중, 의사소통, 피드백, 단순성)와 12개 실천항목이 존재(의사선생님, 약 담아서 주실 때 피존용기에 담아서 주세요)
- 개발을 세분화해 1~3주의 반복으로 개발을 진행
- SCRUM
- 소프트웨어에 포함될 기능 및 개선점에 대한 우선 순위를 부여
- 개발 주기는 30일 정도 스프린트 단위로 조절하고 개발 주기마다 실제 동작 가능한 결과를 제공
- 개발 주기마다 적용할 기능 및 개선에 대한 목록 작성
- 날마다 15분의 회의
- 항상 팀 단위로 생각
- 크리스털 패밀리(Crystal) : 프로젝트의 규모와 영향의 크기에 따라서 여러 종류 방법론을 제공
- Feature-Driven Development(FDD) : feature마다 2주 정도의 반복 개발을 실시, 기능 주도 개발
- Adaptive Software Development(ASD) : 합동 애플리케이션 개발을 사용하는 방법
- XP(eXtream Programming)
계획 > 분석 > 설계 > 구현 > Test > 유지보수
- 프로젝트 관리 : 기간, 예산, 자원 내에서 제품을 개발하도록 행하는 기술적, 관리적 활동
- 프로젝트 핵심 관리대상(3P) : People, Problem, Process
- PMBOK(Project Management Body of Knowledge) : PMI에서 제작한 프로젝트 관리 프로세스 및 지식 체계
- 단계 : 프로젝트 착수 > 계획 > 실행 > 통제 > 종료
- 1단계 [프로젝트 착수] : 광범위한 프로젝트의 범위를 정하는 단계
- 2단계 [프로젝트 계획] : 프로젝트 세부 범위 정의하고, 관리 계획을 만드는 단계(비용, 품질, 기간, 자원)
- 3단계 [프로젝트 실행] : 프로젝트가 개발되고 완료되는 단계
- 4단계 [프로젝트 통제] : 계획 대비 목표의 진척상황을 모니터링하고 성과 측정
- 5단계 [프로젝트 종료] : 프로젝트가 요구사항을 만족하는지 검증하고, 고객으로부터 확인받는 단계
- 개발 비용 산정
- 하향식 : 전문가 기법, 델파이 기법
- 전문가 기법 : 조직 내 경험 있는 전문가에게 비용 산정 의뢰
- 델파이 기법 : 여러 전문가의 의견을 종합해 판
- 상향식 : LOC(원시코드 라인수) 기법, 단계별 인원수(M/M) 기법
- LOC : (낙관치 + (4*중간치) + 비관치) / 6
- 수학적 : COCOMO 기법, PUTNAM 기법, FP(기능점수) 기법
- COCOMO : 조직형(5만 라인 이하), 반분리형(30만 라인 이하), 내장형(30만 라인 이상)
- PUTNAM : Rayleigh-Norden 곡선의 노력 분포도를 기초로 함. SLIM 자동화 추정도구를 쓴다.
- FP : 소프트웨어가 가지는 기능의 개수를 기준으로 규모를 측정, ESTIMACS 자동화 추정도구를 쓴다.
- 하향식 : 전문가 기법, 델파이 기법
- 개발 일정 산정
- 작업 순서 : 작업 분해(WBS) > CPM 네트워크 작성 > 최소 소요 기간 구하기 > 소요 M/M, 기간 산정 후 CPM 수정 > 간트차트로 표현
- WBS(Work Breakdown Structure) : 업무 세분화, 전체를 큰 단위로 분할 후 각각을 더 작은 단위로 분해하여 계층적으로 표현, 담당인원을 배치하여 구성도 작성
- Network Chart(PERT/CPM)
- PERT : 미 해군의 미사일 개발 프로젝트에서 파생, 예측치 = (낙관치 + (4*기대치) + 비관치) / 6
- CPM : 화학공장 유지 및 관리를 위해 개발됨, 최소의 비용 추가 투입을 고려해 시간 단축을 목표로 함
- 작업의 선/후행 관계를 고려하여 전체 작업의 완료시간을 결정하고(PERT), 추가비용 투입을 고려해 전체작업 완료시간을 단축하는 (CPM) 네트워크 분석 기법
- 임계 경로 : 프로젝트를 끝내기 위해 필요한 최소 소요기간
- 빠른 착수일 : 바로 시작했을 때 걸리는 기간
- 늦은 착수일 : 바로 시작했을 때 걸리는 기간 + 여유 기간
- 간트 차트 : 일정 계획의 최종 산출물, 프로젝트 일정관리를 위한 바 형태의 차트
728x90