소프트웨어 생명 주기 (Software Life Cycle)
소프트웨어를 개발하기 위한 설계, 운용, 유지보수 등의 과정을 단계별로 나눈 것
폭포수 (Waterfall Model)
- 고전적 생명 주기 모형
- 단계가 끝나야지 다음 단계로 감
프로토타입 (Prototype Model, 원형 모델)
- 견본품(prototype)을 만들어 최종 결과물을 예측하는 모형
나선형 (Spiral Model, 점진적 모델)
- 여러 번의 소프트웨어 개발 과정을 점진적으로
- 보헴(Bohem)이 제안함
- 폭포수 + 프로토타입 + 위험 분석 기능
- 누락되거나 추가된 요구사항 첨가 가능
- 유지보수 과정 필요 없음
- 계획하고 분석한 후 개발하고 평가
애자일(Agile Model)
- 민첩한, 기밀한
- 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형
- 폭포수와 대조적
- 대표적인 개발 모형
- 스크럼 (Scrum)
- XP (eXtreme Progamming)
- 칸반 (Kanban)
- Lean
- 기능 중심 개발 (FDD : Feature Driven Development)
소프트웨어 공학 (SE; Software Engineering)
소프트웨어 위기를 극복하기 위한 방안으로 연구된 학문
개발 기술 환경 파악
운영체제 (OS; Operation System)
컴퓨터 시스템의 자원을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 소프트웨어
데이터베이스 관리 시스템 (DBMS; DataBase Management System)
사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
웹 애플리케이션 서버 (WAS; Web Application Server)
동적인 컨텐츠를 처리하기 위해 사용되는 미들웨어
오픈 소스 (Open Source)
누구나 별다른 제한 없이 사용할 수 있도록 소스 코드를 공개한 소프트웨어
요구사항 정의
요구사항
- 소프트웨어가 제공하는 서비스에 대한 설명과 운영되는데 필요한 제약 조건
- 요구사항 유형
- 기능 요구사항 (Functional Requirements) : 기능, 수행
- 비기능 요구사항 (Non-functional Requirements) : 품질, 제약사항
- 사용자 요구사항 (User Requirements) : 사용자 관점, 친숙한 표현으로 이해하기 쉽게 작성
- 시스템 요구사항 (System Requirements) : 개발자 관점, 소프트웨어 요구사항이라고도 함
기능 요구사항 vs 비기능 요구사항
기능 : 사용자는 회원ID와 비밀번호를 입력해 로그인한다
비기능 : 시스템은 1년 365일, 하루 24시간 운용이 가능해야 한다
요구사항 개발 프로세스
도출 (Elicitation) -> 분석 (Analysis) -> 명세 (Specification) -> 확인 (Validation)
요구사항 개발은 요구공학의 한 요소
요구사항 도출 (Elicitation)
- 소프트웨어 개발 생명주기 (SDLC)동안 지속적으로 반복
- 주요 기법
- 브레인스토밍 (Brain Storming) : 3인 이상이 자유롭게 의견을 교환
- 프로토타이핑 (Prototyping) : 견본품
요구사항 분석 (Requirement Analysis)
- 하향식 방법
- 주요 기법 도구
- 자료 흐름도 (DFD)
- 자료 사전 (DD)
- CASE : 요구사항을 자동으로 분석
- HIPO (Hierarchy Input Process Output) : 하향식 소프트웨어 개발
- 가시적 도표 (Visual Table of Contents, 도식 목차)
- 총체적 도표 (Overview Diagram, 총괄 도표)
- 세부적 도표 (Detail Diagram, 상세 도표)
자료 흐름도 (DFD; Data Flow Diagram)
기본 기호 4가지가 단답형으로 출제될 가능성. (4가지 기호와 종류, 명칭 영문까지 암기)
Yourdon/DeMacro 표기 방법이 주로 사용됨
자료 사전 (DD; Data Dictionary)
요구사항 명세 (Specification)
UML (Unified Modeling Language)
- 시스템 개발 과정에서 의사소통이 원할하게 이루어지도록 표준화한 객체지향 모델링 언어
- Rumbaugh (OMT), Booch, Jacobson 등 객체지향 방법론의 장점을 통합함
- 구성요소
- 사물 (Things) : 관계가 형성될 수 있는 대상들
- 관계 (Relationships)
- 다이어그램 (Diagram)
UML - 관계 (Relationships)
연관 관계 (Association) - 사각형
서로 관련되어 있는 관계
집합 관계 (Aggregation) - 빈 마름모
하나의 사물이 다른 사물에 포함되어 있음
포함 관계 (Composition) - 색칠 마름모
집합 관계의 특수한 형태, 포함하는 사물의 변화가 포함하는 사물에게 영향을 미치는 관계
서로 독립될 수 없고 생명주기를 함께한다.
일반화 관계 (Generalization) - 빈 화살표
하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)이라고 부른다.
의존 관계 (Dependency) - 색칠 점선 화살표
짧은 시간 동안 연관을 유지하는 관계
실체화 관계 (Realization) - 빈 점선 화살표
할 수 있거나 해야 하는 기능, 서로를 그룹화 할 수 있는 관계
UML - 다이어그램 (Diagram)
사물과 관계를 도형으로 표현
구조적 다이어그램 (Structural) - 정적 모델링
객체 (Object) 들을 클래스 (Class) 로 추상화해 표현
클래스 다이어그램 (Class)
클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현
패키지 다이어그램 (Package)
유스케이스나 클래스 등 요소들을 그룹화한 패키지 간의 의존 관계를 표현
행위 다이어그램 (Behavioral) - 동적 모델링
유스케이스 다이어그램 (Use Case)
기능 모델링, 사용자 관점에서 기능 표현
활동 다이어그램 (Activity)
기능 모델링, 사용자 관점에서 기능을 처리 흐름에 따라 순서대로 표현
시퀀스 다이어그램 (Sequence)
동적 모델링, 시스템이나 객체들이 메시지를 주고 받으며 상호작용하는 과정을 그림으로 표현
커뮤니케이션 다이어그램 (Communication)
동적 모델링, 협업 다이어그램 (Collaboration), 시스템이나 객체들이 메시지를 주고 받으며 상호작용하는 과정과 객체들 간의 연관을 그림으로 표현
상태 다이어그램 (State)
객체들 사이에 발생하는 이벤트에 의한 객체들의 상태 변화를 그림으로 표현
스테레오 타입 (Stereotype)
길러멧 (Guilmet, 《 》)사이에 형태를 기술한다
- 《include》 : 포함 관계
- 《extend》 : 확장 관계
- 《interface》 : 인터페이스
- 《exception》 : 예외
- 《constructor》 : 생성자
소프트웨어 개발 방법론
소프트웨어 개발, 유지보수 등 필요한 수행 방법과 각종 기법 및 도구를 체계적으로 정리해 표준화한 것
주요 개발 방법론
- 구조적 방법론 : 처리 (Process) 중심
- 정보공학 방법론 : 자료 (Data) 중심
- 객체지향 방법론 : 객체들을 조립해 소프트웨어를 구현
- 컴포넌트 기반 방법론 (CBD; Component Based Desing) : 재사용 (Reusability)
- 애자일 방법론
구성요소
- 객체 (Object) : 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 소프트웨어 모듈
- 클래스 (Class) : 공통된 속성과 연산을 갖는 객체의 집합으로 객체의 일반적인 타입 (Type)
- 메시지 (Message) : 객체들 간에 상호작용 하는 데 사용되는 수단
기본 원칙
- 캡슐화 (Encapsulation) : 데이터와 데이터를 처리하는 함수를 하나로 묶음
- 정보 은닉 (Information Hiding) : 캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 접근을 허용
- 추상화 (Abstraction) : 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에 중점을 두어 개략화
- 상속성 (Inheritance) : 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려 받음
- 다형성 (Polymorphism) : 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
S/W 공학의 발전적 추세
소프트웨어 재사용 (Software Reuse)
이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
소프트웨어 재공학 (Software Reengineering)
기존 시스템을 이용해 보다 나은 시스템을 구축하고, 새로운 기능을 추가해 소프트웨어 성능을 향상시킴
CASE (Computer Aided Software Engineering)
자동화
비용 산정 기법 - 수학적 산정 기법
COCOMO 모형 (Constructive COst MOdel)
- LOCC(원시 코드 라인 수)에 의한 산정 기법
- 보헴 (Bohem)이 제안
- 소프트웨어 개발 모형
- 조직형 (Organic Mode) : 5만 라인 이하
- 반분리형 (Semi-Detached Mode) : 30만 이하
- 내장형 (Embedded Mode) : 30만 라인 이상
Putnam 모형
소프트웨어 생명 주기 전 과정 동안 사용될 노력의 분포를 예상하는 모델
기능 점수 (FP, Function Point) 모델
소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 기능 점수(FP)를 구한 후 비용을 산정
프로젝트 일정 계획 (Scheduling)
PERT (Program Evaluation and Review Technique, 프로그램 평가 및 검토 기술)
프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크
CPM (Critical Path Method, 임계 경로 기법)
노드와 간선으로 구성된 네트워크
간트 차트
시간선 차트 (Time-Line), 프로젝트 작업 일정을 막대 도표를 이용해 표시하는 프로젝트 일정표
소프트웨어 개발 표준
ISO / IEC 12207
ISO (국제표준화기구) 에서 만든 표준 소프트웨어 생명 주기 프로세스
CMMI (Capability Maturity Model Integration)
소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
소프트웨어 공학연구소(SEI) 에서 개발
SPICE (Software Process Improvement and Capability dEtermination)
소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
ISO / IEC 15504
#
REFERENCE
'License > 정보처리기사' 카테고리의 다른 글
[정처기] 06. 화면 설계 (0) | 2024.04.27 |
---|---|
[정처기 실기] 05. 인터페이스 구현 (1) | 2024.04.27 |
[정처기 실기] 03. 통합 구현 (0) | 2024.04.26 |
[정처기 실기] 02. 데이터 입출력 구현 (0) | 2024.04.26 |