본문 바로가기
자격증/CISA

[CISA 요약정리] Domain 3. 정보시스템 구입, 개발 및 구현 | 5장. 구조적 방법론 & 6장. 대안적 개발 방법론

by Goddoeun 2022. 5. 28.
728x90
반응형

5장. 구조적 방법론

    (1) 등장 배경 : 소프트웨어  위기(Software Crisis) -> 소프트웨어  공학(Software engineering) -> 구조적 방법론
         1) 장점 : 체계적이고 정량적인 접근법
         2) 단점 : 상호관계분석이 약함
    (2) 구조적  프로그래밍(Structured programming)
         1) 구획화(Compartmentalization) : 프로그램을 서브프로그램들로 구획하여 전체 구조를 수월하게 파악할 수 있게 함
         2) 모듈(Module) 단위로 개발: 가독성(Readability)을 향상하여 생산성을 향상 BUT 모듈 간 상호관계 불가
    (3) 구조적  설계(Structured design) : 프로그램을 계층 구조로 분할된 모듈들의 합으로 설계하는 것
         1) 보안 향상 효과: 다른 모듈에 대한 프로그래머들의 지식이 제한
         2) 잘 설계된 모듈은 모듈의 응집성(Cohesiveness)은 높고 모듈간 결합성(Coupling)은 낮음
         3) 구조적 설계에서 사용하는 기법
              - 구조도(Structure Chart) : 시스템을 구성하는 모듈들을 계층 구조로 묘사한 그림
              - 모듈  명세서(Module Specification) : 의사 코드(슈도 코드, Pseudo-code)로 간략하게 작성한 소형 명세서

                 ** 프로그래머들은 모듈 명세서를 근거로 할당된 모듈을 개발


     (4) 구조적  분석(Structured analysis)
         1) 정의 : 시스템이 지원할 비즈니스 프로세스를 하향식(top down)으로 분할하고 시각적으로 표현
         2) 대표적 기법
             - 배경도(Context diagram) : 시스템을 최상위 수준에서 조망하는 다이어그램
             - 개체  관계도(ERD: Entity Relationship Diagram) : 데이터 개체(Entity) 간 상호 관계를 표현하는 시각적 기법

             ** 분석적 분석 및 설계 모두를 지원하는 기법
             - 데이터  흐름도(DFD: Data Flow Diagram): 하위 프로세스들 사이의 데이터 이동을 보여주는 시각적 기법
               ①   주요 산출물들을 알 수 있음
               ②   DFD는 프로세스 간 관계, ERD는 데이터 객체 간 관계를 보여줌
               ③   배경부터 시작하여 시스템을 프로세스 단위로 하향 분할하면서 작성
               ④   최하위 프로세스 수준에서 작성된 DFD는 각 프로그래머가 개발할 모듈에 대응
               ⑤   프로그래머들은 모듈 별 DFD 와 모듈 명세서를 사용하여 프로그래밍


      (5) 데이터  사전(Data Dictionary) : 모든 데이터 항목의 표준 명칭, 의미, 형식, 길이, 용도(참조프로그램), 원천 등을 정

            ** ERD, DFD, 미니 명세서 등을 작성하고 프로그램을 개발할 때 참조

 

6장. 대안적 개발 방법론
    (1) 객체  지향  시스템  개발(OOSD: Object Oriented System Development)
         1) 정의 : 프로그램을 객체 단위로 조직하여 개발하고 유지보수
         2) 객체(Object ) : 전체 프로그램에 속해 있는 한 부분
              - 모듈과는 달리 독립적으로 기능하며 다른 객체들과 상호 작용 (따라서, 복잡한 데이터 관계에 유리)
              - 이미 개발된 객체는 다른 프로그램에서 재사용할 수 있어서 개발 노력/시간이 절약 But 같은 언어로 개발되어야 함
         3) 캡슐화(Encapsulation) : 객체 안에 메소드와 속성 내장 -> 데이터 은닉(Data hiding)이 이루어져 프로그램의 보안을 향상
         4) 클래스(Class) : 속성을 공유하는 객체 집합(객체의 핵심적 공통 속성만 도출하는 과정인 추상화(Abstraction)를 통해 도출)
         5) 상속(Inheritance) : 하위 클래스는 상위 클래스의 속성과 메소드를 상속 -> 프로그램 로직을 재사용할 수 있게 함

 

    (2) 속성  응용  개발(RAD: Rapid Application Development)
         1) 의의: 낮은 비용과 높은 품질을 유지하면서 전략적으로 중요하고 기능이 분명한 시스템을 신속하게 개발 ** RAD는 요구 사항이 방대한 대규모 시스템을 개발하는 데는 적절하지 않음
         2) 사용 도구 및 기법
             - CASE(Computer Assisted Software Engineering tools) 도구: 자동화된 개발 도구(산출물공유, 자동 코드 생성 등)         

             - SWAT(Specialists with Advanced Tools) 팀 : 잘 훈련되고 CASE 도구 사용에 능숙한 개발팀
             - 중앙  저장소(Repository) : 결과물은 중앙 저장소에 보관 관리하며 재사용이 가능한 요소는 최대한 재사용
             - JAD(Joint Application Development) : 개발자와 사용자가 분석 및 설계를 위한 워크샵을 공동 수행하고 긴밀하게 공조

             - 진화적  프로토타이핑 : 신속하게 일차 결과물을 도출하고 품질을 향상하는 방법
             - 타임  박스(time box) 기법 : 엄격한 시간 제약을 설정하여 일정 지연을 통제하는 기법

         3) RAD의 단계 구성 : 시스템 개발 수명 주기를 구성하는 단계들이 중첩되고 통합

             - 개념 정의: 시스템이 지원할 기능과 데이터를 정의하고 개발 범위 확정
             - 기능 설계: 데이터/프로세스 모델 개발과 프로토타이핑을 위한 워크샵 개최

             - 개발: 실제 DB 와 시스템을 구축하고 이전 계획을 수립하고 시스템 설치

             - 설치: 인수 테스트, 훈련, 데이터 변환, 시스템 구현 등을 수행

 

    (3) 애자일  개발(Agile Development)
         1) 정의 : 개발 기간 자체의 단축보다는 변화에 대한 민첩한 대응에 초점을 맞춘 접근법
         2) 애자일 개발 특징
             - 반복적(Iterative) 개발 접근법
             - 임파워먼트(Empowerment) : 프로젝트 관리자는 팀원들에게 권한을 대폭 이양하고 지원적인 역할을 수행

             - 페어  프로그래밍(Pair Programming) : 팀원들은 2 인 1 조 방식으로 프로그램을 개발
             - 백로그(Backlog) : 기능, 요구사항, 기술적 태스크들의 목록(전체 개발 범위와 매 회차(Sprint, 기간)별 개발 대상)

             - 암묵적 지식과 노하우의 공유: 객관화되고 문서화된 지식에 더해 경험을 통해 습득한 암묵적 지식과 노하우를 공유


    (4) 컴포넌트  기반  개발(CBD: Component Based Development)
         1) 정의 : OOSD에서 파생된 개발 접근법으로 프로그램을 컴포넌트(Component) 단위로 조직하여 개발하고 유지보수
         2) 컴포넌트(Component) : 다른 컴포넌트와 연계되도록 인터페이스를 표준화하여 제작한 프로그램 단위
             - 컴포넌트는 개발 언어나 운영 체제와 무관하게 상호 작동 -> 이질적 환경에서 개발된 여러 프로그램 요소들을 재사용

             - OOSD 가 소스 코드를 재사용한다면 CBD 에서는 목적 코드를 재사용 (대체성 향상)
             - 웹 기반 응용 시스템 개발에 중요한 요소이며 기본적으로 Active X 나 자바 애플릿이 필요
          3) 장/단점

               - 장점
               ①   소프트웨어 재사용을 통해 개발 시간과 비용을 단축

               ②   컴포넌트 내부의 응집성을 높이고 컴포넌트 간 결합성을 낮추기 때문에 모듈화가 촉진
               ③   충분한 품질 검토를 통과한 기존의 컴포넌트를 재활용하기 때문에 소프트웨어의 품질 향상 

               - 단점
               ①    컴포넌트들이 이질적 기술 환경에서 개발 -> 통합을 염두에 두고 시스템 개발 관리
               ②    기존 컴포넌트가 시스템의 비즈니스 요구사항을 충족 못할 위험-> 충족도를 사전에 충분히 파악하고 보완


    (5) Web 기반  응용  개발(WBD)
          : 원격 서버에 저장되고 웹 브라우저를 통해 수행할 수 있는 응용 프로그램-> XML(eXtensible Markup Language) 사용

 

    (6) 온라인  프로그래밍  설비(통합개발  환경)
         1) 장점: 낮은 개발비용, 신속한 개발, 지원도구의 가용성 향상, 표준 및 구조적 기법 사용
         2) 단점: 비인가 접근으로 무결성 감소 예) Overwritten(덮어쓰기) -> 접근통제 SW 사용 필요

 

    (7) 기타 개념
          1) 역공학(Reverse Engineering)
               - 정의: 기존 제품을 해체하고 기능을 연구하여 새로운 제품 생산하는 데 활용하는 기술

               - 방법
               ①   디컴파일러를 통해 목적코드나 실행코드로부터 소스코드 획득 : 호환성 제약문제 발생 가능성
               ②   블랙 박스 테스트(기능 분석을 통한 소스 코드 추정) 수행
           2) 재공학(Re-engineering, BPR) : 기존 프로그램의 설계/개발 요소를 추출한 후 기존 시스템을 변경하는 체계적 기술(갭분석)
           3) CASE(Computer Aided Software Engineering) 도구 : 산출물의 품질과 생산성 향상을 위한 소프트웨어 개발 자동화 도구

              - 상: 다이어그램 작성, 요구사항 문서화
              - 중: 프로토타입 제작, 사용자 인터페이스 개발

              - 하: 코드 생성, DB 관리

 

-끝-

 

 

참고할 점!
- 요즘은 IS라고 안하고 IT라고 하는게 일반적임. CISA가 업데이트가 늦음. IS를 IT라고 생각하면 더 익숙하게 느껴져요!
- 블로그 내용 참고도 좋지만 직접 한번 더 정리하고, 문제 풀이하면서 요약집에 없는 내용을 적절한 domain, 챕터에 지속적으로 업데이트해서 꼼꼼히 읽기를 추천드립니다..! (그저 추천입니다...)

참고한 내용!
- 동료 PTW 회계사님이 친히 작성해주신 정리글 일부를 참고하였습니다~ (회계사님 CISA없어도 CISA이시고.. 이번에 CISA 취득하실거에요! 감사해요!)
- 동료 LYJ 선생님이 작성해주신 정리글도 일부 참고하였습니다~ 시간되시는 분 블로그 놀러가세요! (감사감사!)
Link : https://unvertige123.wordpress.com

 

Codes and Things

프로그래밍 학습 블로그

unvertige123.wordpress.com

- 아래 블로그도 참고하였습니다.
Link :https://33cram.tistory.com/category/CISA/1.%20IS%20%EA%B0%90%EC%82%AC%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4

 

'CISA/1. IS 감사 프로세스' 카테고리의 글 목록

CISA, PMP, CISSP, CIA 자료를 공유합니다.

33cram.tistory.com

 
 
 
 
728x90
반응형

댓글