개발환경 구축
개발환경 구축이란 개발환경 구성 시 시스템 요구사항을 정확히 이해한 뒤 개발 도구와 서버를 선정과 개발에 사용되는도구의 사용 편의성, 성능, 라이센스를 확인합니다.
개발도구
개발환경 구성을 위한 도구는 크게 4가지로 분류 가능합니다.
구분 | 도구 | 설명 |
빌드 도구 | Ant Maven Gradle |
작성한 코드의 빌드 및 배포를 수행하는 도구입니다. 빌드 도구는 각 구성요소의 모듈에 대한 의존성 관리를 지원합니다. |
구현 도구 | Eclipse IntelliJ Spring Tool Suite NetBeans Visual Studio |
개발자가 프로그램을 개발할 때 코드 작성, 디버깅, 수정 등을 지원하는 도구입니다. |
테스트 도구 | xUnit PMD Findbugs Cppcheck Sonar |
코드의 기능 검증과 전체 품질을 높이기 위해 사용되는 도구입니다. 테스트 도구는 코드의 테스트와 테스트에 대한 계획, 수행 및 분석 등의 작업을 합니다. |
형상 관리 도구 | CVS Subversion Git |
프로젝트 진행시 필수로 포함되는 도구로 개발자들이 작성한 코드와 리소스 등의 산출물에 대한 버전 관리를 위한 도구입니다. |
서버 하드웨어 개발환경
웹 서버는 HTTP를 이용한 요청 및 응답을 처리합니다. WEB-WAS-DB 3계층 구조를 가지고 있으며 웹 상의 정적 콘텐츠인 CSS, Javascript, Image를 처리합니다. 주요 제품으로는 Apache 웹 서버, IIS 웹 서버, Google Web Server, Nginx가 있습니다.
웹 애플리케이션 서버는 동적 콘텐츠인 Servlet, JSP를 처리합니다. 주요 제품으로는 Tomcat, Weblogic, Jeus, Resin등 이 있습니다.
데이터베이스 서버는 데이터의 수집, 저장을 위해 사용됩니다. 연계되는 주용 DBMS는 MySql, Oracle, MS-SQL, DB2 등이 있습니다.
파일 서버는 파일 저장 하드웨어로 물리 저장장치를 활용한 서버입니다. HDD, SSD 등이 있습니다.
클라이언트 하드웨어 개발환경
클라이언트 하드웨어 개발환경은 서버 개발환경에서 제공된 서비스를 사용하기 위해 UI를 제공합니다.
클라이언트 프로그램은 설치를 통해 사용자와 커뮤니케이션합니다. Visual Basic, C#, Delphi등으로 개발됩니다.
웹 브라우저는 우리가 자주보는 일반적인 웹 사이트로 웹 서비스의 형태로 서버에서 웹 애플리케이션 응답시 브라우저를 통해 사용자와 커뮤니케이션합니다.
모바일 앱은 모바일 디바이스에 설치되어 활용되는 어플리케이션입니다.
모바일 웹은 모바일에 최적화되어 제공되는 웹 사이트로 웹 브라우저와 동일한 형태로 모바일 웹브라우저를 통해 제공되는 서비스입니다.
소프트웨어 개발환경
소프트웨어 개발환경은 개발을 위한 기본적인 소프트웨어 개발환경을 구성합니다.
구분 | 도구 | 설명 |
운영체제 | Windows Unix Linux |
서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어입니다. 운영체제는 프로그램의 성격에 따라 달라집니다. |
미들웨어 | Weblogic Webspehere Jeus Tomcat |
컴퓨터와 컴퓨터 간의 연결이 쉽고 안전하도록 해주며 이 연결에 대한 관리를 도와주는 소프트웨어입니다. |
DBMS | Oracle MySQL MS-SQL PostgreSQL |
사용자와 데이터베이스 사이에서 사용자의 요구에 ㄸ라 정보를 생성하고, 데이터 베이스를 관리하는 소프트웨어입니다. |
형상관리
형상관리는 소프트웨어 개발 전체 관정에서 발생하는 모든 변경사항을 관리하는 활동입니다. SW 생명 주기 동안 형상관리를 하게되면 산출물을 체계적으로 관리하며 SW의 가시성, 추적성, 무결성 등의 품질을 보장할 수 있습니다.
형상관리의 순서는 다음과 같습니다. 첫번째로는 형상식별입니다. 이 과정에서는 형상관리 대상을 정의합니다. 그 후로는 형상통제 과정으로 베이스 라인에 대한 관리와 형상 항목 버전 관리를 위한 형상통제 위원회를 운영합니다. 세번째로는 소프트웨어 베이스 라인의 무결성 평가와 변경시 요구사항과 일치하는지 검토하는 형상감사 단계입니다. 마지막으로는 형상 및 변경관리에 대한 각종 수행결과를 기록하며 보고서를 작성하는 형상 기록 단계로 마무리 합니다.
공통모듈
모듈(Module)이란 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어입니다.
모듈의 특징으로는 각 모듈은 독립성을 가지고 있습니다. 모듈의 독립성은 결합도와 응집도에 의해 측정되며 결합도는 약하고, 응집도는 높고, 모듈의 크기는 작을 수록 독립성이 높아집니다. 독립성이 높은 모듈이면 수정 시 다른 모듈에 영향을 주는게 적어집니다. 다른 특징으로는 모듈은 재사용 가능합니다. 또한 모듈 내부엔 모듈을 하나로 통합하는 조합이 존재할 수 있습니다.
모듈화(Modularity)는 소프트웨어의 성능을 향상시키거니 복잡한 시스템의 수정과 재사용, 유지 관리가 편하도록 기능 단위 모듈로 분해하는 설계 구현 기법입니다.
공통모듈은 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능향상과 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법입니다. 공통모듈은 독립성을 높이기 위해 결합도는 약하고 응집도는 높이는 구현을 권장합니다.
응집도
응집도는 모듈의 독립성을 나타내는 개념으로 모듈 내부 구성 요소간의 연관정도입니다. 즉 하나의 모듈이 하나의 기능을 수행하는 것을 의미합니다.
응집도는 우연적, 논리적, 시간적, 절차적, 통신적, 순차적, 기능적 응집도 순서로 응집도가 높아지며 모듈의 독립성이 높아집니다.
결합도
결합도는 모듈의 내부가 아닌 외부의 모듈과의 연관도이며 소프트웨어 구조에서 모듈간의 관련성을 측정하는 척도입니다.
결합도는 내용, 공통, 외부, 제어, 스탬프, 자료 결합도 순으로 결합도가 낮아지며 모듈의 독립성이 높아집니다.
MVC
공통 모듈위 구현을 위해서는 정차에 구현되는 MVC 패턴을 이해해야 합니다.
구분 | 역할 |
모델(Model) | 내부 비즈니스 로직을 처리하기 위한 역할이며 애플리케이션이 무엇을 할 것인를 정의합니다. |
뷰(View) | 모델과 컨트롤러가 보여주려 하는것을 화면을 통해 보여줍니다. |
컨트롤러(Controller) | 뷰에 명령을 보내어 화면 요청결과를 전달해 모델이 어떻게 처리할지 알려주는 역할을 합니다. |
팬인(Fan-In) 및 팬아웃(Fan-Out)
팬인(Fan-In) 및 팬아웃(Fan-Out)은 소프트웨어 구성요소인 모듈을 계층적으로 분석해 시스템 복잡도를 측정하기 위해서 필요합니다. 시스템 복잡도를 최적화 하기 위해서는 팬인은 높여야하며 팬아웃은 낮게 설계해야합니다.
팬인(Fan-In)은 어떤 모듈을 제어 하는지 모듈의 수를 의미합니다. 팬인이 높으면 재사용 측면에서 설계는 잘되었지만 단일 장애점이 발생 가능합니다. 또한 관리비용과 테스트 비용도 증가하게 됩니다.
팬아웃(Fan-Out)은 어떤 모듈에 의해 제어 되는 모듈의 수입니다. 팬아웃이 높아지면 불필요한 모듈 호출 여부를 검토해야 합니다. 또한 팬 아웃이 높을 경우 단순화 여부를 검토해야 합니다.
다음의 그림에서 F의 팬인은 2가 되며 F의 팬아웃은 1입니다. 또한 A의 팬인은 0이고 A의 팬아웃은 3이 됩니다.
팬인을 모두 정리하면 A=0, B=1, C=1, D=1, E=1, F=2, G=1, J=1, H=2, I=1 입니다.
팬아웃을 모두 정리하면 A=3, B=2, C=2, D=1, E=1, F=1, G=1, J=0, H=0, I=0 입니다.
관련글
'공부' 카테고리의 다른 글
정보처리기사 공부 화면 설계 (0) | 2021.02.21 |
---|---|
정보처리기사 공부 인터페이스 구현 (0) | 2021.02.16 |
정보처리기사 공부 통합 구현 (0) | 2021.02.13 |
정보처리기사 공부 데이터 입출력 구현 (0) | 2021.02.12 |
정보처리기사 공부 요구사항확인 (0) | 2021.02.11 |
댓글