1. 개발환경 구축
- 개발 도구
1) 빌드 도구: Ant, Maven, Gradle
2) 구현 도구: Eclipse, IntelliJ, Spring Tool Suite, NetBeans, Visual Studio
3) 테스트 도구: xUnit, PMD, Findbugs, Cppcheck, Sonar
4) 형상 관리 도구: CVS, Subversion, Git
- 구성 요소
1) 하드웨어 개발환경
(1) 서버
- 웹 서버: HTTP를 이용한 요청/응답(정적 콘텐츠) 처리. WEB-WAS-DB 3계층 구조. Apache, Nginx
- 웹 애플리케이션 서버: 동적 콘텐츠 처리. Tomcat, Weblogic, Jeus, Resin
- 데이터베이스 서버: 데이터의 수집, 저장. MySql, Oracle
- 파일 서버: 물리 저장장치 활용. 대용량 HDD, SSD
(2) 클라이언트: 클라이언트 프로그램, 웹 브라우저, 모바일 앱, 모바일 웹
2) 소프트웨어 개발환경
- 운영체제, 미들웨어, DBMS
3) 형상 관리 **
: 소프트웨어 개발을 위한 전체 과정에서 발생하는 변경 사항을 관리하기 위한 활동
- 형상 관리 도구 유형
1) 공유 폴더: 개발이 완료된 파일은 약속된 공유 폴더에 복사. 담당자 한 명이 확인. PCS, SCCS
2) 클라이언트/서버: 중앙에 버전 관리 시스템을 항시 동작. CVS, SVN
3) 분산 저장소: 로컬 저장소/원격 저장소로 분리. Git
2. 공통 모듈 구현
- 모듈: 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
- 모듈의 독립성을 높이려면 결합도는 낮게, 응집도는 높게, 모듈의 크기는 작게 만들어야 한다.
1) 응집도
: 모듈 내부 구성요소 간 연관 정도.
- 우연적: 구성요소가 연관이 없음
- 논리적: 유사한 성격을 갖거나 특정 형태로 분류되는 요소들
- 시간적: 특정 시간에 처리되어야 할 활동들을 한 모듈에서 처리할 때
- 절차적: 구송요소들이 기능들을 순차적으로 수행할 때
- 교환적(통신적): 동일 입출력을 사용해 다른 기능을 수행하는 활동들
- 순차적: 모듈의 출력값을 다른 활동이 사용할 때
- 기능적: 모듈 내부틔 모든 기능이 단일 목적을 위해 수행될 때
2) 결합도
: 외부 모듈과의 연관도. 모듈 간의 상호의존성
- 자료: 파라미터를 통해서만 상호작용
- 스탬프: 배열, 객체, 구조 등이 전달
- 제어: 값뿐만 아니라 제어 요소가 전달
- 외부: 외부에서 도입된 데이터 포맷, 프로토콜, 디바이스 인터페이스를 공유
- 공통: 모듈 밖의 전역 변수를 참조, 갱신하며 상호작용
- 내용: 다른 모듈 내부의 변수나 기능을 사용
3) 공통 모듈 구현
- MVC 패턴을 사용
- DTO/VO -> SQL -> DAO -> Service -> Controller -> 화면 구현 순으로 진행
4) 팬인/팬아웃
(1) 팬인
- 어떤 모듈을 제어하는 모듈의 수. 자신을 기준으로 들어오는 것
- 팬인이 높으면 재사용 측면에서 설계가 잘 되었지만, 단일 장애점 발생 가능
- 팬인이 높으면 비용 증가
(2) 팬아웃
- 어떤 모듈에 의해 제어되는 모듈의 수. 자신을 기준으로 나가는 것
- 팬아웃이 높으면 불필요한 모듈 호출과 단순화 여부 검토 필요
'기본 지식' 카테고리의 다른 글
애플리케이션 테스트 관리 (0) | 2021.07.06 |
---|---|
소프트웨어 개발 보안 구축 (0) | 2021.07.05 |
절차형 SQL (0) | 2021.07.03 |
데이터 분석 함수 (0) | 2021.07.03 |
데이터베이스 기본 (0) | 2021.07.03 |
댓글