2022. 6. 29. 08:51ㆍ정보처리기사
1과목 소프트웨어 설계
상용 소프트웨어
- 상업적 목적으로 생산되는 프로그램
- 원시 코드 제공 x
- 산업 특화 소프트웨어, 산업 범용 소프트웨어로 구분됨
- 기업용 소프트웨어 : 오피스웨어(회사, 단체 조직), ERP(경영), SCM(부품업자), BI(수집된 데이터), CRM(고객 특성)
시스템 소프트웨어
- 시스템: 하나의 공통적인 목적을 가지고있는 구성 요소들을 상호 결합한 형태
- 시스템 기본 요소 : 입력, 출력, 처리, 제어, 피드백 ( 입출처제피)
- 개념 : 운영체제와 같은 의미를 가짐, 응용 소프트웨어 실행하기 위한 환경 제공, 하드웨어 동작 및 관리
플랫폼
- 하드웨어와 소프트웨어 환경의 총칭
- 소프트웨어 개발과 하드웨어의 운영을 편안하게 할 수 있도록 서비스 지원
- 동일한 플랫폼에서 개발된 소프트웨어는 호환성 뛰어남
- 특징 : 소프트웨어 개발비용 줄임, 동일 플랫폼 간의 공통 시스템 네트워크 구성 효율적, 소프트웨어 개발 생산성 향상
- 성능 평가 기준 : 사용성, 응답시간, 정확성, 사용률
프레임워크
- 개념 : 응용 소프트웨어 개발을 수월하게 하기 위해 설계, 구현 등을 재사용이 가능한 형태로 제공하는 소프트웨어 환경
- 특징 : 모듈화, 재사용성, 확장성, 제어의 역 흐름
- 기대 효과 : 개발 용이성, 품질 보증, 변경 용이성, 유지보수 용이성, 재사용성 향상, 표준화율 향상, 상호 운용성 향상
컴포넌트
- 개념 : 모듈 - 부품화된 프로그램, 라이브러리 - 관련된 모듈, 패키지들의 집합, 컴포넌트 - 라이브러리 집합
- 선행조건, 결과 조건, 불변조건
소프트웨어 공학
- 개념 : 소프트웨어 개발의 품질과 생산성 향상을 연구하는 학문
소프트웨어 개발 방법론
- 소프트웨어의 생산성과 품질 향상에 목적
구조적 방법론
- 정형화된 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 절차 : 타당성 검토 - 계획 - 요구사항 - 설계 - 구현 - 시험 - 운용/유지보수
정보공학 방법론
- 정보 시스템 개발에 필요한 관리 절차와 작업 기법을 체계화하는 것
- 절차 : 정보 전략 계획 수립 - 업무 영역 분석 - 업무 시스템 설계 - 업무 시스템 구축
객체지향 방법론
- 현실 세계의 개체를 객체화하여, 각각의 객체가 서로 통신을 통해 정보를 처리하는 형태의 소프트웨어 구현
- 기본 원칙 : 캡슐화, 정보은닉, 추상화, 상속성, 다형성
- 절차 : 요구분석 - 설계 - 구현 - 테스트 및 검증 - 인도
컴포넌트 기반 방법론(CBD)
- 재상용이 가능한 컴포넌트 기반의 개발 방법론
- 절차 : 개발 준비 - 분석 - 설계 - 구현 - 테스트 - 전개 - 인도
- 단계별 산출물
-- 분석단계 : 사용자 요구사항 정의서, 유스케이스 명세서, 요구사항 추적표
-- 설계단계 : 클래스 설계서, 사용자 인터페이스 설계서, 컴포넌트 설계서 등..
-- 구현단계 : 프로그램 코드, 단위시험 결과서, 데이터베이스 테이블
-- 시험단계 : 통합시험 결과서, 시스템시험 결과서, 사용자 지침서 등..
애자일 방법론
- 고객의 요구사항 변화에 민첩하고 유연하게 대응할 수 있도록 진행
- 일정한 주기를 반복
- 소규모 프로젝트, 숙력된 개발자, 급변하는 요구사항 적합
- XP, Scrum, 기능 중심 개발, 동적 시스템 개발방법, 경량 개발, kanban
재품 계열 방법론
- 특정 제품의 공통된 기능을 중심으로, 새롭게 특화된 기능을 구현하여 조합
- 임베디드 소프트웨어 개발에 적합
테일러링 방법론
- 개발하려는 소프트웨어 특성에 맞도록, 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 것
- 방법론 최적화를 위해 프로젝트 분석, 커스터마이징 반복
- ISO/IEC 12207, CMMI, SPICE 등의 소프트웨어 개발 프레임 워크 사용
- 내부적 요건 : 목표환경, 요구사항, 프로젝트 규모, 보유 기술
- 외부적 요건 : 법적 제약사항, 표준 품질 기준
보안 개발 방법론의 종류
MS-SDL
- MS사가 자체적으로 수립한 SDLC
Seven Tochpoints
- 실무적으로 검증된 개발 보안 방법론 중 하나
- 소프트웨어 보안의 모법 사례를 SDLC에 통합한 소프트웨어 개발 보안 생명 주기 방법론
- 모범 사례 : 코드검토, 아키텍처 위험 분석, 침투 테스트, 위험 기반 보안 테스트, 악용사례, 보안 요구, 보안 운영
CLASP
- 소프트웨어 개발 생명 주기 초기 단계의 보안을 강화하기 위해 정형화된 절차
CWE
- 소프트웨어의 보안 취약점을 유발하는 원인을 7가지로 정리한 방법론
- 입력 데이터 검증 및 표현, 보안 기능, 시간 및 상태, 에러 처리, 코드 오류, 캡슐화, API 오용
비용 산정 기법
소프트웨어 비용 결정 요소
- 프로젝트 요소 : 제품 복잡도, 시스템 크기, 요구되는 신뢰도
- 자원 요소 : 인적, 하드웨어, 소프트웨어 자원 등
- 생산성 요소 : 개발자의 능력, 개발 기간 등
하향식 비용 산정 기법
- 과거 경험을 바탕으로 전문 개발자들이 참여한 회의를 통해 비용 산정
- 전문가 측정 기법
- 델파이 측정 기법 : 주관적인 판단 보완을 위해 중재자와 많은 전문가가 비용 산정
상향식 비용 산정 기법
- 프로젝트 세부적인 작업 단위별로 비용을 산정한 후에 전체 비용을 측정
LOC기법
- 각 기능의 원시 코드 라인 수를 예측하여 생산성, 개발 기간 등의 비용 산정
- 예측치 측정 공식 : (낙관치 + (4 x 기대치) + 비관치) / 6
단계별 인월수 기법
- 개발 단계별 중요도에 따른 가중치 부여
소프트웨어 비용 추정 모형
COCOMO모델
- 보헴이 제안한 LOC에 의한 비용 산정 기법
- Organic : 5만라인 이하
- Semi-Detached : 30만 라인 이하
- Embedded : 30만라인 이상
Putnam모델
- 생명 주기 예측 모형
- 시간에 따른 함수로 표현되는 Rayleigh-Norden곡선의 노력 분포도를 가짐
- SLIM : Putnam모델을 기초로한 소프트웨어 비용 산출 자동화 측정 도구
기능 점수 모델
- 소프트웨어의 기능을 증대시키는 요인별로 가중치 부여
- 비용 산정 요소 : 입력 유형의 수, 출력 유형의 수, 사용자 명령어 수, 데이터 파일의 수, 인터페이스의 수
소프트웨어 개발 표준
ISO/IEC 12207
- 국제표준화기구에서 만든 표준 소프트웨어 생명 주기 프로세스
ISO/IEC 12119
- 패키지 소프트웨어의 제품 품질 요구사항 및 테스트를 위한 국제 표준
ISO/IEC 29119
- 소프트웨어 테스트 관련 국제 표준
ISO/IEC 9126 -> 25010
- 소프트웨어 품질 특성과 평가에 관한 표준 지침서
- 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성
CMM
- 소프트웨어 유지보수, 개발에 대한 프로세스 개선과 능력 향상을 위한 프레임 워크
- 단계 : 초기화, 반복, 정의, 관리, 최적화
- 평가기준 : 혼돈적 관리, 경험적 관리, 정성적 관리, 정량적 관리, 최적화 관리
- 한계 : 등급 판정 비효율적, 비현실적
CMMI
- 후속모델
SPICE
- 소프트웨어 품질 및 생산성 향상을 위한 소프트웨어 프로세스 평가하는 국제 표준
- 불안정, 수행, 관리, 확립, 예측, 최적화
소프트웨어 생명주기
폭포수 모델
- 개발 이전 단계로 돌아갈 수 없다는 전제하에 각 단계 확실히 매듭
- 과거 많이 사용된 생명주기 모형
프로토타입 모델
- 사용자 요구사항 파악을 위해 견본품을 만들어 결과물을 예측
나선형 모델
- 점진적으로 개발
- 단계 : 계획 및 초기 요구 분석 - 1차 위험 분석 - 1차 프로토타입 개발 - 1차 고객 평가 = 반복
애자일 모델
- 유연하게 대응할 수 있도록 일정 주기 반복
- 고객과의 소통에 중점
스크럼 모델
- 팀을 중심으로 개발을 진행하여 개발의 효율성 높임
- 제품 책임자, 스크럼 마스터, 개발팀으로 구성
- 스크럼의 가치 : 확약, 전념, 정직, 존중, 용기
스크럼 모델 개발 프로세스
- 제품 백로그 : 제품 개발에 필요한 User Story를 우선순위에 나열한 목록
- 스프린트 계획 회의 : 제품 백로그 중 이번 스프린트에서 수행할 작업을 댓상으로 짧은 일정을 수립
- 스프린트 : 실제 개발 진행 과정
- 일일 스크럼 회의 : 15분동안 회의
- 스프린트 검토 회의
- 스프린트 회고
XP모델
- 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
- 짧고 반복적인 개발 주기
- xp의 가치 : 의사소통, 단순성, 용기, 존중, 피드백
개발 프로세스
- 사용자 스토리
- 릴리즈 계획 수립
- 스파이크
- 이터레이션
- 승인검사
- 소규모 릴리즈
기본 원리(실천항목)
PERT 네트워크
- 소요 기간의 예측이 어려운 경우에 적합
- 프로젝트 개발기간을 결정하는 임계경로를 알 수 있음
CPM 네트워크
- 소요 기간이 확실한 경우에 적합
위험관리
형상관리
- 소프트웨어 개발의 전 과정에서 발생하는 산출물들의 버전 관리
- 형상 식별, 변경제어, 형상 상태 보고, 형상 감사
-------------------------------------------------------------------------------------------------------------------------------------------------
시스템 인터페이스 파익
- 단위 업무 시스템 간에 주고 받게 되는 데이터에 대한 속성 파악
시스템 아키텍처 구성 파악
-
'정보처리기사' 카테고리의 다른 글
정처기 헷갈리는 것들 (0) | 2022.03.04 |
---|