- 소프트웨어 생명주기 (Software Life Cycle)
- 소프트웨어를 개발하기 위한 과정을 각 단계별로 나눈 것
- 소프트웨어 공학 (Software Engineering)
- 소프트웨어 위기를 극복하기 위한 방안으로 연구된 학문
- 소프트웨어 품질과 생산성 향상이 목적
- 기본 원칙
- 현대적인 기술을 계속적으로 적용
- 지속적으로 검증
- 명확한 기록을 유지
- 폭포수형 모형(Waterfall Model)
- 각 단계를 확실히 매듭짓고 다음 단계를 징행하는 개발 방법론
- 고정적 생명 주기 모형 (전통적인 소프트웨어 생명주기 모형)
- 프로토타입 모형(Prototype Model)
- 실제 개발될 소프트웨어의 프로토타입을 만들어 최종 결과물을 예측
- 나선형 모형(Sprial Model)
- 점진적으로 최종 소프트웨어를 개발하는 모형
- 위험분석 기능을 추가
- 계획 → 위험분석 → 개발 → 평가
- 애자일 모형 (Agile Model)
- 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발
- 폭포수형 모형과 대조적
- 대표적인 모형 : 스크럼, XP, 칸반, Lean, 기능 중심 개발
- 4가지 핵심가치 : 개인과의 상호작용, 실행되는 SW, 고객과 협업, 변화에 반응
- 스크럼
- 팀이 중심이 되어 개발의 효율성을 높이는 기법
- 팀
- 제품 책임자 (PO) : 요구사항이 담긴 백로그를 작성하는 주체
- 백로그(BackLog) : 제품 개발에 필요한 요구사항을 모두 모아 우선순위를 부여해 놓은 목록
- 스크럼마스터 (SM): 팀이 스크럼을 잘 수행하고록 하는 가이드 역할
- 개발팀 (DT)
- 제품 책임자 (PO) : 요구사항이 담긴 백로그를 작성하는 주체
- 계획 → 스프린트 → 회의/검토 → 회고
- XP (eXtreme Programming)
- 고객의 요구사항 변화에 유연하게 대응하기 위해 고객의 참여를 극대화하여 생산성을 향상시키는 방법
- 5가지 핵심 가치
- 의사소통 (Communication)
- 단순성 (Simplicity0
- 용기 (Courage)
- 존중 (Respect)
- 피드백 (Feedback)
- 릴리즈 계획 수립 → 이터레이션 → 승인 검사 → 소규모 릴리즈
- 주요 실천 방법
- Pair Programming : 다른 사람과 함께 프로그래밍 → 개발에 대한 공동책임
- Collective Ownership : 개발 코드에 대한 권한과 책임을 공동 소유
- Test-Driven Development : 테스트 케이스를 먼저 작성하고 개발
- Whole Team
- Continuos Integration : 하나의 작업이 마무리될 때 마다 지속적으로 통합
- Refactoring : 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발하기 위함 → 기능의 변경없이 시스템 재구성
- Small Releases : 릴리즈 기간을 짧게 반복
- 현행 시스템 파악
- 1단계
- 시스템 구성 파악 : 기간업무와 지원업무로 구분하여 기술
- 시스템 기능 파악 : 주요기능,하부기능, 세부기능으로 구분하여 계층형으로 표시
- 시스템 인터페이스 파악 : 데이터의 종류, 프로토콜 등을 명시
- 2단계
- 아키텍처 구성 파악
- 소프트웨어 구성 파악 : 라이선스 적용 방식, 라이선스 수 등을 명시
- 3단계
- 하드웨어 구성 파악 : 서버의 이중화 적용 여부 명시
- 이중화 (Replication) : 운용 서버에 장애가 발생했을 때 대기서버에서 서비스를 계속 유지
- 네트워크 구성 파악
- 하드웨어 구성 파악 : 서버의 이중화 적용 여부 명시
- 1단계
- 개발 기술 환경 파악
- OS (운영체제) : 시스템의 자원을 효율적으로 관리하고 사용할 수 있는 환경을 제공
- 식별 고려사항 : 가용성, 성능, 기술지원, 주변기기, 구축비용
- DBMS : 사용자와 DB 사이에서 정보를 생성해 주고, 관리해 주는 소프트웨어
- 종속성과 중복성 문제 해결
- 식별 고려사항 : 가용성, 성능, 기술지원, 상호 호환성, 구축비용
- 웹 애플리케이션 서버 (WAS) : 동적인 컨텐츠를 처리하기 위한 미들웨어
- 식별 고려사항 : 가용성, 성능, 기술지원, 구축비용
- 오픈 소스
- 소스코드를 공개한 소프트웨어
- 식별 고려사항 : 라이선스 종류, 사용자 수, 기술의 지속 가능성
- OS (운영체제) : 시스템의 자원을 효율적으로 관리하고 사용할 수 있는 환경을 제공
- 요구사항
- 문제 해결을 위해 제공하는 서비스에 대한 설명과 운영되는데 필요한 제약조건
- 기능 요구사항
- 기능이나 수행과 관련된 요구사항
- 데이터 입.출력, 연산, 반드시 수행해야하는 기능 등..
- 비기능 요구사항
- 품질과 제약사항에 관련된 요구사항
- 성능, 인터페이스, 품질 등..
- 사용자 요구사항
- 사용자 관점에서 본 시스템이 제공해야 할 요구사항
- 시스템 요구사항
- 개발자 관점에서 본 시스템 전체가 제공해야 할 요구사항
- 요구사항 개발 프로세스
- 도출 → 분석 → 명세 → 검증
- 요구사항 도출
- 요구사항 수집 방법을 식별하고 이해하는 과정
- 이해관계자 식별
- 브레인스토밍, 프로토타이핑, 유스케이스 등..
- 요구사항 분석
- 요구사항 중 명확하지않거나 모호하여 이해되지 않는 부분을 발견하고 걸러내기 위한 과정
- 자료 흐름도 (DFD), 자료 사전 (DD) 등..
- 요구사항 명세
- 분석된 요구사항을 바탕으로 모델을 작성하고 문서화
- 기능 요구사항은 빠짐없이 기술, 비기능 요구사항은 필요한 것만 기술
- 소단위 명세서 (Mini Spec)
- 명세 기법
- 정형 명세 기법
- 수학적 원리 기반, 일관성 높음, 이해하기 어려움
- Z, VDM, Petri-net 등 ..
- 비정형 명세 기법
- 상태/기능/객체 중심, 자연어 기반, 일관성 떨어짐, 이해하기 쉬움
- ER모델링, FSM, SADT 등..
- 정형 명세 기법
- 요구사항 검증
- 요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 활동
- 형상관리 수행
- 요구 공학
- 요구사항을 정의, 분석, 관리하는 프로세스를 연구하는 학문
- 요구사항 분석
- 사용자의 요구사항을 이해하고 문서화
- 구조적 분석 기법
- 자료 흐름과 처리 중심
- 하향식 방법
- 중복 배제 가능
- 자료 흐름도 (DFD)
- 자료의 흐름 및 변환과정과 기능을 도형중심으로 기술
- 자료 흐름 그래프 또는 버블차트
- 기호
- 프로세스 : 시스템의 처리 과정. ⃝
- 자료 흐름 : →
- 자료 저장소 : =
- 단말 : 시스템과 교신하는 외부개체. ▭
- 자료 사전 (DD)
- 자료 흐름도의 자료를 자세히 정의하고 기록
- 메타 데이터
- 기호
- 정의 : =
- 연결 : +
- 생략 : ()
- 선택 : []
- 반복 : {}
- 주석 : **
- 요구사항 분석용 CASE (자동화 도구)
- 요구사항을 자동으로 분석하고 명세서를 기술
- 종류
- SADT : SoftTech사에서 개발, 블록 다이어그램 채택
- SREM : TRW사가 새발, 실시간 처리 시스템에서 사용
- PSL/PSA : 미시간 대학에서 개발
- TAGS : 자동 접근 방법
- HIPO (Hierarchy Input Process Output)
- 시스템의 처리 과정인 입력, 처리, 출력의 기능을 표현
- 하향식 소프트웨어 개발을 위한 문서화 도구
- 종류
- 가시적 도표
- 총체적 도표
- 세부적 도표
- UML (Unified Modeling Language)
- 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
- OMG에서 표준으로 지정
- 구성 요소
- 사물
- 다이어그램 안에서 관계가 형성될 수 있는 대상
- 종류
- 구조 사물 : 개념적, 물리적 요소 표현
- 행동 사물 : 행위를 표현
- 그룹 사물 : 요소들을 그룹으로 묶어서 표현
- 주해 사물 : 부가적인 설명이나 제약조건
- 관계
- 사물사이의 연관성을 표현
- 연관 관계 (Association)
- 사물이 서로 관련되어 있는 관계
- 화살표로 표현
- 다중도 표기
- 집합 관계 (Aggregation)
- 한 사물이 다른 사물에 포함되어 있는 관계
- 서로 독립적
- 포함하는 쪽으로 속이 빈 마름모
- 포함 관계 (Composition)
- 포함하는 사물의 변화가 포함되는 사물에게 영향
- 독립될 수 없음
- 포함하는 쪽으로 속이 채워진 마름모
- 일반화 관계 (Generalization)
- 다른 사물에 비해 더 일반적이거나 구체적인 관계
- 일반적인 개념을 상위, 구체적인 개념을 하위
- 상위 방향으로 속이 빈 화살표
- 의존 관계 (Dependency)
- 영향을 주는 짧은 시간 동안만 연관을 유지
- 영향을 받는 사물 쪽으로 점선 화살표
- 실체화 관계 (Realization)
- 할 수 있거나 해야하는 기능, 서로를 그룹화
- 기능쪽으로 속이 빈 점선 화살표
- 사물
- 다이어그램
- 사물간의 관계를 도형으로 표현
- 구조적 다이어그램 (정적 모델링에 사용)
- 클래스 다이어그램 : 클래스 사이의 관계를 표현
- 객체 다이어그램 : 클래스 속에 속한 객체, 즉 인스턴스 들의 관계를 표현
- 컴포넌트 다이어그램 : 컴포넌트 간의 관계나 인터페이스를 표현, 구현단계에서 사용
- 배치 다이어그램 : 물리적 요소들의 위치를 표현, 구현단계에서 사용
- 복합체 구조 다이어그램
- 패키지 다이어그램 : 요소들을 그룹화 한 패키지들의 관계를 표현
- 행위 다이어그램 (동적 모델링에 사용)
- 유스케이스 다이어그램 : 사용자의 요구를 분석, 액터와 유스케이스로 구성
- 시퀀스 다이어그램 : 객체들이 주고받는 메세지를 시간의 흐름에 따라 표현
- 커뮤니케이션 다이어그램 : 주고받는 메세지와 객체들간의 연관관계도 표현
- 상태 다이어그램 : 클래스의 상태 변화 혹은 어떻게 변하는지 표현
- 활동 다이어그램 : 처리의 흐름을 순서에 따라 표현
- 상호작용 개요 다이어그램
- 타이밍 다이어그램
- 스테레오 타입
- 기본기능 외 추가적인 기능 표현
- 길러멧 (<< >>) 으로 기술
- 형태 : include(포함), extends(확장), interface, exception, constructor
- 기능 모델링
- 시스템이 갖춰야 할 기능을 표현
- 유스케이스 다이어그램
- 수행할 수 있는 기능을 사용자 관점에서 표현
- 외부요소와 시스템 간의 상호작용 확인 가능
- 구성 요소
- 시스템
- 액터 : 시스템과 상호작용하는 외부 시스템
- 유스케이스 : 사용자의 관점에서 제공하는 서비스나 기능 표현
- 관계 : 포함, 확장, 일반화 관계
- 활동 (Activity Diagram)
- 사용자의 관점에서 기능을 처리흐름에 따라 순서대로 표현
- 자료흐름도와 유사
- 구성요소
- 액션/액티비티 : 액션 = 분해할 수 없는 단일 작업, 액티비티 = 분해할 수 있는 작업
- 시작 노드, 종료 노드
- 조건 노드
- 병합 노드
- 포크 노드
- 조인 노드
- 스윔 레인 : 액티비티 수행을 담당하는 주체를 구분
- 정적 모델링
- 논리적인 구조 표현
- 객체들을 클래스로 추상화하여 표현
- 클래스 다이어그램
- 클래스가 가지는 속성, 클래스 사이의 관계 표현
- 구성요소
- 클래스 : 객체들이 갖는 속성과 오퍼레이션을 표현
- 제약조건
- 관계
- 연관 클래스
- 두 클래스에 추가적으로 표현해야 할 속성이나 오퍼레이션이 있는 경우 생성하는 클래스
- 동적 모델링
- 상태 변화 과정과, 과정에서 발생하는 상호작용을 표현
- 시퀀스 다이어그램
- 객체들이 메세지를 주고받으며 상호작용 하는 과정을 그림으로 표현
- 시간의 흐름에 따라 표현
- 구성 요소
- 액터 : 외부 요소
- 객체
- 생명선 : 객체가 메모리에 존재하는 기간
- 실행상자 : 객체가 메시지를 주고받으며 구동되고 있음을 표현
- 메시지 : 객체가 상호작용을 위해 주고받는 메시지
- 객체 소멸
- 프레임
- 커뮤니케이션 다이어그램
- 메시지를 주고받으며 상호작용하는 과정 뿐 아니라 객체들 간의 연관을 표현
- 관계가 제대로 표시되었는지 점검하는 용도로도 사용
- 구성요소
- 액터
- 객체
- 링크 : 객체들 간의 관계를 표현
- 메시지
- 상태 다이어그램
- 이벤트에 의한 객체들의 상태변화를 표현
- 객체가 갖는 속성 값의 변화 의미
- 구성요소
- 상태
- 시작 상태, 종료 상태
- 상태 전환
- 이벤트 : 상태에 변화를 주는 현상
- 프레임
- 패키지 다이어그램
- 요소들을 그룹화 한 패키지 간의 의존관계 표현
- 주요 요소 간의 종속성 파악에 용이
- 구성요소
- 패키지
- 객체
- 의존관계
'정보처리기사_실기' 카테고리의 다른 글
정보처리기사 70 ~ 84 (개발 환경 구축 ~ 패키지 소프트웨어) (0) | 2022.06.23 |
---|---|
정보처리기사 64 ~ 69 (통합 구현 ~ 연계 테스트) (0) | 2022.06.23 |
정보처리기사 47 ~ 63 (시스템 카탈로그 ~ 정렬) (0) | 2022.06.21 |
정보처리기사 31 ~ 46 (데이터 전환 ~ 반정규화) (0) | 2022.06.20 |
정보처리기사 20 ~ 30 (소프트웨어 개발 방법론 ~ 개발 프레임워크) (0) | 2022.06.18 |