포스트

10. 통합 구현

10. 통합 구현

모듈 구현

단위 모듈 구현

개념

  • 소프트웨어를 기능 단위로 분해하여 구현하는 기법

  • 서브시스템, 서브루틴, 작업 단위 등으로 나누어 각 모듈이 독립적으로 활용될 수 있게 구현

  • 모듈의 크기는 작고, 하나의 일만을 수행

  • 모듈의 크기가 작으면 읽기 쉽고 구현하기 쉬우며 테스트 부담이 적어짐

장점

  • 프로그램의 효율적인 관리 및 성능 향상

  • 전체적인 소프트웨어 복잡성 감소 및 이해성 증대

  • 테스트, 모듈 통합, 변경 용이성 쉬움

  • 기능의 분리가 가능하고 인터페이스가 단순해짐

  • 오류의 파급효과 최소화

  • 모듈의 재사용으로 개발과 유지보수가 용이

효과적인 모듈화

  • 결합도를 줄이고 응집도를 높여 모듈의 독립성을 높임

  • FAN-OUT 최소화, FAN-IN 증가

  • 모듈 인터페이스를 평가하여 복잡성과 중복성을 줄이고 일관성을 높임

  • 기능 예측이 가능한 모듈의 정의

  • 하나의 입력과 하나의 출력 유지

단위 모듈 설계의 원리

단계적 분해 : 처음엔 간단히 작성하고, 점점 세밀히 작성
추상화 : 복잡한 문제를 일반화하여, 쉽게 이해할 수 있도록 함
독립성 : 모듈은 응집도는 높이고 결합도는 낮춰서 독립성을 가져야 함
정보은닉 : 모듈 내부의 데이터를 외부에 은폐
분할과 정복 : 큰 문제를 작게 나누어 하나씩 해결


단위 모듈 테스트

개념

  • 단위 모듈 구현이 완료되면 해당 모듈이 의도한 대로 정상 작동하는지 검증

  • 단위 모듈 테스트는 소스코드를 보면서 정적 테스트를 진행

  • 하나의 모듈이 정상적으로 수행되는지 입력값을 기준으로 출력값을 확인하는 동적 테스트를 진행

  • 정적 테스트는 개발자가 사용하는 IDE 도구를 활용하여 디버깅

장점

  • 문제를 조기에 파악할 수 있음

  • 다른 모듈에 반영하지 않고 수정이 가능

  • 모듈 통합이 더 쉬워짐

방법

화이트 박스 테스트
모듈 내부의 소스코드를 보면서 테스트를 진행
메소드(함수) 기반 테스트
메소드에 파라미터 값을 다양하게 입력하여 원하는 출력값이 나오는지 확인
화면 기반 테스트
사용자 화면이 있는 경우, 화면 단위로 데이터를 입력하면서 테스트 진행

자동화 도구

JUnit
Java 기반의 단위 모듈 테스트 도구
CppUnit
C ++ 용 testing Framework
unittest
Python에 포함된 다양한 테스트를 자동화 할 수 있는 기능이 포함되어 있는 표준 라이브러리
HttpUnit
HTTP 서버와 프로그램을 통해 상호작용을 할 수 있는 오픈 소스 자바 라이브러리

통합 구현 관리

IDE | Integrated Development Environment

개념

  • 소프트웨어 개발에 필요한 많은 도구의 기능을 하나의 패키지로 묶은 것

  • 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어

  • 기존의 소프트웨어 개발에서는 컴파일러, 텍스트 편집기, 디버거 등을 따로 관리했으나 편리한 개발을 위해 하나로 묶은 대화형 인터페이스를 제공

기능

Code editor
프로그래밍 언어를 가지고 컴퓨터 프로그램을 작성할 수 있는 환경 제공
Compiler
고급 언어로 된 프로그램을 저급 언어로 변환하는 기능
Debugger
프로그램에서 발견되는 버그를 찾아 수정할 수 있는 기능
Deployment
소프트웨어를 최종 사용자에게 전달하기 위한 기능
Plugin
추가적인 기능을 제공
Linker
각각 컴파일 된 목적 프로그램들과 라이브러리 프로그램들을 묶어서 로드 모듈이라는 실행 가능한 한 개의 기계어로 통합
Preprocessor
컴파일 이전에 미리 처리되어야 할 것들(주석의 제거, 상수 정의 치환, 매크로 확장 등)을 처리하여 확장된 원시 프로그램을 생성

종류

  • Eclipse

  • Visual Studio

  • X Code

  • IntelliJ IDEA


협업 도구

개념

  • 여러 사용자가 각기 별개의 작업 환경에서 통합된 하나의 프로젝트를 동시에 수행할 수 있도록 도와주는 소프트웨어

  • 소프트웨어 개발을 진행하는 데는 개발자 뿐만 아니라, 디자이너, 기획자, 현업 관리자 등 많은 사람들이 진행을 하게 되고, 공통의 주제인 소프트웨어 개발을 공유해야 함

  • 구성원 간 일어나는 모든 커뮤니케이션을 하나의 채널에서 가능하게끔 만들어 줌

  • 헙업툴의 주요 기능과 형태는 서비스마다 다르지만 대부분 소프트웨어형 서비스(Sass) 클라우드 기반으로 함

기능

  • 전사관리 : 전자결재, 조직도 등

  • 프로젝트 관리 : 캘린더, 타임라인, 간트차트, 대시보드 등

  • 자체 드라이브 공간

  • 문서 공유 지원

  • 커뮤니케이션

  • 다국어 지원

  • 타 협업툴 간 연동 지원

분류

SNS 형 : 슬랙, 야머, 아지트, 잔디, 워크플레이스 등
프로젝트 관리형 : 트렐로, 구글 스프레드시트, 노션, 아사나 등
통합형 : 콜라비, 플로우, 큅, 드롭박스 비즈니스 등

도입 이유

  • 기존 사내 메신저가 불편함

  • 사용하는 툴이 너무 많음

  • 프로젝트의 일정이 제대로 공유되지 못하여 스케줄에 이상이 생김

  • 인수인계가 원활하지 못함

  • 자료를 각자 가지고 있어 다른 팀원에게 요청해야 함

  • 서로의 업무를 모름

도입 프로세스

  • 문제정의

  • 문제에 대한 솔루션, 기대효과 정의

  • 협업 도구 분석

  • 협업 도구 최종 선정


형상 관리 도구

개념

  • 소프트웨어 생명주기 동안 발생하는 변경사항을 통제하기 위한 관리 방법

  • 소프트웨어의 변경사항을 체계적으로 관리하는 것

필요성

  • 개발 도중 소스코드를 이전 상태로 되돌릴 필요가 있을 경우

  • 각 변경점에 대한 이력 확인

  • 여러 개발자의 동시 개발에 따른 충동 해결

  • 버그 및 문제점 발생 시 추적이 용이

  • 기타 산출물의 이력관리도 용이

변경 관리 & 버전 관리 & 형상 관리

변경 관리

  • 소스의 변경 상황을 관리

  • 문서의 변경 이력과 복원 등의 기능이 제공

버전 관리

  • 변경을 관리하기 위한 효과적인 방법

  • 체크인, 체크아웃, 릴리즈, 퍼블리싱의 과정을 버전으로 관리할 수 있음

형상 관리

  • 변경 관리와 버전 관리가 포함되고, 프로젝트 진행상황, 빌드와 릴리즈까지 모두 관리할 수 있는 통합 시스템

대상

  • 프로젝트 수행 계획서, 요구사항 관리대장, SW 기능 구조도

  • 엔티티 정의서, 데이터 흐름도, 용어집

  • 인터페이스, ERD, UI 정의서

  • 소스 코드, 단위 테스트 관리 대장

  • 테스트 계획서 / 시나리오

  • 사용자 / 운영자 메뉴얼, 최종 산출물

절차

  1. 형상 항목 식별
  • 형상 관리의 시작으로 시스템을 구성하는 요소들 중 형상 관리의 대상들을 구분하고 관리목록의 번호를 정의하여 부여
    • 형상 항목과 형상 식별자 선정
  • 소트프웨어 형상의 조직적 구조를 정의하고 수정이 용이하거나 변경이 발생할 때 추적이 쉽도록 하는 작업
  • 형상 항목은 단순히 소스파일 뿐만 아니라 산출물, 개발이력, 개발과정에서 작성되는 문서까지 모두 포함
  1. 형상 통제(제어)
  • 형상에 대한 변경 요청이 있을 경우, 변경 여부와 변경 활동을 통제하는 활동

  • 소프트웨어 형상 변경 요청을 검토하고 승인하여 현재의 베이스라인에 반영될 수 있도록 통제

  • 형상통제가 이루어지기 위해서는 형상 통제 위원회(Configuration Control Board)의 심사 승인을 통한 변경 통제가 이루어져야 함

베이스 라인 | Baseline

  • 시스템을 구성하는 컴포넌트 버전의 집합
  • 여기에 사용된 커포넌트 버전은 변경되지 않도록 통제
  • 만약 이를 새롭게 재생성하고자 한다면 구성된 컴포넌트 버전을 변경
  1. 형상 감사
  • 형상항목에 대해 변경 사항이 형상 관리 계획서대로 형상관리가 진행되고 있는지 검증하고 승인

  • 소프트웨어 제품 명세 검토, 각 동작에 대한 메모, 원시 코드 등의 정보를 지원하는 작업

  1. 형상기록 & 보고
  • 프로젝트 팀, 회사, 클라이언트 등에게 소프트웨어 개발 상태에 대한 보고서를 제공

  • 베이스라인 산출물에 대한 변경과 처리 과정에서의 변경을 모두 기록

형상통제

  1. 변경 요청
  • 변경이 발생할 경우, 미리 정의된 양식을 이용하여 담당자에게 제출
  1. 변경 심사
  • 형상 담당자가 CCB의 등급을 결정하고 소집

  • 변경에 대한 승인 & 기각을 결정

  1. 변경 실시
  • 변경 대상을 식별하고 Repository에서 산출물 체크아웃
  1. 변경 확인
  • 변경된 내용을 확인
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.