[CISA 이론 정리 - 3장] 06 대안적 개발 방법론 (1/2)
- CISA/3. IS 획득, 개발 및 관리
- 2017. 9. 5. 11:45
1. 객체 지향 시스템 개발(OOSD: Object Oriented System Development)
(1) 의의
① 프로그램을 객체(object) 단위로 조직하여 개발하고 유지보수한다.
② 객체는 모듈처럼 전체 프로그램에 속해 있는 한 부분이다.
③ 하지만 모듈과는 달리 독립적으로 기능하며 다른 객체들과도 상호 작용할 수 있다.
④ 이미 개발된 객체는 다른 프로그램에서 재사용할 수 있어서 개발 노력/시간이 절약된다.
(2) 객체(Object)
① 객체는 메소드(기능) 그리고 객체 식별과 기능 수행에 필요한 데이터 속성 값을 포함한다.
② OOSD에서는 프로그램을 일련의 연산 과정이 아니라 객체들 간 상호 작용으로 본다.
③ 마치 현실 세계가 다양한 사물들의 상호 작용인 것과 유사하다.
④ 한편 객체 안에 메소드와 속성을 내장시키는 것을 캡슐화(encapsulation)라고 한다.
⑤ 캡슐화를 하면 객체 내부에서 데이터가 연산되는 과정을 외부에서 알 수 없다.
⑥ 이를 데이터 은닉(data hiding)이라 하며, 데이터 은닉은 프로그램의 보안을 향상한다.
(3) 클래스 및 추상화
① OOSD에서는 프로그램 분석/설계 시 속성을 공유하는 객체 집합인 클래스를 정의한다.
② 클래스는 수학에서 집합에 해당하고 객체는 원소에 해당한다.
③ 클래스를 정의할 때는 핵심적 공통 속성만 도출하는 과정인 추상화(abstraction)를 한다.
④ 추상화를 할 때는 객체가 가져야 할 최소한의 속성만 골라낸다.
⑤ 클래스는 현실 세계에서 개별 사물들을 일반화하여 식별하는 것과 유사한 개념이다.
예) 직원들은 직급(이사/부장/과장/대리/사원)은 달라도 임직원으로 일반화할 수 있다.
(4) 상속(Inheritance)
① 한편 여러 클래스는 계층 구조를 띠고 있다.
② 다시 말해 상위 클래스(super-class)와 하위 클래스(sub-class) 관계를 가진다.
③ 이때 하위 클래스는 상위 클래스의 속성과 메소드를 상속한다.
2. 속성 응용 개발(RAD: Rapid Application Development)
(1) 의의
① RAD는 전략적으로 중요하고 기능이 분명한 시스템을 신속하게 개발하는 것이 목표이다.
② 그러면서도 낮은 비용과 높은 품질을 유지하는 것을 지향한다.
③ 이를 위해 생산성 높고 신속한 방식으로 개발 과정을 진행한다.
④ RAD는 요구 사항이 방대한 대규모 시스템을 개발하는 데는 적절하지 않는다.
(2) CASE 도구, SWAT 팀, 중앙 저장소(Repository)
① RAD에서는 잘 훈련되고 자동화된 개발 도구(CASE 도구) 사용에 능숙한 개발팀을 구성하는데 이 팀을 SWAT(Specialists with Advanced Tools) 팀이라고도 한다.
② CASE 도구(Computer Assisted Software Engineering tools)는 진화적 프로토타이핑, 산출물 공유, 자동 코드 생성 등에 필수적이다.
③ 결과물은 중앙 저장소에 보관 관리하며 재사용이 가능한 요소는 최대한 재사용한다.
(3) JAD, 진화적 프로토타이핑, 타임 박스 기법
① 개발자와 사용자가 분석 및 설계를 위한 워크샵을 공동 수행하고 긴밀하게 공조하는 이른바 JAD(Joint Application Development) 기법을 활용한다.
② 진화적 프로토타이핑을 적용하여 신속하게 도출한 일차 결과물의 품질을 향상해 간다.
③ 하지만 엄격한 시간 제약을 설정하여 일정 지연을 통제하는 기법을 타임 박스(time box) 기법을 사용한다.
(4) RAD의 단계 구성
① RAD는 시스템 개발 수명 주기를 구성하는 단계들이 중첩되고 통합되어 있다.
• 개념 정의 - 시스템이 지원할 기능과 데이터를 정의하고 개발 범위를 확정한다.
• 기능 설계 - 데이터/프로세스 모델 개발과 프로토타핑을 위한 워크샵을 개최한다.
• 개발 - 실제 DB와 시스템을 구축하고 이전 계획을 수립하고 시스템을 설치한다.
• 설치 - 인수 테스트, 훈련, 데이터 변환, 시스템 구현 등을 수행한다.
3. 애자일 개발(Agile Development)
(1) 의의
① 애자일 기법은 RAD처럼 시스템의 핵심 부분부터 신속하게 개발하는 것을 중시한다.
② RAD와의 차이점은 기술 환경 변화에 대한 민첩한 대응을 강조한다는 것이다.
③ 즉 개발 기간 자체의 단축보다는 변화에 대한 민첩한 대응에 초점을 맞춘 접근법이다.
④ 애자일 방법론에는 스크럼, XP, 크리스탈, 적응적 소프트웨어 개발 등이 있다.
(2) 반복적(Iterative) 개발 접근법
① 애자일 개발에서는 위해 반복적 단계 수행을 통해 시스템을 완성해 나간다.
② 서브 프로젝트마다 전체 중에서 가장 핵심적이고 중요한 부분부터 차례로 완성해 나간다.
③ 장기 계획은 개괄적으로 수립하고 단기 계획은 상세하게 수립한다.
④ 또한, 완성된 부분을 반복적으로 검사하여 품질을 향상하는 접근법을 따른다.
(3) 임파워먼트(Empowerment)와 패어 프로그래밍(Pair Programming)
① 프로젝트 관리자는 팀원들에게 권한을 대폭 이양하고 지원적인 역할을 수행한다.
② 팀원들은 2인 1조 방식으로 프로그램을 개발하는 데 이를 페어 프로그래밍이라고 한다.
③ 팀은 숙련도가 높은 팀원들로 비교적 작게 구성하는데 사용자들과 개발자들이 포함된다.
(4) 백로그(Backlog)
① 백로그란 개발해야 할 기능, 요구사항, 기술적 태스크들의 목록이다.
② 백로그는 전체 개발 범위와 매 회차별 개발 대상을 신속하게 파악할 수 있게 돕는다.
③ 회차(Sprint)란 기간 구분 단위로서 회차마다 일정 분량의 개발 범위가 할당된다.
(5) 암묵적 지식과 노하우의 공유
① 팀원들은 같은 장소에서 작업하여 상호 작용과 의사소통을 극대화한다.
② 매일 모든 팀원들이 참여하는 팀 회의를 하는데 회의 시간을 엄격하게 제한한다.
③ 객관화되고 문서화된 지식에 더해 경험을 통해 습득한 암묵적 지식과 노하우를 공유한다.
'CISA > 3. IS 획득, 개발 및 관리' 카테고리의 다른 글
[CISA 이론 정리 - 3장] 07 비지니스 응용 시스템 (0) | 2017.09.05 |
---|---|
[CISA 이론 정리 - 3장] 06 대안적 개발 방법론 (2/2) (0) | 2017.09.05 |
[CISA 이론 정리 - 3장] 05 구조적 방법론 (0) | 2017.09.05 |
[CISA 이론 정리 - 3장] 04 SDLC 모델 및 시스템 유지 보수 (0) | 2017.09.04 |
[CISA 이론 정리 - 3장] 03 전통적 시스템 개발 방법론의 단계 구성 (2/2) (0) | 2017.09.04 |