1. 소프트웨어 생명주기 (Software Life Cycle)
소프트웨어 개발 방법론의 바탕이 되는 것으로 소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈 것이다.
- 소프트웨어 수명 주기라고도 하며 개발단계와 각 단계별 주요활동, 그리고 활동의 결과에 대한 산출물로 표현한다.
- 이를 표현하는 형태를 소프트웨어 생명주기 모형/소프트웨어 프로세스 모형/소프트웨어 공학 패러다임 이라고도 한다.
2. 소프트웨어 공학(SE:Software Engineering)
<개념>
- 소프트웨어 위기극복 방안으로 연구된 학문
- 여러가지 방법론, 도구, 관리 기법으로 품질과 생산성 향상을 목적으로 한다.
<기본 원칙>
- 현대적인 프로그래밍 기술을 계속적으로 적용해야 한다.
- 개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증해야 한다.
- 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지해야 한다.
3. 폭포수 모형(Waterfall Model)
폭포에서 떨어진 물은 거슬러 올라갈 수 없듯이
소프트웨어 개발도 이전 단계로 돌아갈 수 없다는 전제하에
각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토, 승인과정을 거친 후 다음 단계를 진행하는 개발 방법론
- 가장 오래되고 폭넓게 사용된 전통적인 소프트웨어생명주기 모형(고전적 생명주기 모형)
- 선형 순차적 모형 : 한 단계 끝나야 다음단계로 넘어갈 수 있음
- 각 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 함.
타당성 검토 > 계획 > 요구분석 > 설계 > 구현(코딩) > 시험(검사) > 유지 보수
4. 나선형 모형(점진적 모형)
보헴이 제안한 것으로 폭포수 모형과 프로토타입 모형의 장점에 위험분석 기능을 추가한 모형
- 나선을 따라 돌듯 여러 번의 소프트웨어 개발과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 것
- 위험관리, 위험 최소화가 목적
- 누락되거나 추가된 요구사항 첨가가능, 정밀, 유지보수 과정은 필요없음
계획 수립 > 위험분석 > 개발및 검증 > 고객평가 > 계획수립
5. 애자일 모형(Agile Model)
Agile은 '민첩한', '기민한'이라는 의미로, 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정 주기를 반복하며 진행
- 어느 특정 개발 방법론이 아니고, 좋은 것을 빠르고 낭비 없이 만들기위해 고객과의 소통에 초점을 맞춘 방법론을 통칭
- 기업 활동 전반에 걸쳐 사용
- 스크럼, XP, 칸반, Lean, 크리스탈, ASD, 기능중심개발, DSDM, DAD 개발모형이 있다
핵심가치
1. 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다
2. 방대한 문서보단 실행되는 SW에 더 가치를 둔다
3. 계약 협상보다는 고객과 협업에 더 가치를 둔다
4. 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다
6. 스크럼
스크럼이란 - 럭비에서 반칙으로 경기가 중단된 경우 양 팀의 선수들이 럭비공을 가운데 두고 상대팀을 밀치기 위해 서로 대치해 있는 대형을 말한다.
소프트웨어에서 스크럼은 팀이 중심이 되어 개발의 효율성을 높인다는 의미를 내포한다.
- 팀원 스스로가 스크럼 팀을 구성해야하고 개발 작업에 관한 모든 것을 스스로 해결 할 수 있어야한다.
- 스크럼 팀은 제품 책임자(PO), 스크럼 마스터(SM), 개발팀(DT)으로 구성
제품 책임자
- 제품에 대한 이해도 가장 높음
- 책임자, 주로 개발 의뢰자나 사용자가 담당
- 의견 종합, 제품에 대한 요구사항 작성, 제품 테스트 수행, 우선순위 갱신
스크럼 마스터
- 가이드 역할, 통제X
- 일일 스크럼 회의 주관, 개발 과정에서의 장애요소 공론화하여 처리
개발팀
- PO, SM제외한 모든 팀원
- 개발자 외에도 디자이너, 테스터 등 제품 개발을 위한 모든 사람이 대상
- 보통 최대인원은 7~8명
스크럼 개발 프로세스
- 제품백로그 : 요구사항 우선순위에 따라 나열한 목록
- 스프린트 계획회의 : 제품 백로그 중 수행할 작업으로 단기일정 수립
- 스프린트 : 실제개발작업 진행, 보통 2~4주, 스프린트 백로그에 작성된 태스크 대상으로 속도 추정 후 개발 담당자에게 할당
- 일일 스크럼 회의 : 15분 정도 짧게 진행상황 점검
- 스프린트 검토회의 : 제품 테스팅
- 스프린트 회고 : 규칙 준수 현황 및 개선점 등 확인
7. XP(eXtream Programming)
수시로 발생하는 고객의 요구사항 대응위해 고객의 참여와 개발과정의 반복 극대화로 개발 생산성을 향상시키는 방법
- 짧고 반복적인 개발주기, 단순설계, 고객의 적극적인 참여
- 릴리즈의 기간 짧게 반복, 빠르게 개발
- 핵심가치 : 1.의사소통 2. 단순성 3. 용기 4. 존중 5. 피드백
주요 실천 방법
- 짝 프로그래밍
- 공동 코드 소유
- 테스트 주도개발
- 전체 팀 > 모든 구성원이 역할에 대한 책임
- 계속적인 통합
- 디자인 개선 or 리팩토링
- 소규모 릴리즈
8. 현행 시스템 파악
1단계 - 시스템 구성파악, 기능 파악, 인터페이스 파악
2단계 - 아키텍처 구성, 소프트웨어 구성 파악
3단계 - 하드웨어 구성, 네트워크 구성 파악
9. 운영체제(OS, Operation System)
컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종
다른 응용 프로그래밍 유용한 작업을 할 수 있도록 환경 제공
- 컴퓨터 운영체제 종류 : 윈도우, 유닉스, Linux, Mac OS 등
- 모바일 운영체제 종류 : iOS, Android 등
- 요구사항 식별 시 고려사항 : 가용성/성능/기술지원/주변 기기/구축 비용
10. 데이터베이스 관리 시스템 (DBMS)
사용자와 DB사이에서 사용자의 요구에 따라 정보 생성, DB관리해 주는 소프트웨어
- 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제 해결을 위해 제안됨
- 모든 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리
- 구성, 접근 방법, 유지관리
- 종류) 오라클, IBM DB2, Microsorf SQL Server, MySQL, SQLite, Mongo DB, Redis등
- 요구사항 식별 시 고려사항 : 가용성/성능/기술지원/상호 호환성/구축 비용
11. 웹 애플리케이션 서버 (WAS)
사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위한 미들웨어
- 주로 데이터베이스 서버와 연동해서 사용
- 데이터 접근, 세션관리, 트랜잭션 관리 등을 위한 라이브러리 제공
- 종류) Tomcat, GlassFish, JBoss, Jetty, JEUS, Resin WebLogic, WebSphere 등
12. 요구사항 유형
- 기능 요구사항
- 시스템이 무엇을 하는지, 어떤 기능을 하는지
- 시스템의 입출력으로 무엇이 포함되어야 하는지, 시스템이 어떤 데이터를 저장하거나 연산을 수행해야하는지에 대한 사항
- 비기능 요구사항
- 시스템 장비 구성 요구사항 / 성능 요구사항
- 인터페이스 요구사항 / 데이터 요구사항 / 테스트 요구사항
- 보안 요구사항 / 품질 요구사항 / 제약사항
- 프로젝트 관리 요구사항 / 프로젝트 지원 요구사항
13. 요구사항
도출 > 분석 > 명세 > 확인
*도출 주요기법 ) 청취와 인터뷰, 설문, 브레인 스토밍, 워크샵, 프로토타이핑, 유즈케이스 등
*분석 도구 ) 자료흐름도(DFD), 자료 사전(DD), 개체 관계도(ERD) 등
명세기법
- 정형 명세 기법 : 수학적 원리 기반/ 모델 기반, 정확 간결, 완전성 검증 가능
- 비정형 명세기법 : 상태/기능/객체 중심, 자연어 기반 서술 또는 다이어그램으로 작성, 내용이해 쉬움, 의사소통 용이
자료흐름도(DFD, Data Flow Diagram)
도형 중심으로 기술하는 방법, 자료 흐름 그래프/버블 차트라고도 함
기본기호 ) 프로세스 , 자료 흐름, 자료 저장소, 단말
자료 사전(DD, Data Dictionary)
자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것, Meta Data
자동화 도구
- SADT(Structured Analysis and Design Technique) : 구조적 분석 및 설계 도구
- SREM(Software Requirements Engineering Methodology) : RSL과 REVS를 사용하는 자동화 도구
*RSL(Requirement Statement Language) : 요구사항 기술 언어
*REVS(Requirement Engineering and Validation System) : 요구사항 분석기, 분석 명세서 출력
- PSL/PSA
- TAGS : 통합 자동화 도구
14. HIPO(Hierarchy Input Process Output)
시스템의 분석 및 설계나 문서화할 때 사용되는 기법
시스템 실행과정인 입력, 처리, 출력의 기능을 나타냄
- 하향식 소프트웨어 개발을 위한 문서화 도구
- 체계적인 문서관리 가능
- 기호, 도표 사용
- 변경, 유지보수 용이
- 기능과 자료의 의존관계 동시에 표현 가능
- HIPO Chart 종류 ) 가시적 도표 / 총체적 도표 / 세부적 도표
15. UML(Unified Modeling Language)
개발자와 고객 혹은 개발자 상호간의 원활한 의사소통을 위한 대표적인 객체지향 모델링 언어
- 시스템 구조를 표현하는 6개의 구조 다이어그램 + 시스템의 동작을 표현하는 7개의 행위 다이어그램 작성 가능
- 구성요소 ) 사물, 관계, 다이어그램
관계(Relationships)
사물과 사물 사이의 연관성 표현
- 연관관계
- 집합관계
- 포함관계 : 집합관계의 특수형태, 포함하는 사물이 포함된 사물에 영향을 미침
- 일반화 관계 : 일반적인지 구체적인지 표현
- 의존관계 : 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계
- 실체화관계 : 기능으로 서로를 그룹화할 수 있는 관계
다이어그램
사물과 관계를 도형으로 표현
- 시스템을 가시화한 뷰를 제공
- 정적 모델링 -> 구조적 다이어그램 사용, 동적 모델링 -> 행위 다이어그램 사용
- 구조적 다이어그램 종류(6가지) : 클래스 / 객체 / 컴포넌트 / 배치 / 복합체 구조 / 패키지 다이어그램
- 행위 다이어그램 종류(7가지) : 유즈케이스 / 순차 / 커뮤니케이션 / 상태 / 활동 / 상호작용 / 타이밍 다이어그램
스테레오타입(Stereotype)
UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하기 위해 사용
겹화살 괄호<<>> 사이에 표현할 형태를 기술
<<include>> <<extend>> <<interface>> <<exception>> <<constructor>> 등
유즈케이스 (Use Case) 다이어그램
사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점(View)에서 표현한 것
구성요소
- 시스템/시스템 범위 : 시스템 내부에서 수행되는 기능들을 외부 시스템과 구분하기 위해 시스템 내부의 유즈케이스들을 사각형으로 묶어 시스템의 범위를 표현
- 액터(Actor) : 시스템과 상호작용하는 모든 외부요소, 주액터(이득을 얻는 대상, 사람), 부액터(서비스를 제공하는 외부시스템, 조직이나 기관 등)
- 유즈케이스 : 사용자가 보는 관점에서 액터에게 제공하는 서비스 또는 기능을 표현한 것
- 관계 : 액터-유즈케이스/유즈케이스-유즈케이스에서 연관 , 포함, 확장, 일반화 관계를 표현할 수 있음
클래스 다이어그램
클래스, 클래스의 특성인 속성과 오퍼레이션, 속성과 오퍼레이션에 대한 제약조건, 클래스 사이의 관계를 표현
구성요소 ) 클래스 / 제약 조건 / 관계
순차(Sequence) 다이어그램
시스템이나 객체들이 메시지를 주고받으며 시간의 흐름에 따라 상호 작용하는 과정을 액터, 객체, 메시지 등의 요소를 사용하여 그림으로 표현한 것
구성요소 ) 액터, 객체, 생명선, 실행, 메시지 등
'정보처리기사 > 1과목 - 소프트웨어 설계' 카테고리의 다른 글
[정보처리기사 필기] 소프트웨어 설계 요약 정리 3 (0) | 2023.01.24 |
---|---|
[정보처리기사 필기] 소프트웨어 설계 요약 정리 2 (0) | 2023.01.24 |