[정처기 실기] 「1」 | 소프트웨어 구축 - (1.1) 소프트웨어 공학 개념, 프로젝트 계획 / 분석
> 「1」 소프트웨어 구축
「2」 데이터베이스 구축
「3」 운영체제
「4」 네트워크
「5」 정보보안
「6」 신기술 용어
> 1. 소프트웨어 공학 개념
> 2. 프로젝트 계획 / 분석
3. 소프트웨어 설계
4. 화면 설계
5. 서버 프로그램 구현
6. 인터페이스 구현
7. 객체지향 구현
8. 애플리케이션 테스트 관리
9. 소프트웨어 유지보수
10. 제품 소프트웨어 패키징
1. 소프트웨어 공학 개념
소프트웨어 공학
소프트웨어 공학의 개념
○ 소프트웨어 위기를 극복하고 품질 높은 소프트웨어를 효율적으로 개발하기 위한 학문
소프트웨어 공학의 3R
○ 역공학(Reverse Engineering)
○ 재공학(Re-Engineering) : 분석 > 재구성 > 역공학 > 이관
○ 재사용(Reuse) : 함수와 객체, 컴포넌트, 애플리케이션 재사용 / 생성 중심(추상화), 합성 중심(블록 끼워 맞추기)
소프트웨어 개발 단계
○ 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
소프트웨어 개발 방법론
소프트웨어 개발 방법론 개념
○ 소프트웨어 개발에 필요한 과정을 (절차, 방법, 산출물, 기법, 도구)들을 체계적으로 정리한 것
소프트웨어 개발 방법론 종류
○ 구조적 방법론 : 절차지향 언어에서 하향식에서 사용
○ 정보공학 방법론 : 회사에 있는 데이터 활용
○ 객체지향 개발 방법론 : 객체를 사용하여 상향식에서 사용
○ CBD(Component Based Development) 방법론 : 컴포넌트를 합쳐서 하나의 완성된 소프트웨어 만듦
○ 애자일 방법론 : 빨리 개발, 동작하는 소프트웨어에 초점
소프트웨어 개발 모델
○ 폭포수 모델(Waterfall Model) : 가장 오래된 모델, 선형 순차적 개발, Step-by-Step, 요구 반영 제한적
○ 프로토타이핑 모델(Prototyping Model) : 시제품 만들어 고객과 계속 협의하여 최종결과 예측, 인터페이스 중심
○ 나선형 모델(Spiral Model) : 위험 분석 추가, 점진적으로 발전, 계획 > 위험 분석 > 공학적 개발 > 평가
○ RAD(Rapid Application Development) 모델 : 빨리 개발, CASE 도구 사용
○ V 모형 : 테스트에 집중
- 단위 테스트 : 정적(소스코드 내부), 동적(기능)
- 통합 테스트
: 상향식(객체 지향, 밑에서 시작, 클러스트 단위, 드라이버)
: 하향식(절차 지향, 메인에서 시작, 스텁), 빅뱅(한 번에 테스트)
- 시스템 테스트 : 기능, 비기능
- 인수 테스트 : 알파(개발자와 사용자), 베타(사용자)
○ 4세대 기법(4th Generation Techniques)
애자일(Agile) 방법론
○ 일정한 짧은 주기의 반복으로, 신속한 작업을 통해 지속적으로 작동 가능한 소프트웨어를 개발하는 방식
○ 애자일 선언문 : 개인과 상호작용, 작동하는 소프트웨어, 고객과 협력, 변화에 대응을 강조
○ 애자일 방법론 종류
- XP : 의사소통, 용기, 피드백, 존중, 단순성
- 스크럼 : 스프린트(약 4주, 동작 가능한 소프트웨어 제작하는 단위), 백로그(만들 기능 정의)
- 크리스털 : 규모에 따른 방법론 제공
- FDD : 기능주도 개발
- ASD : 합동 애플리케이션 개발
- 린(Lean) - 도요타 린 시스템
○ XP 12가지 실천사항
- 짝 프로그래밍(Pair Programming)
- 계획 세우기(Planning Game)
- 테스트 주도 개발(Test Driven Development)
- 전체 팀(Whole Team)
- 지속적인 통합(Continuous Integration)
- 코드 개선(Design Improvement)
- 소규모 릴리즈(Small Releases)
- 코딩 표준(Coding Standards)
- 공동 코드 소유(Collective Code Ownership)
- 간단한 디자인(Simple Design)
- 시스템 메타포어(System Metaphor)
- 작업시간 준수(Sustainable Pace)
IT 서비스 관리
○ SLM(Service Level Management) : 서비스 수준을 정량적으로 측정하고 실적을 평가하여 개선하는 관리 활동
○ SLA(Service Level Agreement) : 소프트웨어 수요자와 공급자 간에 서비스 수준을 명시적으로 정의한 문서
○ ITSM(Information Technology Service Management) : 최종 사용자를 위한 IT 서비스를 구현, 전달, 관리하는 일련의 정책과 관행
○ ITIL(IT Infrastructure Library) : IT 서비스를 쉽게 제공하고 관리할 수 있는 가이드 또는 프레임워크
2. 프로젝트 계획 / 분석
프로젝트 계획
프로젝트 관리
○ 특정한 목적을 달성하기 위해 한정된 기간, 예산, 자원을 활용하여 사용자가 만족할만한 제품, 서비스를 개발하도록 하는 기술적, 관리적 활동
○ 프로젝트 핵심 관리 대상(3P) : 사람(People), 문제(Problem), 프로세스(Process)
○ PMBOK(Project Management Body of Knowledge)
- PMI에서 제작한 프로젝트 관리 프로세서 / 지식 체계
- PMBOK 5단계 프로세스 그룹
> 1단계 : 프로젝트 착수
> 2단계 : 프로젝트 계획
> 3단계 : 프로젝트 실행
> 4단계 : 프로젝트 통제
> 5단계 : 프로젝트 종료
개발 비용 산정
○ 개발에 필요한 인원, 자원, 기간 등 고려하여 소프트웨어의 규모를 파악하고, 필요한 비용을 산정
○ 하향식 산정 기법(Top-Down)
- 전문가 판단 기법(경험 많은 사용자, 외부 전문가)
- 델파이 기법(여러 전문가가 회의)
○ 상향식 산정 기법(Bottom-Up)
- 원시 코드 라인 수(LOC, Line Of Code) 기법
: 추정 LOC - (낙관치 + (4 * 중간치) + 비관치) / 6
- 개발 단계별 노력(Effort Per Task) 기법
: LOC 기법을 확장
○ 수학적 산정 기법
- COCOMO 기법
: 조직형(Organic)(5만 이하), 반분리형(Semidetached)(30만 이하), 내장형(Embedded)(30만 이상)
- Putnam 기법
: Rayleigh-Norden 곡선, SlIM(자동화 추정 도구)
- 기능 점수 기법(FP, Function Point)
: 내부 논리 파일(ILF), 외부 연계 파일(EIF)
: 외부 입력(EI), 외부 출력(EO), 외부 조회(EQ)
: ESTIMACS(자동화 추정 도구)
개발 일정 산정
○ 소프트웨어 개발 비용 계획
- 소프트웨어 개발을 위해 필요한 작업을 정의, 우선순위 설정하여 전체 프로젝트 일정 계획 수립
- 작업 순서
> 작업 분해(Work Breakdown Structure, WBS) : 활동과 업무를 세분화
> PERT : 프로젝트 작업 상호관계를 네트워크로 표현, 원 노드와 간선, 낙관치 / 기대치 / 비관치
> 최소 소요 기간 계산(CPM, 임계 경로) : 노드와 간선과 박스, 흐름에 따라 작업 진행
: 임계 경로 - 프로젝트를 완료하기 위해 필요한 최소한의 시간
> 소요 Man-Month(M/M) / 기간 산정 후 CPM 수정
> 간트 차트(최종 산출물)
요구사항 분석
현행 시스템 분석
○ 현행 시스템 파악 : 기존 시스템의 기능, 성능, 문제점을 이해하고 평가하기 위한 과정
○ 플랫폼 기능 분석
- 플랫폼 : 다양한 응용 프로그램, 서비스 / 기능이 구축되거나 실행되는 기반 또는 환경
- 플랫폼 기능 : 연결 기능, 비용 감소 기능, 브랜드 신뢰 기능, 커뮤니티 형성
- CPND(Contents Platform Network Device)
: 텍스트, 이미지, 오디오, 비디오 / 웹 사이트, 애플리케이션 / 통신 시스템 / 스마트폰, 컴퓨터, 태블릿
○ 현행 시스템 분석 : 운영체제 분석, 네트워크 분석, DBMS 분석, 미들웨어 분석
○ 미들웨어 종류
- 원격 프로시저 호출(RPC, Remote Procedure Call)
- 메시지 지향 미들웨어(MOM, Message Oriented Middleware) : 실시간 처리하지 않고, 모아서 한꺼번에 처리
- ORB(Object Request Broker) : 요청 시 어디로 보낼지 정함
- DB 접속 미들웨어
- TP 모니터(Transaction Processing Moinitor) : 트랜잭션 관리
- 웹 애플리케이션 서버(WAS, Web Application Server) : 동적인 컨텐츠 만들 때 사용
- 엔터프라이즈 서비스 버스(ESB, Enterprise Service Bus) : 이벤트-구독 형식
요구 공학
○ 소프트웨어의 요구사항을 식별, 분석, 문서화, 관리하는 과정
○ 요구 공학의 필요성 : 품질 개선, 리스크 감소, 비용 절감, 효율적인 프로젝트 관리, 사용자와 개발자 간 소통 개선
○ 요구사항 개발 프로세스
- 요구사항 도출(Elicitation)
: 인터뷰, 설문조사, 브레인스토밍, 워크샵, 직접 관찰
- 요구사항 분석(Analysis)
: 불완전하거나 모호, 중복되거나 충돌하는 부분을 식별하여 수정
: 업무환경과의 상호작용 파악(도메인 분석)
: DFD, Data Dictionary, Mini-Spec, ERD, STD - 구조적 설계에서 사용
: UML(Unified Modeling Language) - 객체지향 설계에서 사용
- 요구사항 명세(Specification)
: 분석된 요구사항은 명세서 형태로 정리
: 정형 명세(수학, 논리학), 비정형 명세(자연어, 그림 중심)
: 기능 요구사항, 비기능 요구사항 분류
- 요구사항 확인 / 검증(Validation / Verification)
: 분석가가 요구사항을 이해했는지 확인(Validation), 요구사항 문서가 일관성 있고 완전한지 검증(Verification)
○ 요구사항 분석 기법
○ 요구사항 분석 도구
- 요구사항 분석 CASE
: SADT - SoftTech 사에서 개발, 구조적 분석 / 설계분석
: SREM - 실시간 처리 SW 시스템에서 요구사항 명확한 기술을 목적
: PSL/PSA - 문제 기술언어 / 요구사항 분석 보고서 출력
: TAGS - 시스템 공학 방법 응용에 대한 자동 접근 방법
- HIPO(Hierarchical Input Process Output) - 하향식 소프트웨어 개발을 위한 문서화 도구
: 구성요소 - 주요 프로세스, 하위 프로세스, 입력 / 출력
: HIPO Chart 종류 -
가시적 도표(Visual Table of Content), 총제적 도표(Overview Diagram), 세부적 도표(Detail Diagram)
요구사항 분석 모델링
○ 모델링 : 복잡한 시스템을 이해하고 효과적으로 개발하기 위해 간단한 모델로 표현하는 과정
○ 모델링 구분
- 기능적 모델링 : 사용자 관점에서 시스템의 기능을 표현 > 사용 사례 다이어그램, 액티비티 다이어그램
- 정적 모델링 : 시스템의 구조를 클래스 단위로 표현 > 클래스 다이어그램
- 동적 모델링 : 시스템의 상호작용 / 동작을 표현 > 순서 다이어그램, 상태 다이어그램, 커뮤니케이션 다이어그램
○ 구조적 분석 도구
- 자료 흐름도(DFD, Data Flow Diagram)
: 프로세스(원), 자료흐름(화살표), 자료 저장소(평행선), 단말(사각형), 시간 흐름 표현 X, 버블 차트
- 자료사전(DD, Data Dictionary)
: 자료 흐름도에 기재된 모든 자료의 상세 정의 / 설명
: =(정의), [ ](선택), ( )(생략), +(구성), **(주석), { }(반복)
- 소단위 명세서(Mini-Specification)
- 개체 관계도(ERD, Entity Relationship Diagram)
- 상태 전이도(STD, State Transition Diagram)
○ 객체 지향 분석 모델
- 객체 지향 분석 : 사용자 요구사항을 객체 지향적 관점에서 분석하고 모델링
- 객체지향 분석 방법론
: Rumbaugh(럼바우) 방법
. 객체 모델링(Object) : 객체 다이어그램
. 동적 모델링(Dynamic) : 상태 다이어그램
. 기능 모델링(Functional : DFD
: Booch(부치) 방법 : 미시적 / 거시적 개발 프로세스
: Jacobson 방법 : Use case를 중심으로 한 분석 방법
: Coad와 Yourdon 방법 : E-R 다이어그램을 사용
: Wirfs-Brock 방법 : 분석과 설계의 구분 없음
출처 | 흥달쌤
'💠기타 > 자격증' 카테고리의 다른 글
[정처기 실기] 「1」 | 소프트웨어 구축 - (1.3) 서버 프로그램 구현 (1) | 2024.03.27 |
---|---|
[정처기 실기] 「1」 | 소프트웨어 구축 - (1.2) 소프트웨어 설계, 화면 설계 (0) | 2024.03.27 |
[정처기 실기] 프로그래밍 문제 이론 - C언어 (1) | 2024.03.17 |
[정처기 필기] 「5」 | 시스템 보안 구축 - (4.2) 서버 인증, 보안 아키텍처 / 프레임워크, 보안 설루션 (1) | 2024.02.25 |
[정처기 필기] 「5」 | 시스템 보안 구축 - (4.1) 서비스 공격 유형 (1) | 2024.02.25 |