본문 바로가기
IT관련/JAVA_정리 노트

[ 정보처리기사 ] 공통 모듈 구현

by XoX 2021. 6. 9.
728x90

 

해당내용은 <수제비 정보처리기사> 책을 참고하여 작성된 개인적인 용도의 요약본입니다.

 

Ⅰ소프트웨어 설계

Ⅱ 소프트웨어 개발

Ⅲ 데이터베이스 구축

Ⅳ 프로그래밍 언어 활용

    Chapter 01 서버프로그램 구현

        1. 개발환경 구축

        2. 공통 모듈 구현

        3. 서버 프로그램 구현

        4. 배치 프로그램 구현

    Chapter 02 프로그래밍 언어 활용

    Chapter 03 응용 SW 기초 기술 활용

Ⅴ 정보시스템 구축관리


 

2. 공통 모듈 구현

 

    1) 재사용

        (1) 재사용의 개념

            : 목표 시스템의 개발 시간&비용 절감을 위한 검증된 기능을 파악&재구성한 시스템 응용 최적화 작업

        (2) 재사용의 유형

            - 함수와 객체 재사용

            - 컴포넌트 재사용

            - 애플리케이션 재사용

        (3) 코드 재사용

            : 코드 재사용은 프로그램 일부 또는 전부를 이후의 다른 프로그램을 만들 때 사용하는 기법이며 이전 버전에서

            시작해 다음 버전을 개발하는 작업도 코드 재사용에 속한다.

        (4) 재사용 프로그래밍 기법

            객체지향 / 제네릭 / 자동 / 메타

        (5) 재사용 사례

            라이브러리(표준 라이브러리, 런타임 라이브러리) / 프레임워크 / 소프트웨어 아키텍처

 

 

    2) 모듈화

        (1) 모듈화의 개념

            프로그램 개발 시 성능향상, 관리에 용이하도록 프로그램을 기능 단위 모듈로 분할하는 기법

            ※ 모듈? 그 자체로 하나의 기능을 수행할 수 있는 독립된 실체

        (2) 모듈화의 장점

            효율적인 관리와 성능 향상 / SW이해의 용이성 증대 / 인터페이스 단순화 / 재사용 가능하여 유지보수 용이

        (3) 모듈화의 원리

            정보은닉: 어렵거나 변경 가능성 있는 모듈을 타 모듈로부터 은폐

            분할과 정복: 복잡한 문제를 분해하여 모듈 단위로 문제 해결

            데이터 추상화: 각 모듈 자료 구조를 엑세스&수정하는 함수 은폐

            모듈 독립성: 낮은 결합도와 높은 응집도

        (4) 모듈화 측정지표

            응집도와 결합도로 모듈화의 적정성 측정. 모듈의 독립성을 높이려면, 결합도↓응집도↑모듈 크기↓

        (5) 모듈화의 유형

            - 설계 측면

              ⓐ 모듈: 연관 기능을 한 부분에 모아 라이브러리 형태로 사용

              ⓑ 컴포넌트: 바이너리 형태의 재사용 가능한 형태, 인터페이스에 의해 로직 수행 가능한 모듈의 단위

              ⓒ 서비스: 기존 컴포넌트보다 느슨한 결합 형태의 기능을 제공하는 모듈 단위

            - 구현 측면

              ⓐ 함수: 프로그램 구현 시 프로그램의 일부 코드로 특정한 작업을 수행하며 다른 코드에 비해 독립적인 모듈

              ⓑ 매크로: 프로그램에서 반복되는 부분에 특정 이름을 부여하고 실행할 수 있도록 하는 기법

              ⓒ 인라인: 프로그램 구현시 반복되는 부분에 특정한 이름을 부여하여 실행할 수 있도록 하는 기법

        (6) 효과적인 모듈 설계를 위한 유의사항

            : 모듈의 기능은 예측이 가능해야 하며 지나치게 제한적이면 안 된다.

        (7) 모듈화 기법

            - 루틴: 특정 동작을 반복적으로 수행하는 일련의 코드로, 기능을 가진 명령들의 모임

            - 메인 루틴: 프로그램의 주요한 부분이며 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴

            - 서브루틴: 메인 루틴에 의해 필요할 때마다 호출되는 루틴

 

 

    3) 결합도(Coupling)

        (1) 결합도의 개념

            : 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호 의존성, 관련성을 측정하는 척도

        (2) 결합도의 특징

            - 서로 다른 상위 모듈에 의해 호출됨으로 처리상 모듈 연관성 없고 다른 기능을 수행

            - 자료전달이 인터페이스를 통과하여 인터페이스의 복잡성에 의존

            - 낮은 결합도를 통해 복잡성 감소

            - 에러 발생 시 오류가 전파되어 다른 오류의 원인이 되는 파급효과를 최소화

        (3) 결합도의 유형

            용 > 통 > 부 > 어 > 탬프 > 료        

            - Content Coupling: 어떤 모듈 내부의 변수, 기능을 다른 모듈에서 사용(참조)하는 경우

            - Common Coupling: 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 참조, 갱신하는 상호작용을 하는 경우

            - External Coupling: 모듈이 관련된 기능이 다수일 때, 모듈 안 구성요소들이 이를 순차적으로 수행하는 경우

            - Control Coupling: 상위 모듈이 하위 모듈의 내부논리조직 제어를 목적으로 통신하는 권리 전도 현상의 경우

            - Stamp Coupling: 모듈 간의 인터페이스로 배열, 객체, 구조 등이 전달되는 경우

            - Data Coupling: 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간 상호 작용이 일어나는 경우 

 

 

    4) 응집도(Cohesion)

        (1) 응집도의 개념

            : 응집도는 모듈 내부 구성요소 간의 연관 정도를 의미하며 모듈의 독립성을 나타낸다.

        (2) 응집도의 특징

            - 유사기능 영역 구성: 클래스 목적에 부합하는 같은 기능 영역의 함수들로 구성

            - 단일 책임할당: 함수의 개수가 상대적으로 적고 오로지 자신만이 할 수 있는 책임을 할당받음

            - 함수 간 상호협력: 하나의 함수에 많은 기능을 넣지 않고 다른 함수와 협력

        (3) 응집도의 유형

            : 응집도 순서 ☞ 연적 < 리적 < 간적 < 차적 < 신적 < 차적 < 능적

            높은 응집도의 경우, 단 하나의 기능만을 분리 구현하여 독립성이 보장, 변경이 쉬워 유지보수 편리

            - Coincidential Cohesion: 서로 간의 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우

            - Logical Cohesion: 유사항 성격 또는 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우

            - Temporal Cohesion: 연관된 기능이라기보단 특정 시간에 처리돼야 하는 활동을 한 모듈에서 처리하는 경우

            - Procedural Cohesion: 모듈안의 구성요소들이 기능을 순차적으로 수행할 경우

            - Communication Cohesion: 동일한 입력&출력을 사용해 다른 기능을 수행하는 황동들이 모여 있는 경우

            - Sequential Cohesion: 모듈 내에서 한 활동으로 나온 출력값을 다른 활동이 사용할 경우

            - Functional Cohesion: 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우

 

 

    4) 공통 모듈 구현

        (1) 공통모듈 구현 절차

            : DTO/VO→SQL→DAO→Service→Controller→화면구현 순서로 진행하며 고통 모율 절차에 MVC패턴 사용

            ※ MVC패턴: Model, View, Controller의 약자로 프로젝트 구성요소를 세 가지 역할로 구분한 패턴

            Model: 애플리케이션이 무엇을 할 것인지를 정의하며 내부 비즈니스 로직을 처리하는 역할

            View: 화면에 무엇인가를 보여주기 위한 역할

            Controller: 모델이 어떻게 처리할 지 알려주는 역할을 하며, 뷰에 명령어를 보내어 화면 요청 결과를 전달함

 

 

    4) 공통 모듈 테스트

        (1) 공통 모듈 테스트의 개념

           : IDE도구를 활용하여 개별 공통 모듈에 대한 디버깅 수행

        (2) 공통 모듈 테스트 종류

           - 화이트박스 테스트: 소스코드를 보면서 테스트 케이스를 다양하게 만들어 테스트 수행

           - 메서드 기반 테스트: 공통 모듈의 외부에 공개된 메서드를 기반한 테스트

           - 화면 기반 테스트: 사용자용 화면에 직접 데이터를 입력하여 테스트 수행

           - 테스트 드라이버/스텁: 기능을 테스트할 수 있는 화면(상위 모듈) 또는 하위 모듈이 구현되지 않은 경우 수행

 

 

 

728x90
반응형

댓글