1. 소프트웨어 구축
소프트웨어공학
소프트웨어 공학 : 품질 높은 소프트웨어를 효율적으로 개발하기 위한 학문
소프트웨어 공학의 3R : (소프트웨어 생산성 향상을 목적)
- 역공학(reverse-engineering) : 기존 소프트웨어의 설계를 분석
- 재공학(re-engineering) : 유지보수를 통해
- 재사용(reuse) : 완성된 소프트웨어의 일부를 재사용
소프트웨어 개발 단계
- 계획
- 요구사항분석
- 설계
- 구현
- 테스트
- 유지보수 - 수정/향상/적응/예방 보수 4가
소프트웨어 개발 방법론
IT서비스관리
- SLM(service level management) - SLA기반
- ITSM(information technology service management) - ITIL기반
개발 방법론 5가지
- 하향식 (구조적 방법론)
- 상향식 (객체지향)
- 정보공학 (회사 내부의 데이터 사용)
- CBD(component based development),
- 애자일
모델
- 폭포수
- 프로토타입
- 나선형 : 폭포수 + 프로토타입, 계획 후 위험분석
- RAD : 케이스도구를 이용해서 빠르게 개발 진행
애자일 방법론 종류
- XP - 5가지 핵심가치 / 12가지 실천사
- scrum - 백로그(요구명세)/스프린트(개발주기)/제품백로그/스프린트백로
- 크리스털
- FDD
- ASD
- Lean
프로젝트 계획
현업에서의 개발 진행 프로세스
- RFP(request for proposal) : 제안요청
- 제안서 → 제안PT
- 우선협상
- 개발
- 운영
프로젝트 핵심 관리의 3P
- 사람
- 문제
- 프로세스 (전체 프로젝트를 관리하는 방법)
프로젝트 관리
- PMBOK(project management body of knowledge) : PMI에서 제작한 프로젝트 관리 체계. 5단계 존재
1. 비용 산정
- 추정 LOC = (낙관치 + (4*중간치) + 비관치) / 6
COCOMO 기법
LOC의 크기에 따라 각 비용을 산정하는 공식을 사용
- 조직형 : 5만라인 이하, 일반 업무용 소프트웨어
- 반분리형 : 5~30만라인, 운영체제/dbms
- 내장형 : 30만라인 이상, 미사일 유도 시스템
PUTNAM 기법
- SLIM : Rayleigh-norden곡선과 putnam예측모델을 기반으로 하는 자동화 추정 도구
기능점수 기법 (FP, Funtion Point)
- 소프트웨어의 기능 개수를 기준으로 규모 측정
- ESTMACS : FP모델을 기반으로 한 자동화 추정 도구
일정 산정
- WBS (work breaken structure) : 전체 작업을 작은 단위로 분해
- 네트워크 차트(PERT/CPM) 작: 각 작업의 순서 및 의존성 설정, (pert : 불확실상황, cpm : 확실)
- 임계 경로: 최소한의 소요 시간(가장 긴 작업기간)
- pert/cpm 수정 : 인력배치,기간을 고려하여 수정작업
- 간트 차트 : 시각적 가로 막대로 표시
요구사항 분석
CPND(content platform network device) : 콘텐츠를 플랫폼에 맞게 가공, 네트워크를 통해 단말기로 이루어지는 서비스를 표현하는 가치사슬
미들웨어의 종류 7가지
- 미들웨어 : 양쪽을 연결하여 데이터를 주고받는 중간 매개 역할의 소프트웨어
- RPC, MOM, ORB, DB, TPM, WAS, ESB
- 원격 프로시저 호출(Remote Procedure Call)
- 메시지 지향 미들웨어(Message Oriented Middleware) :클라이언트가 생성한 메세지를 저장소에 요청할 때 저장하는 비동기식 미들웨어(ex, n잡 스트리밍 시 각 클라의 영상 기록을 메세지로 전달. 수많은 메세지 발생으로 서버 부하 → 저장해뒀다가 추후 저장소로 업데이트하는 비동기 방식으로 진행)
- ORB(Object Request Broker) : 객체지향시스템에서 사용
- DB접속 미들웨어 : 앱과 dbms를 연결
- TP모니터(Transaction Processing Monitor) : 분산시스템 지
- 웹애플리케이션 서버(Web Application Server) : 톰캣 등
- 엔터프라이즈 서비스 버스(ESB) : 메시지 기반. 기업간의 여러 데이터,시스템 연동
요구사항 분석 프로세스
- 도출(elicitation) : 인터뷰/설문조사/브레인스토밍
- 분석(analysis)
- 구조적 도구(DFD/DD/Mini-specification/ERD/STD:state transition diagram)
- 객체지향 분석도구(UML, 모델)
- 도메인 : 요구사항의 구체적 규칙 설정
- 명세(specification)
- 정형 명세기법 : 수학, 논리
- 비정형 명세기법 : 자연어, 그림(다이어그램)
- 기능 요구사항 : 시스템에게 요구되는 기능, 로그인/주문 등
- 비기능 요구사항 : 시스템의
- 품질 관련 특성, 성능/보안
- 확인 및 검증(Validation & Verification)
CASE도구(Computer Adied Software Engineering)
- 개발주기 전 단계에 걸쳐 사용됨
- 상위 케이스 도구 : 계획, 분석,설계단계
- 하위 케이스 도구 : 구현, 테스트
HIPO(Hierachical input Process Output) 도구
- 하향식 개발에 적합. 기능과 자료의 의존관계 명시. 체계적 문서관리
- HIPO Chart
- 가시적 도표(Visual Table of Content): 시스템의 전체 기능과 흐름
- 총체적 도표(Overview Diagram) : 입력,처리,출력에 대한 전반적 정보
- 세부적 도표(Detail Diagram) : 총체적 도표의 내용이 더 복잡하게 서술
모델링
- 자료흐름도 (Data Flow Diagram =버블차트 )
- DD(data dictionary) : DFD의 모든 자료들에 대한 자세한 정의와 설명 제공
- = : 정의, + 연결 , ()생략 , []선택, {}반복, ** 주석
- 소단위명세서(Mini-specification) : DFD에서 각 처리가 수행하는 업무의 상세설명
- ERD (Entity Relationship diagram) : dfd를 데이터베이스화하기 위해 관계를 도출
럼바우 분석 순서
- 객체 : 객체다이어그램
- 동기 : 상태다이어그램
- 기능 : DFD
객체지향 분석 방법론
- Booch 부치 방법 : 미시적+거시적 개발 프로세스
- Jacobson : Use case 기반
- Coad와 Yourdon : E-R다이어그램 사용
- Wirfs-Brock : 분석과 설계 구분x 연속적으로 작업 수행
소프트웨어 설계의 기본원칙
소프트웨어 설계의 종류
- 상위 설계 : 아키텍처 설계 - 데이터 설계 - 인터페이스 정의 - 사용자 인터페이스 설계
- 하위 설계 : 모듈 설계 - 자료구조 설계 - 알고리즘 설계
소프트웨어 설계의 원리
- 분할과 정복(Divide & Conquer) : 큰 소프트웨어를 여러 개의 서브 시스템으로(개발)
- 추상화(Abstraction)
- 단계적 분해(Stepwise Refinement) : 기능을 점차 작은 단위로 나누어 구체화(설계)
- 모듈화(Modulization) : 각 모듈을 독립적으로 개발,테스트,유지보수
- 정보은닉(Information Hiding)
- 결합도와 응집도 : 결합도 높이기, 응집도 낮추
추상화 기법
- 과정 추상화 : 상위 수준에서 수행 흐름만 설계
- 데이터 추상화 : 데이터 구조를 간단한 표현으로 대체
- 제어 추상화 : 명령들을 간단한 표현으로 대체
협약에 의한 설계
- 고객과 미리 협약된 조건에 맞춰 개발해야함 → 클래스에 대한 조건들을 명세
- 선행 조건 : 컴포넌트 오퍼레이션 사용 전 참이 되어야 할 조건
- 결과 조건 : 사용 후 만족되어야 할 결과 조건
- 불변 조건 : 오퍼레이션이 실행되는 동안 항상 만족되어야할 조건
'자격증고나리 > 🥇 정보처리기사' 카테고리의 다른 글
[Day 2] 1과목 소프트웨어 구축 (0) | 2024.04.04 |
---|