Search
Duplicate

1-2. 요구사항 확인

생성일
2023/06/28 06:44
태그
요구사항 확인

1-2. 요구사항 확인

20. 소프트웨어 개발 방법론

소프트웨어 개발, 유지보수 등에 필요한 여러가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표현한 것
목적 - 소프트웨어의 생산성과 품질 향상
주요 소프트웨어 개발 방법론
구조적 방법론
정보공학 방법론
객체지향 방법론
컴포넌트 기반(CBD) 방법론
제품 계열 방법론
애자일 방법론

구조적 방법론

정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리(Process) 중심의 방법론
60년대까지 가장 많이 사용!
분할과 정복(Divide and Conquer) 원리 적용

정보공학 방법론

정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료(Data) 중심의 방법론
정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합

객체지향 방법론

현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 소프트웨어를 구현하는 방법론
구성요소
객체(Object) : 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 소프트웨어 모듈
클래스(Class) : 공통된 속성과 연산을 갖는 객체의 집합으로 객체의 일반적인 타입
메시지(Message) : 객체들 간에 상호작용을 하는 데 사용되는 수단으로, 객체에게 어떤 행위를 하도록 지시하는 명령 또는 요구사항
기본 원칙
캡슐화(Encapsulation) : 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 소프트웨어 모듈
정보 은닉(Information Hiding) : 캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
추상화(Abstraction) : 불필요한 부분을 생략하고, 객체의 속성 중 가장 중요한 것에 중점을 두어 개략화하는 것
상속성(Inferitance) : 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
다형성(Polymorphism) : 메시지에 의해 객체가 연산을 수행하게 될 때, 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

컴포넌트 기반 (CBD) 방법론

기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
컴포넌트의 재사용! → 시간 노력 절약!
확장성 보장, 유지보수 비용 최소화, 생산성 품질 향상

21. SW 공학의 발전적 추세

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

이미 갭라되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
소프트웨어 개발의 품질과 생산성을 높이기 위한 방법
합성 중심(Composition-Based)
즉 블록을 만들어서 끼워 맞춰 소프트웨어를 완성시키는 방법
블록 구성 방법
생성 중심 (Generation-Based)
추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법
패턴 구성 방법

소프트웨어 재공학 (SW Reenineering)

새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지하기 때문에 유지보수의 생산성을 향상을 통해 소프트웨어 위기를 해결하는 방법
기존 소프트웨어의 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킨다.
이점
소프트웨어의 품질 향상, 생산성 증가, 수명 연장, 오류 감소

CASE (Computer Aided Software Engineering)

소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화 하는 것
객체지향 시스템, 구조적 시스템 등 다양한 시스템에서 활용되는 자동화 도구 (CASE Tool)
주요 기능
소프트웨어 생명 주기 전 단계의 연결
다양한 소프트웨어 개발 모형 지원, 그래픽 지원

22. 비용 산정 기법

소프트웨어 비용 산정

너무 높게 사정할 경우 - 예산 낭비, 일의 효율성 저하
너무 낮게 산정할 경우 - 개발자의 부담 가중, 품질 문제 발생 가능성
기법
하향식 비용 산정 기법
상향식 비용 산정 기법

23. 비용 산정 기법 - 하향식

하양식 비용 산정 기법

과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법
전문가 감정 기법, 델파이 기법

전문가 감정 기법

조직 내에 있는 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
가장 편리하고 신속하게 비용 산정 가능
개인적이고 주관적

델파이 기법

전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법

24. 비용 산정 기법 - 상향식

상향식 비용 산정 기법

프로젝트의 세부적인 작업 단위별로 비용을 집계하여 전체 비용을 산정하는 방법
LOC(원시 코드 라인 수) 기법, 개발 단계별 인월수 기법, 수학적 산정 기법

LOC(원시 코드 라인 수) 기법

소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 방법
비관치 : 가장 많이 측정된 코드 라인 수
낙관치 : 가장 적게 측정된 코드 라인 수
기대치 : 측정된 모든 코드 라인 수의 평균
측정 용이, 이해 쉬움
예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용 산정

25. 수학적 산정 기법

상향식 비용 산정 기법
경험적 추정 모형, 실험적 추정 모형
COMOMO 모형, Putnam 모형, 기능점수(FP) 모형

COMOMO 모형

원시 프로그램의 규모인 LOC(원시 코드 라인 수)에 의한 비용 산정 기법
비용 산정 결과는 프로젝트를 완성하는데 필요한 노력(Man-Month)으로 나타낸다.
보헴 (Boehm)에 제안하였다.

Putnam 모형

소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다.
대형 프로젝트의 노력 분포 산정에 이용
개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소

기능 점수(FP) 모형

소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능 점수를 산출하며, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후, 이를 이용해서 비용을 산정하는 기법
총 기능 점수 : 소프트웨어 개발의 규모, 복잡도, 난이도 등을 하나의 수치로 집약시킨 것
알브레히트(Albrecht)가 제안

비용 산정 자동화 추정 도구

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

26. 프로젝트 일정 계획

PERT (프로그램 평가 및 검토 기술)

프로젝트에 필요한 전체 작업의 상호관계를 표시하는 네트워크
각 직업별로 다음과 같이 단계를 나누어 종료시기를 결정한다.
낙관적인 경우
가능성이 있는 경우
비관적인 경우
개발 경험이 없어 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용
노드와 간선으로 구성
결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있다.

CPM (임계 경로 기법)

프로젝트 완성에 필요한 작업을 나열하고, 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
노드와 간선으로 구성
노드 : 작업
간선 : 작업 사이의 전후 의존관계

간트 차트

프로젝트의 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
수평 막대의 길이는 각 작업의 기간을 나타낸다.

28. 소프트웨어 개발 표준

소프트웨어 개발 표준

소프트웨어 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준
주요 소프트웨어 개발 표준
ISO/IEC 12207
CMMI (능력 성숙도 통합 모델)
SPICE (소프트웨어 처리 개선 및 능력 평가 기준)

ISO/IECC 12207

ISO에서 만든 표준 소프트웨어 생명 주기 프로세스

CMMI (Capability Maturity Model Integration)

소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
미국 소프트웨어 공학연구소에서 개발
초기, 관리, 정의, 정략적 관리, 최적화

SPICE (SW Process Improvement and Capability dEtermination)

정보 시스템 분야에서 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
공식 명칭 : ISO/IEC 15504

29. 소프트웨어 개발 방법론 테일러링

소프트웨어 개발 방법론 테일러링

프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등 수정 및 보완하는 작업

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

소프트웨어 개발에 공통적으로 사용되는 구성요소와 아키텍쳐를 일반화하여 손쉽게 구현할 수 있도록 여러가지 기능들을 제공해주는 반 제품 형태의 소프트웨어 시스템
종류
스프링 프레임워크
전자정부 프레임워크
닷넷 프레임워크

스프링 프레임워크

자바 플랫폼을 위한 오픈소스 경량형 애플리케이션 프레임워크
동적인 웹 사이트의 개발을 위해 다양한 서비스를 제공한다.
전자정부 표준 프레임워크의 기반 기술로 사용되고 있다.

전자정부 프레임워크

대한민국 공공부문 정보화 사업 시 효율적인 정보 시스템의 구축을 지원하기 위해 필요한 기능 및 아키텍쳐를 제공하는 프레임워크 이다.
개발 프레임워크의 표준 정립으로 응용 소프트웨어의 표준화, 품질 및 재사용성의 향상을 목적으로 한다.
오픈소스 기반의 범용화를 이룰 수 있다.
공개된 기술을 활용함으로써 특정 업체의 종속성을 배제하고, 사업별 공통 컴포넌트의 중복 개발을 방지한다.

닷넷 프레임워크

Windows 프로그램의 개발 및 실행 환경을 제공하는 프레임워크
마이크로소프트사에서 통합 인터넷 전략을 위해 개발하였다.
코드 실행을 관리하는 CLR(Common Language Runtime, 공용언어런타임)이라는 이름의 가상머신 상에서 작동한다.

소프트웨어 개발 프레임워크의 특성

모듈화 (Modularity)
프레임워크는 캡슐화를 통해 모듈화를 강화하고, 설계 및 구현의 변경에 따른 영향을 최소화 함으로써 소프트웨어의 품질을 향상시킨다.
프레임워크는 개발 표준에 의한 모듈화로 인해 유지 보수가 용이하다.
재사용성 (Reusablility)
프레임워크는 재사용 가능한 모듈들을 제공함으로써 예산절감, 생산성 향상, 품질 보증이 가능
확장성 (Extensibility)
프레임워크는 다형성(Polymorphism)을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능하다.
제어의 역흐름 (Inversion of Control)
개발자가 관리하고 통제해야하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킴.

ref)