1장 (요구사항 확인)
소프트웨어 생명 주기 (SDLC)
- 소프트웨어를 개발하기 위한 과정을 각 단계별로 나눈 것.
폭포수 모형(Waterfall Model)
- 각 단계를 확실히 매듭 짓고 다음 단계를 진행하는 개발 방법론
- 고전적 생명 주기 모형
- 모형을 적용한 경험과 성공 사례가 많다.
- 애자일 모형과 대조적
프로토타입 모형(Prototype Model)
- 실제 개발될 소프트웨어 견본품을 만들어 최종 결과물을 예측하는 모형
나선형 모형(Spiral Model)
- 점진적으로 개발하는 모형
- 보헴
- 폭포수 모형 장점과 프로토타입 타입 모형 장점에 위험 분석 기능 추가
- 유지보수 과정이 필요없다.
애자일 모형
- 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형.
- 폭포수 모형과 대조적
- 고객과의 소통에 초점을 맞춘.
- 대표적인 개발 모형
- 스크럼(Scrum)
- 칸반
- Lean
- XP(eXtreme Programming)
- 기능 중심 개발(FDD; Feature Driven Development)
애자일 개발 4가지 핵심가치
- 프로세스 도구보다는 개인과 상호작용에 더 가치를 둔다.
- 방대한 문서보다는 실행되는 SW에 더 가치를 둔다.
- 계약 협상보다는 고객과 협업
- 계획보다는 변화
소프트웨어 공학
- 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문.
스크럼(Scrum)
→팀이 중심이 되어 개발의 효율성을 높이는 기법이다.
스크럼 팀
- 제품 책임자(PO; Product Owner)
- 요구사항이 담긴 백로그를 작성하는 주체
- 제품에 대한 이해도가 높고, 요구사항을 책임지고 의사를 결정할 사람으로 선정
- 스크럼 마스터(SM; Scrum Master)
- 스크럼 팀이 스크럼을 잘 수행할 수 있도록 가이드 역할을 수행
- 개발팀(DT; Development)
- 제품 책임자와 스크럼 마스터를 제외한 모든 팀원으로 제품 개발을 수행
스크럼 개발 프로세스
- 스프린트 계획 회의(Sprint Planning Meeting)
- 제품 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정을 수립하는 회의
- 스프린트(Sprint)
- 실제 개발 작업을 진행하는 과정으로, 보통 2 ~ 4주 정도의 기간 내에서 진행함.
- 일일 스크럼 회의(Daily Scrum Meeting)
- 모든 팀원이 매일 약속된 시간에 15분 진행사항 점검하는 회의
- 스프린트 검토 회의(Sprint Review)
- 부분 또는 전체 완성 제품이 요구사항에 잘 부합한는지 테스팅하는 회의
- 스프린트 회고(Sprint Retrospective)
- 정해놓은 규칙 준수 여부 및 개선할 점을 확인하고 기록하는 것.
XP(eXtreme Programming)
- 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 생산성을 향상시키는 방법.
XP의 5가지 핵심 가치
- 의사소통(Communication)
- 단순성(Simplicity)
- 용기(Courage)
- 존중(Respect)
- 피드백(Feedback)
XP의 주요 실천 방법
- Pair Programming(짝 프로그래밍)
- 다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는.
- Collective Ownership(공동 코드 소유)
- 개발 코드에 대한 권한과 책임을 공동으로 소유
- Test-Driven-Development(테스트 주도 개발)
- 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구를 사용함.
- Whole Team(전체 팀)
- 개발에 참여하는 모든사람은 자신의 역할이 있고 그역할에 대한 책임을 가져야 함.
- Continuous Integration(계속적인 통합)
- 모듈 단위로 나눠서 개발된 코드들은 지속적으로 통합됨.
- Refactoring(리팩토링)
- 프로그램 기능의 변경 없이 시스템을 재구성함.
- 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발할 수 있도록 하기 위함.
- Small Releases(소규모 릴리즈)
- 릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응할 수 있음.
현행 시스템 파악 절차
1단계
- 시스템 구성 파악
- 시스템 기능 파악
- 시스템 인터페이스 파악
2단계
- 아키텍처 구성 파악
- 소프트웨어 구성 파악
3단계
- 하드웨어 구성 파악
- 네트워크 구성 파악
운영체제(OS, Operating System)
- 컴퓨터 시스템 자원을 효율적으로 관리
운영체제의 목적
처리 능력 향상
사용 가능도 향상
신뢰도 향상
반환 시간 단축
운영체제 관련 요구사항 식별 시 고려사항
- 가용성
- 성능
- 기술 지원
- 주변 기기
- 구축 비용
데이터베이스 관리 시스템(DBMS; DataBase Management System)
- 사용자와 데이터베이스 사이에서 정보를 생성해 주고, 데이터베이스를 관리해 주는 소프트웨어
웹 애플리케이션 서버(WAS; Web Application Server)
- 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어
웹 애플리케이션 서버 관련 요구사항 식별 시 고려사항
- 가용성
- 성능
- 기술 지원
- 구축 비용
오픈소스(Open Source)
- 제한없이 사용할 수 있도록 소스 코드를 공개한 소프트웨어
요구사항 정의
요구사항
- 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 운영되는데 필요한 제약조건.
요구사항의 유형
- 기능 요구사항(Functional requirements)
- 기능이나 수행과 관련된 요구사항
- 입력이나 출력으로 무엇이 포함되는지?
- 어떤 데이터를 저장하거나 연산을 수행해야 하는지에 대한 사항
- 시스템이 반드시 수행해야하는 기능
- 사용자가 시스템을 통해 제공받기를 원하는 기능
- 비기능 요구사항(Non-funcational requirements)
- 품질이나 제약사항과 관련된 요구사항
- 성능 요구사항
- 인터페이스 요구사항
- 데이터를 구축하기 위해 필요한 요구사항
- 테스트 요구사항
- 보안 요구사항
- 사용자 요구사항(User requirements)
- 사용자 관점에서 본 시스템이 제공해야 할 요구사항
- 시스템 요구사항(System requirements)
- 개발자 관점에서 본 시스템 전체가 제공해야 할 요구사항
요구사항 개발 프로세스
도출(Elicitation) → 분석(Analysis) → 명세(Specification) → 확인(Validation)
요구사항 도출 (Requirement Elicitation)
- 시스템 개발에 관련된 사람들이 서로 의견을 교환하여 요구사항을 식별하고 이해하는 과정.
- 브레인스토밍
- 워크샵
- 프로토타이핑
- 유스케이스
요구사항 분석(Requirement Analysis)
- 요구사항 중 이해되지 않는 부분을 걸러내기 위한 과정이다.
- 자료 흐름도(DFD)
- 자료사전(DD)
요구사항 명세(Requirement Specification)
- 분석된 요구사항을 바탕으로 모델을 작성하고 문서화하는 것.
- 기능 요구사항 빠짐없이 기술한다.
- 비기능 요구사항은 필요한것만 기술한다.
요구사항 확인(Requirement Valication)
- 요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 활동
요구공학(Requirements Engineering)
- 요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문.
정형 명세 기법
- 수학적 기반, 일반인들이 보기 힘듬.
비정형 명세 기법
- 이해하기 쉬움.
구조적 분석 기법
- 하향식 방법 사용
- 자료의 흐름과 처리를 중심으로 하는 요구사항 분석 방법
- 자료 흐름도(DFD)
- 자료 사전(DD)
자료 흐름도(DFD; Data Flow Diagram)
- 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법
자료 흐름도 기본 기호
- 프로세스(Process)
- 시스템의 한 부분
- 원
- 자료흐름(Data Flow)
- 자료의 이동이나 연관 관계
- 화살표 →
- 자료 저장소(Data Store)
- 자료 저장소
- 단말(Terminator)
- 시스템과 교신하는 외부 개체
자료 사전(DD; Data Dictionary)
- 자료의 정의 =
- 자료의 연결 +
- 자료의 생략 ( )
- 자료의 선택 [ ]
- 자료의 반복 { }
요구사항 분석용 CASE(자동화 도구)
- 요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구
- CASE → GUI, 소프트웨어 생명주기 전 단계 연결, 다양한 소프트웨어 개발 모형 지원.
SADT
- SoftTech 사에서 개발
- 구조적 요구 분석을 하기 위해
SREM = RSL/REVS
- 요구사항을 명확히 기술
- RSL과 REVS를 사용하는 자동화 도구
PSL/PSA
- PSL과 PSA를 사용하는 자동화 도구
- 미시간 대학에서 개발
HIPO (Hierarchy Input Process Output)
→ 시스템 실행 과정인 입력, 처리, 출력의 기능을 표현한 것으로 하향식 개발 문서화 도구이다.
가시적 도표 전체적 도표
총체적 도표 | 입력, 처리, 출력 |
세부적 도표 | 세세하게. |
UML(Unified Modeling Language)
- 시스템 개발 과정에서 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
- 럼바우(Rumbaugh(OMT)
- Booch
- Jacobson
UML 관계
- 연관 →
- 집합 ◇—
- 포함 ◆—
- 일반화 —>
- 의존 …>
- 실체화
UML의 구성 요소
- 사물(Things)
- 관계(Relationships)
- 다이어그램(Diagram)
구조적(Structural) 다이어그램
클래스 다이어그램 클래스와 클래스가 가지는 속성, 클래스사이의 관계를 표현(클래스,제약조건,관계)
객체 다이어그램 | 객체와 객체 사이의 관계. |
컴포넌트 다이어그램 | 컴포넌트 간의 관계나 인터페이스를 표현. 구현 단계에서 사용 |
배치 다이어그램 | 결과물 , 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현함. 구현 단계에서 사용 |
복합체 구조 다이어그램 | 클래스나 컴포넌트가 복합체 구조를 갖는 경우 그 내부 구조를 표현 |
패키지 다이어그램 | 요소들을 그룹화한 패키지간의 의존관계를 표현 |
행위(Behavioral) 다이어그램
유스케이스 다이어그램 사용자 관점에서 시스템과 사용자의 상호작용을 표현.
시퀀스 다이어그램 | 시스템이나 객체들이 메시지를 주고 받으며 상호 작용하는 과정을 그림으로 표현한 것. (Actor, Object, Lifeline, Active Box, Message, Frame) |
커뮤니케이션 다이어그램 | 시스템이나 객체들이 메시지를 주고받으며 상호작용하는 과정과 객체들간의 연관을 그림으로 나타낸 것. (Actor, Object, Link, Message) |
상태 다이어그램 | 객체들 사이에 발생하는 이벤트에 의한 객체들의 상태변화를 그림으로 표현 |
활동 다이어그램 | 사용자의 관점에서 시스템이 수행하는 기능을 처리흐름에 따라 순서대로 표현 |
상호작용 개요 다이어그램 | 상호작용 다이어그램간의 제어 흐름 표현 |
타이밍 다이어그램 | 객체 상태 변화와 시간 제약을 명시적으로 표현 |
스테레오 타입
<<inculde>> 연결된 다른 UML에 포함되는 관계
<<extends>> | 연결된 다른 UML에 대해 확장관계에 있는 경우 |
<<interface>> | 인터페이스를 정의하는경우 |
<<exception>> | 예외를 정의하는 경우 |
<<constructor>> | 생성자 역할을 수행하는 경우 |
소프트웨어 개발 표준
→소프트웨어 개발단계에서 수행하는 품질관리에 사용되는 국제 표준
- ISO/IEC 12207 - 소프트웨어 생명주기(SLC) 프로세스 표준
- CMMI - 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도 평가 모델
- SPICE - 소프트웨어의 품질및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
'정보처리기사 > 단원별 개념정리' 카테고리의 다른 글
정보처리기사-6장(화면설계,UI, 품질요구사항, ISO/IEC) (0) | 2023.01.25 |
---|---|
정보처리기사-5장(인터페이스, 미들웨어, 모듈연계) (0) | 2023.01.25 |
정보처리기사-4장(SW아키텍처, 객체지향, 모듈, 결합도, 응집도, 디자인 패턴) (0) | 2023.01.25 |
정보처리기사-3장(통합구현, XML, IPC..) (0) | 2023.01.25 |
정보처리기사-2장 (DBMS, 정규화, 트랜잭션, DB보안(임의,강제,역할기반)).. (0) | 2023.01.25 |