중요한 것 정리

개발환경 구축, 모듈, 결합도, 응집도, 테스트

개발환경 구축

개발 도구

  • 구현 도구 : 코드 작성, 디버깅 등
    • Visual Studio, Xcode, Eclipse, InteliJ, Spring Tool Suite, NetBeans 등
  • 테스트 도구 : 기능 검증과 품질 향상을 위한 테스트.
    • xUnit, PMD, Sonar, Cppcheck, Findbugs
  • 빌드 도구 : 빌드 및 배포 수행. 의존성 관리.
    • Ant, Maven, Gradle
  • 형상 관리 도구 : 버전관리.
    • Git, Subversion, CVS

개발환경 구성요소

서버

  • 웹 서버
    • HTTP 요청, 응답.
    • 웹 상의 정적 콘텐츠(CSS, JS, Image 등) 처리
    • Apache 웹 서버, IIS, Google Web Server, Nginx 등
  • 웹 애플리케이션 서버(WAS, Web Application Server)
    • 동적 콘텐츠(JSP, Servlet 등) 처리
    • Tomcat, Jeus, Resin, Weblogic
  • 데이터베이스 서버
    • MySQL, MS-SQL, Oracle, DB2 등
  • 파일 서버
    • HHD, SSD 등

클라이언트

  • 웹 브라우저
  • 모바일 웹
  • 모바일 앱
  • 클라이언트 프로그램

소프트웨어

  • 운영체제
  • 미들웨어
    • JVM을 활용해 컨테이너로 이용.
  • DBMS

형상관리(Configuration Management)

개념

소프트웨어 개발 전반에서 발생하는 변경 사항을 관리하는 작업.

절차

식통감기

형상 식별 → 형상 통제 → 형상 감사 → 형상 기록

  • 형상 식별 : 형상 관리 대상을 정의하고 식별
  • 형상 통제 : 형상 항목의 버전 관리를 위해 변경 여부와 변경 활동을 통제하는 활동
  • 형상 감사 : 소프트웨어 베이스라인의 무결성 평가
  • 형상 기록 : 형상 및 변경관리에 대한 각종 수행결과 기록

형상관리 도구

  • 공유 폴더 방식
    • 공유 폴더에 복사하는 방식
    • RCS(Revision Control System), SCCS
  • 클라이언트-서버 방식
    • 중앙 서버에 관리하는 방식
    • CVS(Concurrent Versions System), SVN(Subversion)
  • 분산 저장소 방식
    • 로컬과 원격으로 분리돼 저장하는 방식
    • Git

공통 모듈 구현

모듈(Module)

개념

하나의 완전한 기능을 할 수 있는 독립적인 프로그램.

특징

  • 독립성, 재사용성 등이 특징이다.
  • 단독으로 컴파일할 수 있고, 독립성은 결합도와 응집도에 의해 판별된다.
  • 결합도 약하게, 응집도 강하게, 크기 작게 할 수록 모듈의 독립성 커짐.

모듈화 기법

  • 루틴(Routine) : 특정 동작 수행하는 명령들의 모임
  • 메인 루틴(Main Routine) : 전체의 동작 절차 표시
  • 서브 루틴(Subroutine) : 메인 루틴에 의해 호출되는 루틴

공통 모듈 구현

추상화, 유지보수 기능 향상을 위한 컴포넌트 구현 기법.

결합도(Coupling)

개념

외부 모듈간의 상호의존성/관계성으로, 약할수록 모듈의 독립성이 확보된다.

유형

자료 < 스탬프 < 제어 < 외부 < 공통 < 내용

  • 자료 결합도(Data Coupling) : 인터페이스로 전달되는 파라미터만으로 소통
  • 스탬프 결합도(Stamp Coupling) : 인터페이스로 배열, 객체, 구조 등이 전달
  • 제어 결합도(Control Coupling) : 어떻게 처리할지에 대한 제어 요소가 전달
  • 외부 결합도(External Coupling) : 외부의 데이터 포맷, 프로토콜, 디바이스 인터페이스 등 공유
  • 공통 결합도(Common Coupling) : 모듈 밖의 전역변수 참조, 갱신하는 등의 상호작용
  • 내용 결합도(Content Coupling) : 다른 모듈 내부의 변수나 기능을 사용

응집도(Cohesion)

개념

내부 모듈의 구성요소 간 연관 정도로, 강할수록 모듈의 독립성이 확보된다.

유형

기능 > 순차 > 교환 > 절차 > 시간 > 논리 > 우연

  • 기능적 응집도(Functional Cohesion) : 내부의 모든 기능 단일 목적
  • 순차적 응집도(Sequential Cohesion) : 모듈의 출력값이 다른 활동에 사용됨
  • 교환적 응집도(Communiation Cohesion) : 동일 입출력을 사용하는 다른 기능들의 집합
  • 절차적 응집도(Procedural Cohesion) : 다수의 기능을 순차적으로 수행
  • 시간적 응집도(Temporal Cohesion) : 특정 시간에 처리돼야 하는 활동들
  • 논리적 응집도(Logical Cohesion) : 유사한 성격 혹은 특정 형태로 분류된 요소들
  • 우연적 응집도(Coincidental Cohesion) : 연관 없는 요소들

팬인(Fan-In), 팬아웃(Fan-Out)

개념

모듈을 계층적으로 분석할 때 활용하는 개념으로, 시스템의 복잡도를 판단할 수 있다.

어떤 모듈을 호출하는 모듈의 수가 팬인, 어떤 모듈이 호출하는 모듈의 수가 팬아웃.

시스템을 최적화하기 위해선 팬인을 높게, 팬아웃을 낮게 설계해야 한다.

계산 방법

모듈을 기준으로 들어오면 팬인, 나가면 팬아웃

공통 모듈 테스트

개념

IDE를 활용해 공통 모듈 각각에 대한 디버깅과 테스트를 수행한다.

대표적인 단위테스트 도구 JUnit을 사용해 테스트 코드를 구현한다.

종류

  • 화이트박스 테스트
    • 내부 구조와 동작을 직접 들여다보며 검사하는 테스트 방식
  • 테스트 드라이버(Driver)/ 테스트 스텁(Stub)
    • 하위 모듈은 있지만 상위 모듈이 없을 때 드라이버를, 상위는 있지만 하위가 없을 땐 스텁을 사용해 기능테스트.
  • 화면 기반 테스트
    • 화면단위로 직접 데이터를 입력해 테스트하는 방식
  • 메서드 기반 테스트
    • 모듈 외부에 공개된 메서드를 활용해 테스트하는 방식

참고

수제비 2021 정보처리기사 실기

댓글남기기