1. 개발 환경 구축
️
️
개발 도구 분류
•
빌드 도구 : 코드의 빌드 및 배포, 의존성 관리
•
구현 도구 : 코드 작성과 디버깅 및 수정 작업
•
테스트 도구 : 코드의 기능 검증과 품질 향상
•
형상 관리 도구 : 코드와 리소스 등 산출물 버전 관리
•
개발환경 구성요소
•
서버 하드웨어 개발 환경
◦
웹 서버 : HTTP 요청/응답 처리
◦
웹 애플리케이션 서버 : 동적 콘텐츠(Servlet, JSP) 처리
◦
DB 서버 : 데이터 수집 및 관리
◦
파일 서버 : HDD, SSD 등 물리 저장 장치
•
소프트웨어 개발 환경
◦
운영체제 : 하드웨어와 사용자 간의 인터페이스 소프트웨어 - Windows, Linux, Unix
◦
미들웨어 : 컴퓨터와 컴퓨터간 연결 소프트웨어 - Weblogic, Jeus, Tomcat
◦
DBMS : 사용자의 원활한 DB 관리 소프트웨어 - Oracle, MySQL, PostgreSQL
형상 관리(SCM; Software Configuratioin Management)
•
소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동.
•
소프트웨어 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 담당자에게 통보.
•
형상 관리는 소프트웨어 개발의 전 단계에 적용되는 활동이며, 유지보수 단계에서도 수행
베이스라인(Baseline)
개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준
형상 관리 기법
(식통감기)
•
형상 식별
형상 관리 대상에 이름과 관리 번호를 부여하고, 계층(Tree) 구조로 구분하여 수정 및 추적이 용이하도록 함
•
형상 통제(변경 관리)
식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선(Base Line)이 잘 반영될 수 있도록 조정
•
형상 감사
기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
•
형상 기록
형상의 식별, 통제 감사 작업의 결과를 기록 관리하고 보고서를 작성하는 작업
2. 공통 모듈 구현
️
️
️
모듈
소프트웨어 설계에서 기능 단위로 분해하여 추상화되어 재사용 및 공유가 가능한 단위
모듈화
시스템 기능을 모듈 단위로 분류하여 성능을 향상시키고 재사용, 유지 관리 등이 용이하게 하는 설계 및 구현 기법
•
모듈화 기법
◦
루틴 : 소프트웨어에서 특정 동작을 수행하는 일련의 코드
◦
메인 루틴
◦
서브 루틴
공통 모듈
기능을 분할하고 추상화하여 성능 향상 및 유지 보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법
•
모듈 개수
→ 통합 비용 
•
모듈 개수
→ 개발 비용 
→ 공장에서 모듈 생산할 때 모듈 개수가 많다면 인프라 구축으로 인해 통합적인 비용이 많아진다. 반대로 공장에서 적은 모듈을 생산한다면 각 모듈에 대한 개발 비용이 올라간다.
결합도와 응집도
️
️
️
•
결합도(Coupling) : 개별 모듈 간 상호 의존하는 정도 / 결합도
→ 품질 
결합도 낮음
결합도 높음
자료 - 스탬프 - 제어 - 외부 - 공통 - 내용
자스(잤으)니까 합격제외 공부는 나(내)처럼
내용 (Content) | 한 모듈이 다른 모듈의 내부 기능 및 자료를 직접 참조/수정 |
공통 (Common) | 공유되는 공통 데이터를 여러 모듈이 사용 (전역 변수 참조) |
외부 (External) | 한 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조 |
제어 (Control) | 한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통제하는 경우 |
스탬프 (Stamp) | 두 모듈이 동일한 자료 구조(배열, 오브젝트)를 조회 |
자료 (Data) | 모듈 간의 인터페이스가 자료 요소로만 구성 |
•
응집도(Cohesion) : 개별 모듈이 독립적인 기능으로 정의되어 있는 정도 / 응집도
→ 품질 
응집도 낮음
응집도 높음
우연적 - 논리적 -
5. 소프트웨어 구현
소프트웨어 개발 프레임워크
개발해야할 애플리케이션 일부분이 이미 내장된 클래스 라이브러리에 구현
→ 모듈화 / 재사용성 / 확장성 / 제어의 역흐름
팬 인 / 팬 아웃
•
팬 인 (Fan-in) : 자신을 사용하는 모듈의 수 → 팬 인이 높으면 재사용 측면 설계 우수
•
팬 아웃 (Fan-out) : 자신이 사용하는 모듈의 수 → 불필요한 호출 가능성 (단순화 필요)
소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
개발 효율성, 유지보수성, 운용성 향상

