소프트웨어개발방법론
소프트웨어 개발과정
요구사항분석 -> 설계 -> 구현 -> 테스팅 -> 유지보수
소프트웨어개발 생명주기모델
- 소프트웨어를 어떻게 개발할 것인가에 대한 전반적이고 전체적인 큰 흐름
<폭포수모델>
- 앞단계가 완료될 때까지 대기상태
- 완성된 모습을 후반부가 되기 전에는 볼 수 없다.
- 고객이 원하는 모습이 아니라면 수정하기 어렵고 다시 앞단계로 돌아가서 처음부터 진행하게 된다.
- 수정이 진행되게 되면 비용이 크게 증가한다.
<원형모델>
- 점진적으로 시스테 개발해 나가는 방법
- 프로토타입 즉, 원형을 가능한 한 빨리 개발한 후 고객과 검증 및 확인을 받아 진행한다.
- 아파트의 모델하우스와 비슷한 개념
<나선형 모델>
- 고비용의 시스템 개발이나 큰 시스템 구축 시 효과적이다.
- 프로젝트 수행 시 발생하는 위협을 최소화하려는 목적
- 개발자가 위험을 정학하게 분석하지 못한다면 심각한 문제를 발생시킨다.
※ 소프트웨어를 어떻게 개발할 것인가에 대한 전체적인 큰 흐름과 더불어 각 단계에서의 방법과 활동을 포함하며 보다 상세하고 구체적인 프로세스들의 집합을 통해 소프트웨어개발의 프로세스의 집합을 구성한다.
소프트웨어개발 구조적 분석
- 효율적인 시스템분석 명세서를 작성하기 위한 방법
- 도형중심의 분석도구를 이용하여 사용자 요구사항을 파악하고 문서화하는 체계적인 분석기법
- 사용자 요구사항을 정확하게 작성할 수 있다.
- 자료흐름도 -> 자료사전 -> 소단위명세서
자료흐름도
자료사전
= - 자료항목을 정의
* - 복합적인 자료요소를 구성
( 생략 ) - 생략
[ 선택 ] - 선택
{ 반복 } - 반복
** - 주석
| or : - 대체항목을 나열
※ 시험에 자주 나오는 기호며 반드시 외울 것!
소단위명세서
- 자료흐름도에 나타난 모든 최소단위의 처리에 대해 자료흐름이 변환되는 절차 또는 논리적인 활동을 기술하는 도구
- 구조적 언어 or 의사결정표 or 의사결정도
(Agile) 애자일방법론
- 2001년 애자일 연합결성
- 가볍지만 충분하게 개발함
- 프로세스와 도구, 문서화, 고객과의 협상에서 개인과의 상호작용, 제대로 동작하는 소프트웨어의 개발에 집중, 고객과의 협력이 추가된 개발방법론이다.
(Agile) 애자일방법론 유형
- XP(eXtreme Programming) - 의사소통개선과 즉각적인 피드백, 존중, 용기, 단순성, 의사소통, 피드백
- 스크럼(SCRUM) - 프로젝트 관리를 위한 상호. 점진적 개발방법론, XP와 달리 진행체계 수립, 역활, 정의에 중점, 폭포수모델이나 프로토타입과 같은 원형모델과 달린 모든 소프트웨어 라이프사이클을 담지 않는다. 존중, 용기, 확약, 전념, 정직
- 린(LEAN) - 도요타사의 대표적인 생산방식, 인력, 생산, 설비 등을 필요한 만큼만 유지하면서 생산효율을 극대화하는 방식, 전적으로 고객관점
XP(eXtreme Programming)
- 스토리 - 요구사항(고객으로부터 전달받음)
- 스토리추정 - 스토리를 보고 기간과 강도를 결정(개발자의 판단)
- 릴리즈 - 고객의 스토리를 기반한 스토리 추정을 통해 고객에게 구현된 제품을 배포
- 반복 - 릴리즈 안에서 반복되는 작업
- 드라이버 - 코드 작성자
- 파트너 - 드라이버를 도와 조언해 주는 사람
XP(eXtreme Programming) 12가지 실천사항
- 계획게임
- 짝프로그래밍 (5분씩 릴레이 프로그래밍작업)
- 짧은 릴리즈 주기
- 코드 공동 소유
- 메타포
- 지속적인 통합
- 단순 설계
- 테스트우선개발
- 주당 40시간 작업
- 고객의 참여 (고객의 상주)
- 리팩토링
- 코딩표준
객체지향 방법론
- 소프트웨어 개발과정은 기존 시스템을 분석하고 이를 표준화된 새로운 시스템환경으로 전환하는데 초점을 맞춤
- 소프트웨어 개발 진행 시 작은 단위의 모듈을 구성하여 만들고 추루 이를 재사용하여 소프트웨어의 효율성을 높이는 생각에서부터 객체지향 방법론이 발전하게 됨
- 여러 객체지향방법론이 난립하게 되고 표기법만이라고 통일하자는 제안에 의해 UML을 사용하게 됨
- 객체, 클래스, 캡슐화, 데이터은닉, 상속, 조합, 다형성의 개념
객체
- 업무수행을 위한 대상이 되는 사람, 장소, 사물, 사건 및 개념
클래스
- 공통 속성과 행위를 가진 객체를 묶어 추상화한 개념
캡슐화
- 구현부가 외부에 노출되지 않도록 싸인 상태
데이터은닉
- 각각의 객체가 자신의 속성과 메소드를 다른 객체에게 숨기고 있는 것
상속
- 클래스가 가진 속성과 행위를 객체가 물려받는 것
조합
- 다른 객체를 사용하여 객체를 구성하는 것보다 복잡한 클래스를 만드는 일종의 조립
다형성
- 같은 메소드에 다르게 반응하는 것 (오버로딩)
SOLID (객체지향설계)
컴퓨터 프로그래밍에서 SOLID한 로버트 마틴이 명명한 객체지향 프로그램 및 설계의 5가지 기본원칙을 마이클 패더스가 두문자어 기억술로 소개한 것
럼바우의 OMT
- 클래스와 외부 명세를 정의함
- 객체모델링(객체다이어그램), 동적모델링(상태다이어그랭), 기능모델링(자료흐름도)로 분류
- 소프트웨어 생명주기 지원 및 데이터베이스 구조화 특징
Booch 방법론
- 시스템 형성구조를 모형화하는 DFD를 사용
- 클래스다이어그램, 객체다이어그램, 모듈다이어그램, 프로세스다이어그램
- 실시간처리에 유용함
- 설계를 위한 문서화기법을 강조
- 분석단계가 취약
Cood / Yourdon 방법론
- 객체지향 특징을 가장 충족시키는 방법론
- 객체지향 CASE TOOL을 지원
sholer / Mellor 방법론
- 하나의 시스템을 몇개의 영역으로 분할하여 서브시스템을 구성함
- 정보모델링, 상태모델링, 처리모델링
- 시스템의 분해성이 우수
- 대형시스템개발에 유리
댓글 영역