서브노트

채영 2010. 8. 3. 15:39

□ 소프트웨어의 특성

 - 비가시성(Invisibility) : 구조가 외부에 노출되지 않고 코드에 내재되어 있음(개념적, 무형적)

 - 복잡성(Complexity) : 개발과정 복잡, 정형적 구조가 없이 복잡하고 비규칙적, 비정규적임

 - 변경성(Changeability) : 필요에 따라 항상 수정이 가능한 진화

 - 순응성(Comformity) : 사용자요구, 환경변화에 적절히 변형가능

 - 무형성(Intangible) : 사실 형제가 없으며 FP(기능점수)등으로 유형화 하고자 함

 - 비미모성(Longevity) : 외부의 환경에 의해 마모되지 않고 다만 품질이 나빠질 뿐임

 - 복제성(Duplicability) : 적은 비용(무상)으로 간단하고 쉽게 다양한 경로와 노력으로 복제가 가능

 - 개발(Developed) : 제조(조립)가 아닌 개발(developed not manufactured)

 

□ 소프트웨어 공학의 체계

가. 정의 : 한정된 자원으로 고품질의 소프트웨어를 일정기간 내에 개발

나. 소프트웨어 분석/설계의 원칙

  - 단계적 상세화

  - 분할과 정복

  - 일반화(상속, 재사용)

  - 추상화

  - 정보은닉(Localization), 정보 국지화, 변경영향 국지화)

  - 모듈화(응집도는 강하게, 결함도는 약하게)

다. 분석기법 : 구조적/정보공학/객체지향

라. 방법론

마. 도구 

 

□ SDLC

 

 

 

1  컴포넌트 재사용을 통해 생산성을 향상시키는 CBD 방법론 개요
가 CBD (Component Based Development)방법론의 정의
   재사용 가능한 컴포넌트를 개발 또는 상용컴포넌트를 조합하여 Application개발
   생산성과 품질을 높이고, 시스템 유지보수비용을 최소화하는 개발방법론
나 특징
   -잘 정의된 인터페이스 단위의 조립을 통한 개발
   -아키텍처중심 재사용 개발방법론:기반 Achitecture없인 공용컴포넌트 개발 불가
   -반복점진적 개발프로세스 제공:일련의 반복을 통해 개발위험을 식별하고 제거
2  CBD방법론의 특성
가 CBD 방법론의 절차
   -도메인분석>도메인설계>컴포넌트추출>설계>구현>인증>레파지토리>배포
    어플요구사항>CBD설계>컴포넌트특화>조립=>새로운어플리케이션
   -컴포넌트개발(CD): 업종별, 비즈니스별 재사용 가능한 컴포넌트 개발
   -컴포넌트기반 SW개발(CBSD) : 이미 개발된 컴포넌트를 조립하여 SW 개발
나 CBD방법론의 종류
구분  |RUP         |Catalysis   |마르미III
정의  |대규모 프로젝트의|UML 표기법기반   |한국형 CBD
      |포괄적F/W |CBD방법론   |표준방법론
목적  |계획/범위내고품질|개방적 분산시스템|체계적 컴포넌트 개발,
      |SW개발  |모델링/구축      |관리절차 확립
재사용|SW 컴포넌트 |모든 산출물(F/W) |모든 산출물
                                          |(재사용컴포넌트)
모델링|UML         |UML 기반 다소 변형|UML, PERT/CPM, 간트차트
다 CBD 방법론의 장점
-생산성    :부품 조립을 통해 APP 개발시간 단축 및 개발 생산성 향상
-변경용이성:요구사항 수용에 안정적이고 신속한 변경 가능
-재사용성  :바이너리 기반의 재사용 및 컴포넌트 대체 용이
-관리용이성:독립적인 컴포넌트 단위로 복잡성 최소화
-기술집약성:기술 숙련에 대한 검증, 아키텍처, 프레임워크, 분산 객체 기술 등
3  CBD 방법론의 향후 전망
가 컴포넌트를 넘어 아키텍처 기반의 재사용(MDA,MDD),제품라인(Product line)
   에 의한 재사용으로 발전 예상
나 Business Architecture, SW Architecture 등 영역별 세분화, 전문화 진행(MDA)
다 Web 서비스의 출현 이후 비즈니스 컴포넌트의 진화 예상

객체지향
1. 소프트웨어 확장 및 재사용을 위한 객체지향 방법론
 가 객체지향 방법론의 정의
   -실세계(business)를 Method와 Attribute가 결합된 객체로
    접근하고 UML을 이용한 비주얼 모델링과 의사교환을 하는
    SW개발 방법론
 나 기존 개발방법론과의 비교
    구조적방법론               객체지향방법론
    -프로그램 = 자료구조+함수  -프로그램=객체(자료,함수)+객체(자료,함수)
    -기능중심, 변경파급효과 큼 -객체중심, 객체단위변경
      COBOL, FORTRAN,C          추상화, 캡슐화로 재사용 용이
                                JAVA, C#
2.  객체지향방법론의 특징 및 개발 프로세스
 가.객체지향 방법론의 특징
  1)상속성(일반화):계층구조, 재사용근간, 단일상속, 다중상속
  2)다형성:동일한 메세지에 대해 클래스에 따라 다르게반응하는특징
  3)추상화:공통된 특성을 간략하게 표현한 성질
  4)갭슐화:정보은닉, 접근제어(Private/Protected/public)
 나.객체지향 방법론 개발 프로세스
   -문제정의 =>  객체분석 =>설계   =>      구현   => 테스트
   -요구사항도출 -객체모델링-객체상세화    -객체구현-단일테스트
   -요구사항분석 -동적모델링-동적모델상세화-ORM     -통합테스트
   -UseCase모델링-기능모델링-기능모델상기화
3. 객체지향 기반의 모델링 사례
 가.문제정의단계
   요구사항 도출(인터뷰)            
   -여행포탈로 여행상품 조회, 가입
   -항공사를 통한 비행스케줄조회, 예약
   -보험사을 통한 여행자 보험 조회, 가입
   요구사항 분석(Use Case)
   a->여행상품조회->항공조회->항공사
   a->여행예약->보험조회->보험사
   -Use Case정의서, Prototype 검증, Activity Diagram도출
 나. 분석/설계 모델 단계
   분석모델/개념Class diagram
   설계모델/상세Class diagram
   품질속성반영한 Calss도출
   결합도^, 응집도| 컴포너트 도출

 다. 구현 및 테스트 단계
   1)OS,프로그래밍 언어, Platform, Framework에 맞게 설계모델을
   코드화한다.(Java, C#=>Agile언어:ruby, groovy, python
   2)DB와의 연결은 DAO패턴, EJB의 Entity Bean 또는 ORM
   (Object-RDB Mapping)을 이용하여 구현한다.
   3)테스트는 각 개발단계별 단위테스트와 통합,시스템인수,
   설치테스트를 수행하고 문제점을 개선한다.
4.  객체지향 방법론의 동향과 발전방향
  가.객체지향으로부터 발전, 보완하는 다양한 방법론
   1)XP:Agile방법론의 대표, 커뮤니케이션,단순성,피드백,
     변화수용 등의 가치로 개발중심,사람중심방법론
     소규모,저위험 Project에 적합
   2)AOP:품질속성 요구증대, 공통모듈증대로인한 OOP의 단점보완
   3)MDD:OMG제시개발방법론, 개발단계추상화로 이식성증대
   4)TDD:Test중심의 Coding방법론, XP와 보완적으로 사용
 나. 객체지향의 발전방향
  -분산/개방 컴퓨팅 환경에 최적의 솔루션으로 계속 진화
  -패러다임의 변화로 시장주도, 인간사고방식과 유사
  -CBD, Framework의 부상으로 개발에서 구매.조립으로 변화
  -RDB, ORDB에 대한 매핑ORM표준 마련이 필요하고 숙련된
   Architect 양성 필요

Agile Process
1. 소프트웨어 개발의 적시성 확보를 위한 Agile Process
 가.Agile Process의정의
   -절차보다는 사람이 중심이되어 변화에 유연하고 신속하게 적응하면서
   효율적으로 시스템을 개발 할 수 있는 방법론
 나.Agile Process의 등장배경 및 특징
   -SW개발환경 변화:다양한 요구사항, 짧은 SW수명주기, Time to Market
    절차적 방법론 한계:문서위주, 절차중심, SW적시성 확보제한
   -가변적 요구대응(Adaptive),사람중심(책임감있는 개발자&전향적인고객),반복적
    피드백중심, Early&Frequent Delivery
2. Agile Process의 종류 및 전통적 방법론과 비교
 가.Agile Process의 종류
  -XP:대표적방법론,4가지핵심가치, 12가지 실천항목, 1~3개발주기
  -SCRUM:활동에초점, 스프린트단위개발, 스크럼미팅(매일15분), 3일단위개발
  -DSDM3:3단계 사이클(기능모델,설계화구현,수행),2~6주
  -FDD:5단계프로세스(모델,특성,계획,설계,구축),2주단위
  -Crystal:방법론선정방법제시, Tailoring원칙제공
 나.전통적방법론과의 비교
  구분    |전통적방법론|Agile Process
  관점    |절차와도구  |개인과상호작용
  산출물  |포괄적문서 및 스프트웨어|작동하는소프트웨어
  고객관계|계약과협상    |고객과협력관계
  변화대응|계획에대한대응|변화에효율적대응
3. Agile Process적용시 고려사항 및 전망
 -프로젝트 환경 및 목적에 따라 선택적 적용요구, 소규모 프로젝트
  적용조건:가변적 요구사항, 책임감 있는 개발자, 프로젝트에 전향적인 고객
 -프로젝트정립부족,대형프로젝트 부적합, 감리대응어려움 가이드라인부족
  일부기법, 사상을 선택적 사용에유용, 중소형프로젝트적합, 테스크(Arch/프로토타입수립)적합

*개인과 상호작용이 프로세스와 툴보다 우선이다.
*동작하는 소프트웨어가 광범위한 문서보다 우선한다.
*고객협력이 계약협력보다 우선한다.
*변화에 대응하는 것이 계획을 수행하는 것보다 우선한다.

위험관리 (Risk Management)
1. 프로젝트 위험관리의 개요
가. 위험관리(Risk Management)의 정의
- 프로젝트 수행중의 위험을 식별하고 분석하여 대응방안을 수립하고
실천하는 체계적 활동
나. 위험관리의 목적
- 정상적인 프로젝트 수행환경 조성을 통한 프로젝트 성공 가능성 향상
- 부정적 위험 최소화, 긍정적 위험은 최대화를 통해 성공기회 극대화
- 잠재 위험 발굴 및 관리를 통한 사전예방 및 감지활동
2. 위험관리 절차, 위험요소 및 대응방안
가. 위험관리 절차
절 차|        |내 용
위험관리계획  |관리수준, 형태, 접근방법 등 관리 활동계획
위험식별      |주체,시기,방법,기록 등, 브레인스토밍,Delphi기법, SWOT분석
정성적위험분석|식별된 위험의 분류, 위험평가, 우선순위 결정
정량적위험분석|Project목표(원가/일정) 달성확률결정, 현실적 정량 목표정의
위험대응계획  |Project목표 기회증진, 위협감소 위한 절차와 기술개발
위험대응통제  |프로젝트 전반의 위험감시, 위험식별, 통제, 영향평가
나. 위험요소 및 대응방안
위험요소|대응방안
의사소통|프로젝트계획서에 의사소통채널 및 담당자, 프로세스 명세화
범위변경|법률,규제,제도(의무적반영,사전위험식별), 도메인이해부족(프
로토타입,Validation), 고객요구추가/변경(요구공학, 여유시간)
일정지연|일정버퍼링, 일정단추기법(Crashing, Fast Tracking 등 활용)
제약조건|도메인별 업무규정, 조직, 비용, 인력 관리
기타|    회피(Avoidance), 전가(Transfer), 완화(Mitigate), 수용(Acceptance)
3. 위험대응 계획 시 고려사항
가. 위험은 프로젝트관리영역 전체 상호 연계되어 있으므로 종합적 대응
나. 프로젝트 생명주기 전반에 나타날 수 있음을 인식, 대처방안 수립
다. PM, 위험관리 전문가에게 국한되지 않고, 모든 팀원이 참여수행


리스크 관리, 전사적 정책이 필요
1. 리스크 관리의 중요성
위험의 복잡성 및 상호 의존성
-온라인 Appication, 데이터의 가용성, 복잡한 협력업체 및 공급업체 관계 확대 등 위험 상존
-한 영역의 장애가 다른 영역에 파급
법적요구의 증가
-IT 컴플라이언스(바젤II, 샤베인옥슬리법)
세계화의 확대
-국제적 규정의 복잡화
-전세계적 차원의 위험관리 필요
파국적인 손실에 대한 가시성 증대
-리스크관리 및 통제에 실패한 기업 사례

2. 기업이 당면하고 있는 위험
위해적인 위험:화재, 홍수, 도난 등
재정적 위험:가격, 신용, 인플레이션 등
전략적 위험:경쟁, 기술혁신, 규제변경, 브랜드이미지 손상 등
운영위험:IT 용량, 비즈니스 운영, 보안위험 등

3. 위험 대응방법

회피:특정위험이 제거되도록 활동 변경
-어려운일
-비즈니스 선택 제한
이전(전가):위험의 일부 또는 전체를 다른 주체로 이전
-재정적 이익
-보상의 기업이 요구사항을 만족하지 못함
완화:위험 및 손실의 심각성을 낮추기에 충분한 통제 및 척도 생성
-손실위험을 줄이기 위한 통제
-위험분석 정확 모니터링 기능
-위험의 심각성에 따른 통제의 규모와 수준
수용:위험 및 제반 비용 수용

4. 효과적인 기업 리스크 관리 방법 ERM(Enterprise Risk Management)
  가. ERM의 정의
    - 기업전반에서 모든 형태의 위험에 따른 손실을 감소시키고, 기회를 활용하기 위한 지속가능하고 체계적이고 효과적인 리스크관리 기법
  나. ERM 의 제약사항
    - 복잡성과 종종 상충되는 성향을 가진 국제적인 요구사항
    - 업계 모범사례에 대한 경헙이나 지식이 충분하지 않음

5. 리스크 관리 프레임워크
기업의 리스크 관리 전략 : 기업임원진
-수용된 기업위험 허용 한도 정책 공식화
-기업위험의 범주 정의, 존재가능 위험수준결정, 허용 위험수준 지침 설정
위험 계획 및 분석:운영부서(사업부)
-위험 상세분석, 비즈니스 잠재적 영향 분류, 리스크 관리 매트릭스 배치
리스크 관리 및 모니터링
-통제 생성, 구축 위험 감소, 통제 성공여부 및 효과 모니터링
-기술솔루션, 절차개선
통제 최적화
-내부통제, 효과 지속 분석, 상황 감안
규제준수 보고서
-IT 감사용 보고서, 정보생성과 관계(내부용)

6. 성공적인 리스크 관리의 원칙
가. 문제점
  - 공통적이고 일관성 있는 리스크 관리 프레임워크의 부재, 상이하고 고립적인 일련의 접근법
  - 자체적 위험 우선순위 결정 및 사업부별 독립적 리스크 관리
나. 해결방안
  - 전사적인 수준의 위험관리 우선순위 및 정책수립
  - 측정 및 지속적인 모니터링, 중앙통제 및 가시성
  - 잠재적 위험을 수용 가능한 수준으로 관리(이벤트의 잠재적 영향, 전사적 위험 허용 한도의 일반적 수준, 비즈니스 성장 영향, 시장경쟁 환경 포함