반응형
소프트웨어 공학
- 소프트웨어 공학(Software Engineering)
- 소프트웨어 위기를 극복하고 효율적으로 품질 높은 소프트웨어를 개발하기 위한 학문
- 소프트웨어 공학의 3R
- 역공학(Reverse Engineering)
- 기존 개발된 시스템을 CASE(Computer Aided Software Engineering) 도구를 이용해 요구 분석서, 설계서 등의 문서로 추출하는 작업
- 개발 단계를 역으로 올라가 기존 개발된 시스템의 코드나 데이터를 시작으로 설계 명세서나 요구 분석서 등을 도출하는 작업
- 재공학(Re-Engineering)
- 소프트웨어의 위기를 해결하기 위해 개발의 생산성이 아닌 유지보수의 ****생산성으로 해결하려는 방법
- 기존 소프트웨어를 폐기하지 않고 기능을 개선시키거나 새로운 소프트웨어로 재활용하는 소프트웨어 재사용 공법
- 리펙토링
- 동료 검토
- 워크스루
- 인스펙션
- 과정
- 분석(Analysis)
- 재구성(Restructuring)
- 역공학(Reverse Engineering)
- 이관(Migration)
- 재사용(Reuse)
- 이미 개발되어 있는 소프트웨어의 전체 또는 일부분을 다시 사용
- 방법
- 합성 중심(Composition Based, 블록 구성)
- 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법
- 생성 중심(Generation Based, 패턴 구성)
- 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
- 합성 중심(Composition Based, 블록 구성)
- 역공학(Reverse Engineering)
- 소프트웨어 개발 단계
- 계획
- RFP(Requset for Proposal)로 제안을 받아 계획을 수립
- 일정, 비용, 타당성
- 분석
- 설계
- 구현
- 테스트
- 유지보수
- 가장 비용이 많이 드는 것
- 계획
- 소프트웨어 개발 방법론
- 개념
- 소프트웨어 개발에 필요한 과정(절차, 방법, 산출물, 기법, 도구)들을 체계적으로 정리한 것
- 종류
- 구조적 방법론(하향식)
- 절차지향 소프트웨어 개발 방법론
- 제한된 구조에서 코드 생성 및 순차적 실행
- 구조적 방법론 구성요소
- DFD(데이터 흐름도): 가장 기본적
- DD(데이터 사전)
- STD(상태전이도)
- Minispec(소단위 명세서)
- 정보공학 방법론 (기업에서 사용)
- 기업의 주요 부분을 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합, 적용하는 데이터 중심 방법론
- 객체지향 방법론(상향식)
- 현실세계의 개체(Entity)를 속성(Attribue)과 메서드(Method)형태로 표현
- 객체, 클래스 간의 관계를 식별하여 설계 모델로 변환하는 방법론
- 특징
- 캡슐화
- 상속
- 다형성
- 오버 로딩
- 오버 라이딩(재정의)
- 추상화
- 정보 은닉
- CBD 방법론 (CBD, Component Based Development)
- 재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트를 조합해 애플리케이션 개발
- 애자일 방법론
- 기존 방법론들이 절차를 중시한 나머지, 변화에 빠른 대응을 할 수 없다는 단점을 개선하기 위해 등장
- 고객의 요구사항에 맞춰 빠르게 개발을 하자!
- 종류
- XP
- 용기
- 단순성
- 의사소통
- 피드백
- 존중
- Scrum
- FDD
- Crystal
- XP
- 구조적 방법론(하향식)
- 개념
- 소프트웨어 개발 모델
- 폭포수 모델(Waterfall Model)
- 계쇡, 분석, 설계, 구현, 테스트, 운영 등 전 과정을 순차적으로 접근하는 개발 모델
- 가장 오래된 모형으로 적용 경험과 성공 사례가 많다.
- 요구 사항의 변경이 어렵다
- 단계별 정의가 분명하고, 단계별 산출물이 명확하다
- 프로토타이핑 모델(Prototyping Model)
- 고객이 요구한 주요 기능을 프로토타입으로 구현하여 완성해가는 모델
- 시제품 만드는 모델
- 개발자가 구축할 소프트웨어의 모델을 사전에 만들어 요구사항을 효과적으로 유도하고 수집한다.
- 고객이 요구한 주요 기능을 프로토타입으로 구현하여 완성해가는 모델
- 나선형 모델(Spiral Model)
- 폭포수 모델과 프로토타이핑 모델의 장점을 수용하고, 위험 분석을 추가한 점증적 개발 모델
- 프로젝트 수행 시 발생하는 위험을 관리하고 최소화하려는 것이 목적
- 대규모 프로젝트 및 위험 부담이 큰 시스템 개발에 적합
- 단계
- 계획
- 위험분석
- 개발
- 평가
- RAD(Rapid Application Development)모델
- 매우 짧은 개발 주기를 강조하는 점진적 소프트웨어 개발 방식
- 강력한 소프트웨어 개발 도구를 이용해 매우 짧은 주기로 개발을 진행하는 순차적 소프트웨어 개발 프로세스
- CASE(Computer Adied Software Engineering) 도구를 이용해 시스템을 개발
- 개발에 관련한 모든 도구
- ex) PPT, Figma, PhotoShop 등등
- 개발에 관련한 모든 도구
- V 모델
- 폭포수 모델에 시스템 검증과 테스트 작업을 강조
- 높은 신뢰성이 요구되는 분야에 적합
- 테스트 단계
- 단위 테스트
- 정적 테스트: 소스 코드 내부
- 동적 테스트: 소스 코드 실행 환경
- 통합 테스트
- 상향식 테스트:
- 상위 모델이 만들어지지 않았을 경우: 드라이버
- 하향식 테스트:
- 하위 모델이 만들어지지 않았을 경우: 스텁
- 백본 테스트
- 빅뱅 테스트
- 상향식 테스트:
- 시스템 테스트
- 기능 테스트
- 비기능 테스트
- 인수 테스트
- 알파 테스트
- 베타 테스트
- 단위 테스트
- 4세대 기법(4th Generation Techniques)
- 요구사항 명세서로부터 원시코드를 자동으로 생성할 수 있게 해주는 모델
- 폭포수 모델(Waterfall Model)
- 애자일 방법론(Agile)
- 개념
- 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발해 지속적으로 제공하기 위한 소프트웨어 개발 방식
- 종류
- XP(eXtream Programming)
- 5가지 가치
- 용기
- 단순성
- 의사소통
- 피드백
- 존중
- 5가지 가치
- 스크럼(Scrum)
- 특징
- 개발 주기는 30일 정도로 조절하고 개발 주기마다 실제 동작할 수 있는 결과를 제공
- 매일 15분 단위로 회의
- 주요 개념
- 제품 백로그(Produc Backlog)
- 개발할 제품에 대한 요구사항 목록
- 스프린트(Sprint)
- 1~3주의 짧은 기간을 목표로 설정
- 스프린트 계획 회의(Sprint Planning Meeting)
- 스프린트 목표와 스프린트 백로그를 계획하는 회의
- 스프린트 백로그(Sprint Backlog):
- 각각의 스프린트 목표에 도달하기 위해 필요한 작업 목록
- 일일 스크럼 회의(Daily Scrum Meeting)
- 실행 가능한 제품(Shippable Produc)
- 제품 책임자(Product Owner)
- 스크럼 마스터(Scrum Master)
- 제품 백로그(Produc Backlog)
- 특징
- 그 외 애자일 방법론
- 크리스털(Crystal)
- 프로젝트의 규모와 영향의 크기에 따라서 여러 종류의 방법론을 제공
- FDD(Feature-Driven Development)
- feature 마다 2주 정도의 반복 개발을 실시
- 신규 기능 단위로 하는 개발 방법론
- 기능 주도 개발
- ASD(Adaptive Software Development)
- 합동 애플리케이션 개발을 사용하는 방법론
- 린(Lean)
- 도요타 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해 낭비 요소를 제거하여 품질을 향상시킨 방법론
- 크리스털(Crystal)
- XP(eXtream Programming)
- 개념
- IT 서비스 관리
- SLM(Service Level Management)
- 서비스 수준을 정량적으로 측정하고, 실적을 평가하여 미흡한 부분을 개선함으로써 서비스의 품질을 높이는 일련의 관리 및 활동
- SLA(Service Level Agreement)
- 소프트웨어 수요자와 공급자 사이의 상호 동의에 의해 서비스 수준을 명시적으로 정의한 문서
- ITSM(Information Technology Service Management)
- 최종 사용자를 위한 IT 서비스를 구현, 전달 및 관리하기 위한 일련의 정책과 관행
- ITIL(IT Infrastructure Library)
- IT 서비스를 쉽게 제공하고 관리할 수 있는 가이드 혹은 프레임워크
- ITSM을 실현할 수 있는 도구 또는 방법
- SLM(Service Level Management)
프로젝트 계획 및 분석
- 프로젝트 관리
- 개념
- 특정한 목적을 가진 프로젝트를 한정된 기간, 예산, 자원 내에서 사용자가 만족할 만한 제품을 개발하도록 행하는 기술적, 관리적 활동
- 핵심 관리대상(3P)
- 사람(Person)
- 문제(Problem)
- 프로세스(Process)
- PMBOK(Project Management Body of Knowledge)
- PMI(Project Management Institute)에서 제작한 프로젝트 관리 프로세스 및 지식 체계
- PMI 단체에서 만든 것이 PMBOK
- 5단계 프로세스 그룹
- 프로세스 착수
- 프로세스 계획
- 프로세스 실행
- 프로세스 통제
- 프로세스 종료
- 개념
- 개발 비용 산정
- 소프트웨어 개발 비용 계획
- 개발에 소요되는 인원, 자원, 기간 등으로 소프트웨어의 규모를 파악하여 필요한 비용을 산정한다.
- 비용 산정 기법
- 하향식
- 전문가 기법
- 델파이 기법
- 상향식
- 원시 코드 라인 수 (LOC, Line Of Code)
- (낙관치+중간치*4+비관치)/6
- 개발 단계별 노력 기법(M/M)
- 단계별 인원수 기법
- LOC보다 정확성을 기하기 위한 기법
- 원시 코드 라인 수 (LOC, Line Of Code)
- 수학적
- COCOMO
- Organic: 5만 라인 이하
- SemiDetached: 30만 라인 이하
- Embedded: 30만 라인 이상
- PUTNAM
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초
- SLIM
- 랠리 노드 곡선과 Putnam의 예측 모형을 기초로 개발한 자동화 추정 도구
- FP (Function Point)
- 소프트웨어가 가지는 기능의 개수를 기준으로 소프트웨어 규모를 측정하는 기법
- ESTIMACS: FP 모형을 기초로 개발된 자동화 추정 도구
- 소프트웨어 기능 분류
- 데이터 기능
- 내부논리파일(ILF)
- 외부연계파일(ELF)
- 트랜잭션 기능
- 외부입력(EI)
- 외부출력(EO)
- 외부조회(EQ)
- 데이터 기능
- COCOMO
- 하향식
- 소프트웨어 개발 비용 계획
- 개발 일정 산정
- 계획
- 소프트웨어를 개발하기 위해 어떤 작업이 필요한지 정의하고, 작업들의 우선순위를 정해 프로젝트 일정에 대한 계획을 세우는 것
- WBS(Work Break-Down Structure)로 기능 단위 별로 나누어 계획을 세우기
- WBS를 기준으로 PERT/CPM을 통해 얼마나 걸릴 것인지 임계경로를 구하기
- 간트차트를 작성하기
- 작업 순서
- 작업 분해(WBS, Work Break-Down Structure)
- PERT/CPM 네트워크 작성
- PERT/CPM 란?
- 작업의 선/후행 관계를 고려하여 전체작업의 완료시간을 결정(PERT), 추가 비용 투입을 고려하여 전체작업 완료시간을 단축하는(CPM) 네트워크 분석 기법
- PERT/CPM 란?
- 최소 소요 기간을 구함(임계 경로, Critical Path)
- 소요 M/M, 기간을 산정해 CPM 수정
- 간트 차트로 표현
- 계획
- 요구사항 분석
- 현행 시스템 분석
- 현행 시스템 파악
- 현재 운영되는 시스템의 구성, 기능, 하드웨어, 네트워크, DB 등을 파악하는 활동
- 플랫폼 기능 분석
- 정의
- 애플리케이션을 구동시키는데 필요한 하드웨어와 소프트웨어의 결합
- 유형
- 싱글 사이드 플랫폼(Single-SIde Platform)
- 투 사이드 플랫폼(Two-SIde Platform)
- 멀티 사이트 플랫폼(Multi-SIde Platform)
- CPND(Content Platform Network Device)
- 콘텐츠를 플랫폼에 맞게 가공하고 네트워크를 통해 사용자의 단말기로 서비스가 이루어짐을 표현하는 무선 인터넷 서비스의 가치 사슬
- ex) Youtube 시청시 필요한 것들
- Content(영상)
- Platform(유튜브)
- Network(네트워크)
- Device(기기)
- 정의
- 미들웨어(MiddleWare)분석
- 개념
- 양 쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어
- 종류
- 원격 프로시저 호출(RPC, Remote Procedure Call)
- 클라이언트가 원격에서 동작하는 프로시저를 호출하는 시스템
- 메시지 지향 미들웨어(MOM, Message Oriented Middleware)
- 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어
- ORB(Object Request Broker)
- 객체지향 시스템에서 객체 및 서비스를 요청하고 전송할 수 있도록 지원하는 미들웨어
- DB 접속 미들웨어
- 애플리케이션과 데이터베이스 서버를 연결해주는 미들웨어
- TP 모니터
- 분산 시스템의 애플리케이션을 지원하는 미들웨어
- 트랜잭션이 올바르게 처리되고 있는지 데이터를 감시하고 제어
- 웹 어플리케이션 서버(WAS, Web Application Server)
- 동적인 콘텐츠를 처리하기 위한 미들웨어
- Web은 정적인 콘텐츠
- 엔터프라이즈 서비스 버스(Enterprise Service Bus)
- 메시지 기반으로 느슨한 결합 형태의 표준 인터페이스 통신을 지원하는 미들웨어
- 기업 안팎에 있는 모든 시스템 환결을 연동하는 미들웨어
- 원격 프로시저 호출(RPC, Remote Procedure Call)
- 개념
- 현행 시스템 파악
- 현행 시스템 분석
- 요구 공학
- 개념
- 고객 요구를 체계적으로 수집, 분석, 명세화, 검증하고 추적, 변경되는 요구사항을 도출하고 관리하는 기법
- 요구사항을 도출후 명세하는 것!
- 개발 프로세스
- 도출(Elicitation)
- 요구사항 소스
- 도출 기법
- 분석(Analysis)
- 요구사항 분류
- 개념 모델링
- 기술 구조 설계 및 요구사항 할당
- 요구사항 협상
- 구조적 분석 도구
- DFD
- DD
- Mini-Spec
- ERD
- STD
- 객체지향 분석 도구
- UML
- 모델링
- 명세(Specification)
- 시스템 정의서
- 시스템 요구사항 명세서
- 소프트웨어 요구사항 명세서
- 요구사항 명세 기법
- 정형 명세 기법: 수학적
- 비정형 명세 기법: 자연어, 그림 중심
- 확인(Validation)
- 검토
- 프로토타이핑
- 모델 검증
- 인수 테스트
- 도출(Elicitation)
- 요구사항 분석 도구
- 요구사항 분석 CASE(Computer Aided Software Engineering)
- 요구사항을 자동으로 분석하고, 명세서를 기술하는 도구
- 소프트웨어 개발 전반에 걸쳐 적용
- CASE 도구의 분류
- 상위 CASE: 계획, 분석
- 하위 CASE: 구현, 테스트
- 통합 CASE
- HIPO(Hierarchy Input Process Output)
- 개념
- 하향식 소프트웨어 개발을 위한 문서화 도구
- 시스템의 기능을 여러 개의 고유 모듈들로 분할해, 이들 간의 계층 구조를 표현한 도표
- 종류
- 가시적 도표: 시스템 전체 기능,입력, 처리, 출력 없음
- 총체적 도표: 프로그램을 구성하는 기술적인 것 출력, 입력, 처리, 출력 있음
- 세부적 도표: 총체적 도표에 더 세분화 시킨 도표
- 개념
- 요구사항 분석 CASE(Computer Aided Software Engineering)
- 개념
- 요구사항 분석 모델링
- 구조적 분석 모델
- 도구
- 자료 흐름도(DFD)
- 구성요소
- 처리 과정
- 자료를 변환시키는 처리 과정을 나타낸다 , 원으로 표현
- 자료 흐름
- 자료의 이동을 나타낸다, 화살표로 표현
- 자료 저장소
- 파일, 데이터베이스 등 자료가 저장된 곳을 나타냄, 위아래 이중 선
- 단말
- 데이터의 이출력 주체를 나타낸다, 사각형
- 처리 과정
- 구성요소
- 데이터 사전(DD)
- 자료 흐름도를 설명하기 위한 것
- 사용 기호
- =: ~로 구성되어 있다
- +: 그리고, 순차(and)
- ( ): 생략 가능한 자료
- [ | ]: 여러 대한 주 하나 선택
- { }: 자료의 반복
- **: 주석
- Mini-Specification
- 자료흐름도에서 어떤 일이 수행되는지를 정의하기 위해 각 처리들이 수행하는 업무를 상세히 작성
- 자료 흐름도(DFD)
- 도구
- 객체 지향 분석 모델
- 개념
- 사용자의 요구사항을 분석하여 요구된 문제와 관련한 모든 클래스, 이와 연관된 속성과 연산, 그들 간의 관계 등을 정의하여 모델링
- 방법론
- 럼바우(Rumbaugh) 방법
- 가장 일반적으로 사용되는 방법으로 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행
- 객체 모델링: 객체 다이어그램으로 표현
- 동적 모델링: 상태 다이어그램으로 표현
- 기능 모델링: 자료 흐름도(DFD)
- Booch(부치) 방법
- 미시적, 거시적 개발 프로세스 모두 사용하는 분석 모델
- Jacobson 방법
- Use Case를 강조해 사용하는 분석 방법
- Cord와 Yourdon 방법
- ERD를 사용
- Wirfs-Brock 방법
- 분석과 설계 간 구분 없다
- 럼바우(Rumbaugh) 방법
- 개념
- 구조적 분석 모델
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 소프트웨어 구축 (3) (0) | 2023.07.04 |
---|---|
[정보처리기사] 소프트웨어 구축 (2) (0) | 2023.07.04 |
[정보처리기사] 프로그램 언어 특성 (0) | 2023.07.03 |
[정보처리기사] 알고리즘 표현 방법 및 변수 표기법 (0) | 2023.07.03 |
[정보처리기사] 프로그래밍 언어 (0) | 2023.07.03 |