소프트웨어 생명주기(SDLC) : 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
요구사항 분석 - 설계(논리적) - 구현 - 테스트 - 유지보수
모델종류
폭포수 모델(Waterfall Model) : 각 단계를 마무리지은 뒤에 다음 단계로, 고전적 생명주기, 산출물이 명확, 순차적
프로토 타이핑(Prototyping Model) : 기능을 프로토 타입으로 구현하여 피드백 반영, 구현 단계의 구현 골격
나선형(Spiral Model) : 점진적, 계획 및 정의 - 위험 분석 - 개발 - 고객 평가
반복적(Iteration Model) : 병렬적으로 개발 후 통합, 반복적으로 개발, 증분 방식으로 병행 개발
소프트웨어 개발 방법론
구조적 방법론 : 전체 시스템을 분할하여 개발, 통합 → 나씨-슈나이더만 차트 : 도형, 시각적, 논리구조 사용
정보공학 방법론 : 정보시스템 개발, 개발주기를 사용하여 대형 프로젝트 수행
객체지향 방법론 : 객체 사용하여 분석 및 설계. 객체 클래스 메시지
컴포넌트 기반 방법론(CBO) : 컴포넌트를 조립하여 프로그램 작성, 확장성 ↑, 소프트웨어 재사용
애자일 방법론 : 사람 중심, 유연하고 신속하게 효율적
제품 계열(Product Line) 방법론 : 공통된 기능 정의하여 개발, 영역 응용 공학
Agile : 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 시스템 개발
- XP : 짝 프로그래밍, 공동 코드 소유, 지속적인 통합(CI), 메타포어, 테스트 기반 개발(TDD), 리팩토링, 계획 세우기, 작은 릴리즈, 간단한 디자인, 40시간 작업, 고객 상주, 코드 표준
- SCRUM : 매일 정해진 시간, 장소에서 짧게 회의 후 개발, 백로그(요구 사항), 스프린트(짧은 개발 반복), 스크럼 미팅, 스크럼 마스터, 스프린트 회고, 번 다운 차트(백 로그 대비 시간 차트)
- LEAN : 도요타의 린 시스템, JIT, Kanban 보드 사용
비용 산정 모형
하향식 산정방법 : 경험 많은 전문가에게 의뢰, 전문가와 조정자가 산정
상향식 산정방법 : 요구사항과 기능에 따른 비용 계산
- LOC(Lines of Code) : 원시 코드 라인 수의 낙관치, 중간치, 비관치 측청하여 비용 산정, (낙관치 + 4*중간치 + 비관치)/6
- Man Month : 1개월 동안 할 수 있는 일의 양 기준, LoC / 프로그래머의 월간 생산성
- COCOMO : 보헴, 규모에 따라 비용 산정, 조직 형(소규모), 반분리형(중간규모), 임베디드형(대규모)
- 푸트남(생명주기 모형) : 개발주기 단계별로 인력의 분포 가정, Rayleigh-Norden 곡선의 노력 분포도를 기초
- 기능점수(EP) : 가중치를 부여하여 계산, 경험을 바탕으로 단순, 보통, 복잡 부여, 총기능점수 * [0.65 + (0.1 * 총 영향도)]
일정 관리
- 주 공정법(CPM) : 수행 순서로 계산, 노드 간 연결을 통해 공정 계산, 임계경로 = 가장 긴 시간
- PERT : 비관치, 중간치, 낙관치로 일정 관리 기법
- 중요 연쇄 프로젝트 관리(CCPM) : 자원제약사항을 고려한 주 공정 연쇄법
현행 시스템 파악 : 현행 시스템 구성, 연계 정보, 기술 파악하는 활동
구성/기능/인터페이스 파악 - 아키텍처 및 소프트웨어 파악 - 하드웨어/네트워크 구성 파악
소프트웨어 아키텍처 : 소프트웨어 구성요소와 그 관계 표현하는 시스템의 구조나 구조체
소프트웨어 아키텍처 프레임워크
아키텍처 명세서, 이해관계자, 관심사, 관점, 뷰, 근거, 목표, 환경, 시스템
소프트웨어 4+1 뷰 : 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 접근 방법
- 논리 뷰 : 시스템의 기능적 요구사항이 어떻게 제공되는지 설명, 개발자 설계자 관점
- 구현 뷰 : 소프트웨어 모듈 구성, 컴포넌트 구조와 의존성을 보여줌
- 프로세스 뷰 : 비기능적인 속성 등을 표현, 개발자 시스템 통합자 관점
- 배포 뷰 : 컴포넌트가 아키텍처에 어떻게 배치되는가 표현
- 유스케이스 뷰 : 설계와 다른 뷰를 검증하는 뷰, 사용자 설계자 개발자 테스트 관점
소프트웨어 아키텍처 패턴 : 소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식
- 계층화 패턴(Layered Pattern) : 계층으로 구성, 상위계층에게 서비스 제공, 마주보는 계층 사이에서만 상호작용
- Client-Server Pattern : 서버 한개, 여러개의 클라이언트 구성, 사용자가 클라이언트에서 요청하고 서버에서 응답(서비스 제공)
- 파이프-필터 패턴 : 데이터 스트림을 생성하고 처리하는 시스템, 서브시스템들이 처리하고, 결과를 넘겨주는 것을 반복
- 브로커 패턴 : 분산 시스템에서 사용, 브로커가 컴포넌트간 통신을 조정, 서버가 브로커에게 서비스를 넘겨주고 브로커가 서비스로 리다이렉션
- MVC 패턴 : 모델-핵심객체와 데이터 보관, 뷰-사용자에게 정보 표시, 컨트롤러-사용자로부터 요청을 입력받아 처리
소프트웨어 아키텍처 비용 평가 모델
- SAAM : 변경 용이성, 기능성 평가
- ATAM : SAAM 계승, 아키텍처 품질
- CBAM : ATAM을 바탕으로 경제적 의사결정, 요구 충족 평가
- ADR : 구성요소 간 응집도 평가
- ARID : 특정 부분에 대한 품질 요소 평가
생성패턴
- Builder : 객체를 생성방법과 구현방법을 분리하여 동일한 생산 절차에서 다른 표현 결과를 만들 수 있는 패턴
- Prototype : 원형을 복사하여 필요한 부분만 수정하여 사용, 기본 형태 복제
- Factory Method : 상위클래스에서 객체 생성, 인터페이스 정의, 하위 클래스에서 인스턴스 생성(오버로딩)
- Abstract Factory : 연관되있거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴, 사용자에서 API 제공, 동일한 주제의 다른 팩토리 묶음
- Singleton : 한 클래스에 객체 한개, 언제든지 참조, 전역 변수 사용
구조패턴
- Bridge : 기능의 클래스 계층과 구현 계층을 연결
- Decorator : 기존의 클래스에 필요한 기능 추가, 객체간 결합을 통해 확장
- Facade : 복잡한 시스템에 인터페이스를 제공하여 결합도를 낮춰 구조 파악하는 패턴, 통합된 인터페이스
- Flyweight : 다수의 객체가 갖는 요소를 클래스화, 클래스의 경량화 목적, 가상 인스턴스 제공으로 메모리 절감
- Proxy : 실제 객체에 대한 대리 객체, 특정 객체로의 접근 제어 용도
- Composite : 객체들의 관계를 트리구조로 하여 부분-전체 계층 표현, 복합 단일 객체 동일하게 취급
- Adapter : 클래스를 재사용 할 수 있도록 중간에서 맞춰줌, 상속 위임 패턴
행위패턴
- Mediator : 통신을 위해 중간에 위치하여 중재자에게 요구하여 통신의 빈도수를 줄임, 상호작용의 유연한 변경
- Interpreter : 여러 형태 언어 구문 해석, 문법자체를 캡슐화
- Iterator : 내부적으로 원소를 순차적으로 접근 가능하게 하는 패턴
- Template Method : 전체 구조는 바뀌지 않으면서도 특정 단계에서 수행하는 내역을 바꾸는 패턴, 상위에서 추상메서드를 하위에서 구체화
- Observer : 객체의 상태가 바뀌면 의존하는 다른 객체들에게 전달, 느슨한 결합, 일대다 의존
- State : 객체 상태를 캡슐화 하여 클래스화하여 그것을 참조, 상태에 따라 다르게 처리
- Visitor: 처리 기능을 분리하여 메서드가 클래스들을 돌아다니며 특정 작업 수행, 객체의 구조변경 없이 기능만 추가 확장
- Command : 기능을 캡슐화 하여 하나의 추상 클래스에 여러 기능이 있으므로 각 명령에 맞게 서브 클래스가 선택되어 실행
- Strategy : 알고리즘을 정의하고 클래스로 캡슐화하여 교환하여 사용, 동적으로 행위를 자유롭게 변환
- Memento : UNDO기능, 객체의 정보를 저장할 필요가 있을 때 사용
- Chain of Responsibility : 기능 처리의 연결 방법을 동적으로 경우에 따라 다르게 처리될 수 있도록 연결한 디자인 패턴
현행 시스템 분석서
정보 시스템 구성/기능, 시스템 아키텍처, 소프트웨어, 하드웨어, 네트워크
운영 체제 : 사용자와 하드웨어 간에 인터페이스 담당 프로그램
품질 측면 고려사항 : 신뢰도, 성능
지원 측면 고려사항 : 기술 지원, 주변 기기, 구축 비용
운영체제 종류
PC : Windows, Unix, Linux
모바일 : Android, IOS
네트워크 : 컴퓨터 장치들의 노드간 연결을 사용하여 서로에게 데이터를 교환하는 기술
OSI 7계층 기억
DBMS : 데이터를 저장 및 관리하는 기능 제공 프로그램
중복제어, 접근 통제, 인터페이스 제공, 관계 표현, 샤딩/파티셔닝, 무결성 제약조건, 백업 및 회복 기능
성능 측면 고려사항 : 가용성, 성능, 상호 호환성
자원 측면 고려사항 : 기술 지원, 구축 비용
미들웨어 : 응용 프로그램과 환경 간에 원활한 통신을 위해 제어해주는 소프트웨어
WAS : 서버층에서 애플리케이션이 동작할 수 있는 환경 제공
성능 측면 고려사항 : 가용성, 성능
자원 측면 고려사항 : 기술 지원, 구축 비용
요구공학(Requirement Engineering) : 요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 활동, 기능적 비기능적
요구사항 개발 프로세스 진행 전 타당성 조사가 선행되어야함
1. 도출(Elicitation) : 해결해야할 문제 이해, 관련 정보 식별, 수집 방법 결정, 이해관계자가 식별됨
- 인터뷰, 브레인 스토밍, 델파이 기법, 롤 플레잉, 워크숍, 설문 조사, 유스케이스
2. 분석(Analysis) : 요구사항에 대해 분석을 통해 완전성과 일관성을 확보하는 단계, 상호작용 이해
구조적 분석 기법 : 자료의 흐름과 처리를 중심으로 하는 요구사항 분석 방법
- 자료흐름도(DFD) : 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법
프로세스, 자료흐름, 자료 저장소, 단말
- 자료 사전(DD) : 자료 흐름도에 있는 자료를 자세히 정의하고 기록한 것, =메타데이터
=(정의), +(and), ( )(생략), [ ](or), { }(반복), * *(주석)
요구사항 분석용 CASE : 요구사항을 자동으로 분석, 몇세서를 기술하도록 개발된 도구
- SADT : SoftTech에서 블록 다이어그램을 채택한 자동화 도구
- SREM : TRW 에서 실시간 처리 소프트웨어 시스템 요구사항 명확히 기술할 목적 도구, RSL/REVS
- PSL/PSA : 미시간 대학에서 개발,
- TAGS : 개발 주기 전 과정에 이용, 시스템 공학 방법 응용 자동 접근 방법
HIPO : 시스템 실행 과정인 입력, 처리, 출력의 기능을 표현한 기법
하향식 소프트웨어 문서화 도구, 기능과 자료 의존 관계 동시 표현 가능, 기호 도표 사용, 시스템의 기능을 여러 개의 고유 모듈로 분할 하여 인터페이스를 계층 구조로 표현한 HIPO CHART : 가시적 도표, 총체적 도표, 세부적 도표
3. 명세(Specification) : 분석된 요구사항을 바탕으로 문서화하는 활동, 요구사항 명세서, 비정형(자연어) 정형(Z-스키마, 상태차트, 동료 검토, 워크스루, 인스펙션) 명세 기법
- 명확성, 완전성, 검증 가능성, 일관성, 수정 용이성, 추적 가능성, 개발 후 이용성
4. 확인 및 검증(Validation&Verification) : 요구사항 문서가 이해 가능하며, 일관성이 있고 완전한지 검증
'정보처리기사' 카테고리의 다른 글
데이터 입출력 구현 (0) | 2022.05.04 |
---|---|
화면 설계 (0) | 2022.05.04 |
제품 소프트웨어 패키징 (0) | 2022.05.04 |
응용 SW 기초 기술 활용 (0) | 2022.05.04 |
애플리케이션 관리 (0) | 2022.05.04 |