티스토리 뷰

 

소프트웨어 생명주기

소프트웨어를 개발 하기 위한 설계, 운용, 유지보수등의 과정을 각 단계별로 나눈것

 

소프트웨어 생명 주기 모델 종류

폭포수 모형
Waterfall Model
각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여 승인 과정을 거친 후에 다음단계를 진행하는 개발방법론
프로토타입 모형
prototype Model
실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측하는 모형
나선형모형= 점진적 모형
Sprial Model
나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 모형
보헴이 제안
(4가지 주요활동) 계획수립위험분석개발 및 검증 고객평가
애자일 모형
Agile Model
요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형
(종류) 스크럼, XP, 칸반, Lean, 기능중심개발(FDD)

 

소프트웨어 공학

소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문

 

스크럼(Scrum)

팀이 중심이 되어 개발의 효율성을 높이는 기법

제품 책임자 PO
product Owner
요구 사항이 담긴 백로그를 작성하는 주체
이해 관계자들 중 개발될 제품에 대한 이해도가 높고,
요구사항을 책임지고 의사를 결정할 사람으로 선정
스크럼 마스터 SM
Scrum Master
스크럼 팀이 스크럼을 잘 수행할 수 있도록 가이드 역할을 수행함
개발팀 DTDevelopment Team 제품 책임자와 스크럼 마스터를 제외한 모든 팀원으로 제품 개발을 수행함

 

스프린트계획회의 스프린트 일일스크럼회의스프린트 검토회의 스프린트 회고

 

XP (eXterme Programming)

수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성 향상시키는 방법

 

XP 5대 핵심가치 (, , , , )

의사소통 Communication

단순성 Simplicity

용기 Courage

존중 Respect

피드백 FeedBack

 

(xp개발프로세스) 릴리즈 계획수립 주기 승인검사 소규모릴리즈

소프트웨어 공학에서 리팩토링 목적

프로그램을 쉽게 이해하고 수정하여 빠르게 개발 할 수 있도록 하기위함

 

xp주요 실천방법

Pair Programming
짝 프로그래밍
다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성함
Collective Ownership
공동 코드 소유
개발 코드에 대한 권한과 책임을 공동으로 소유함
Test-Driven Development
테스트 주도 개발
- 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성
하므로 자신이 무엇을 해야할지를 정확히 파악함
- 테스트가 지속적으로 진행 될 수 있도록 자동화된 테스팅 도구
(구조, 프레임워크)를 사용함
Whole Team
전체 팀
개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가져야 함
Continuous Integration
계속적인 통합
모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리 될 때마다 지속적으로 통합됨
Refactoring
리팩토링
프로그램 기능의 변경없이 시스템을 재구성함
목적 : 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발할 수 있도록 하기 위함.
Small Releases
소규모 릴리즈
릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응할 수 있음.

 

서버 이중화(Replication)

운용서버에 장애가 발생 했을 때 대기 서버에서 서비스를 계속 유지 할 수 있도록

운용 서버의 자료 변경이 대기 서버에도 동일하게 복제되도록 관리하는 것을 의미

 

운영체제(OS, Operationg System)

컴퓨터 시스템의 자원을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 소프트웨어

 

데이터베이스 관리시스템 (DBMS DataBase Management System)

사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해 주는 소프트웨어

 

웹 애프리케이선 서버 ( WAS web Application Server)

동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어

 

오픈소스(Open Source)

누구나 별다른 제한없이 사용할 수 있도록 소스 코드를 공개한 소프트웨어

 

요구사항

소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약조건

 

 

요구사항

기능 요구사항 기능이나 수행과 관련된 요구사항
비기능 요구사항 품질이나 제약 사항과 관련된 요구사항
사용자 요구사항 사용자 관점에서 본 시스템이 제공해야 할 요구사항
시스템 요구사항 개발자 관점에서 본 시스템 전체가 사용자와 다른 시스템에
제공해야할 요구사항

 

요구사항 개발 프로세스(도분명확)

도출 분석 명세 확인

 

요구사항 도출

시스템 개발에 관련된 사람들이 서로 의견을 교환하여 요구사항을 어떻게 수집할 것인지를 식별하고 이해하는 과정

소프트웨어 개발 생명주기(SDLC) 동안 지속적으로 반복된다.

 

요구사항 분석

개발 대상에 대한 사용자의 요구사항을 이해하고 문서화 하는 활동

 

요구사항 명세

분석된 요구사항을 바탕으로 모델을 작성하고 문서화 하는것

정형 명세기법 : 수학적 기호, 정형화된 표기법. 종류(VDM, Z, Petri-net, CSP)

비정형 명세기법 : 일반 명사, 동사 등의 자연어를 기반으로 서술 또는 다이어그램으로 작성. 종류(FSM, Decision Table, ER모델링, State Chart(SADT) .

 

요구사항 확인(요구사항 검증)

요구사항 명세서가 정확하고 완전하게 작성되었는지 검토하는 활동

 

요구사항 공학

요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문

 

자료 흐름도 DFD

자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법

 

자료흐름도 4가지 구성요소

프로세스
(Process)
자료를 변환 시키는 시스템의 한 부분을 나타내며 처리, 기능, 변환, 버블이라고도 함.
자료 흐름
(Data Flow)
자료의 이동(흐름)이나 연관 관계를 나타냄
자료 저장소
(Data Store)
시스템에서의 자료 저장소(파일, 데이터베이스)를 나타냄
단말
(Terminator)
시스템과 교신하는 외부 개체로 입력 데이터가 만들어지고 출력 데이터를 받음.

 

구조적 분석 기법도구

자료흐름도 DFD / 자료사전 DD / 소단위 명세서 / 개체관계도 ERD / 상태 전이도 STD / 제어명세서

자료 사전(Data Dictionary)

자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것.

= 자료정의 / + 자료 연결 / () 자료의 생략 / [] 자료의 선택 / {} 자료의 반복

 

SADT

SoftTech사에서 개발한 것으로, 구조적 요구 분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구

 

HIPO chart 종류

가시적 도표 / 총체적 도표 / 세부적도표

 

UML

시스템 개발 과정에서 의사소통이 원활하게 이루어지도록 표준화한대표적인 객체지향 모델링 언어

 

UML 구성요소

사물 Things / 관계 Relationships / 다이어그램 Diagram

 

UML - 사물 Things

구조 사물 시스템의 개념적, 물리적 요소를 표현
행동 사물 시간과 공간에 따른 요소들의 행위를 표현
그룹 사물 요소들을 그룹으로 묶어서 표현
주해 사물 부가적인 설명이나 제약조건 등을 표현

 

UML - 관계 Relationships

사물과 사물 사이의 연관성을 표현하는 것

연관 관계
Association
2개 이상의 사물이 서로 관련되어 있는 관계 선생님 ━━ 학생
집합 관계
Aggregation
하나의 사물이 다른 사물에 포함되어있는 관계 컴퓨터 ◇━━ 프린터
포함 관계
Composition
포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계 ◆━━
일반화 관계
Generalization
하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인관계 아메리
카노
━━▷ 커피
의존 관계
Dependency
서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계 등급 ----- 할인율
실체화 관계
Realization
사물이 할 수 있거나 해야하는 기능으로 서로를 그룹화 할 수 있는 관계 ----- 날수
있다

 

UML - 다이어그램 Diagram

사물과 관계를 도형으로 표현한 것

 

구조적 다이어그램 종류

클래스 다이어그램
Class
클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현함
객체 다이어그램
Object
클래스에 속한 사물(객체), 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현함
럼바우 객체지향 분석기법에서 객체 모델링에 활용
컴포넌트 다이어그램
Component
실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트간의 인터페이스를 표현
구현 단계에 사용
배치 다이어그램
Deployment
결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
구현 단계에 사용
복합체 구조 다이어그램
Composite
클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현함
패키지 다이어그램
Pacage
유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현함

 

행위 다이어 그램의 종류

유스케이스 다이어그램
Use Case
사용자의 요구를 분석하는 것으로, 기능 모델링 작업에 사용
사용자(Actor)와 사용 사례(Use Case)로 구성됨
시퀀스 다이어그램
Sequence
상호 작용하는 시스템이나 객체들이 주고 받는 메시지를 표현
(구성요소) 액터, 객체, 생명선, 실행상자, 메시지, 객체소멸, 프레임
커뮤니케이션 다이어그램
Communication
동작에 참여하는 객체들이 주고 받는 메시지와 객체들 간의 연관 관계를 표현
상태 다이어그램
State
하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는 지를 표현.
럼바우 객체지향 분석기법동적리모델링에 활용
활동 다이어그램
Activity
시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현함.
상호작용 개요 다이어그램
Interaction Overview
상호작용 다이어그램 간의 제어 흐름을 표현
타이밍 다이어그램
Timing
객체 상태 변화와 시간 제약을 명시적으로 표현

 

스테레오 타입 << >>

UML에서 표현하는 기본 기능 외의 추가적인 기능을 표현하는 것

<<include>> 연결된 다른 UML 요소에 대해 포함관계에 있는 경우
<<extends>> 연결된 다른 UML 요소에 대해 확장관계에 있는 경우
<<interface>> 인터페이스를 정의하는 경우
<<exception>> 예외를 정의하는 경우
<<constructor>> 생성자 역할을 수행하는 경우

 

유스케이스 다이어그램 구성요소

시스템(System)/시스템 범위(System Scope), 액터(Actor) , 유스케이스(Use Case),

관계(Relationship)

 

소프트웨어 재사용(Software Reuse)

이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것.

합성 중심 전자칩과 같은 소프트웨어 부품, 즉 블록을 만들어서 끼어 맞춰
소프트웨어를 완성시키는 방법. 블록 구성 방법이라고도 함
생성 중심 추상화 형태로 써진 명세를 구체화해 프로그램을 만드는 방법으로,
패턴 구성 방법이라고도 함.

 

소프트웨어 재공학

기존시스템을 이용해 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것.

 

CASE(Computer Aided Software Engineering)

소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용해 자동화 하는 것.

 

LOC 기법 ★★★

- 노력(인월) = 개발 기간 x 투입 인원

= LOC / 1인당 월평균 생산 코드 라인수

- 개발 비용 = 노력(인월) X 단위 비용(1인당 월 평균 인건비)

- 개발 기간 = 노력(인월) / 투입 인원

- 생산성 = LOC / 노력(인월)

 

cocomo 소프트웨어 개발 모형 ★★

조직형
Organic Mode
5만 라인(50KDSI)이하의 소프트웨어를 개발하는 유형. 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합
반분리형
Semi-Detached Mode
조직형과 내장형의 중간형으로 30(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형. 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합
내장형
Embeded Mode
30(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형. 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합

 

수학적 산정 기법 ★★

COCOMO 보헴이 제안
LOC(원시 코드 라인 수)에 의한 비용 산정 기법
Putnam 소프트웨어 생명주기의 전 과정 동안에 사용될 노력의 분포를 가정해주는 모형. 생명 주기 예측 모형
Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
기능 점수(FP) 알브레히트(Albrecht)가 제안
소프트웨어의 기능을 증대시키는 요인 별로 가중치를 부여하고, 요인별 가중치를 합산해 총 기능 점수를 산출해 기능 점수를 구한다.

 

비용 산정 자동화 추정 도구 ★★

SLIM Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 한 자동화 추정 도구
ESTIMACS 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로해 개발된 자동화 추정 도구

프로젝트 일정 계획 ★★★

PERT
(프로그램 평가 및 검토 기술)
프로젝트에 필요한 전체작업의 상호 관계를 표시하는 네트워크
CPM
(임계 경로 기법)
프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
간트 차트 프로젝트의 각 작업들이 언제 시작하고, 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용해 표시하는 프로젝트 일정표.

 

소프트웨어 개발 표준 ★★

CMMI
(능력성숙도통합모델)
소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
SPICE
(Software Process Improvement and Capability dEtermination)
소프트웨어 개발 표준 중 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준으로, 공식 명칭은 ISO/IEC 15504
불완전수행관리확립예측최적화

 

소프트웨어 개발 프레임워크

스프링 프레임워크 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
전자정부 프레임워크 대한 민국의 공공부분 정보화 사업시 효율적인 정보 시스템의 구축을 지원하기 위해 필요한 기능 및 아키텍처를 제공하는 프레임워크
닷넷 프레임워크 Window 프로그램의 개발 및 실행 환경을 제공하는 프레임워크

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함