01. 개발환경 구축 : 응용 소프트웨어의 개발 편의성, 개발성능 향상을 위해 하드웨어 및 소프트웨어 개발환경을 구축하는 과정
빌드도구 | 작성한 코드의 빌드 및 배포를 수행하는 도구 각각의 구성요소와 모듈에 대한 의존성 관리를 지원하는 도구 Gradle, Maven, Ant |
구현도구 | 코드의 작성과 디버깅, 수정 등과 같은 작업시 사용되는 도구 프로그램을 개발할 때 가장 많이 사용되는 도구 이클립스, IntelliJ, STS, VS |
테스트도구 | 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 수행 xUnit, PMD, FindBugs, SonarQube |
형상관리도구 | 개발자들이 작성한 코드와 리소스 드 ㅇ산출물에 대한 버전관리를 위한 도구 프로젝트 진행시 필수로 포함되는 도구 SVN, git, CVS |
개발환경 구성요소 : 하드웨어 / 소프트웨어
서버 HW 개발환경
웹서버 | 웹 브라우저의 요청을 받아 HTTP를 통해 웹 브라우저에서 요청하는 HTML이나 오브젝트(이미지파일 등)를 전송해주는 서버 Apache HTTP Server, Microsoft Internet Information Service, Google Web Server 등 |
웹 애플리케이션 서버 (WAS) |
사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 처리를 수행하거나 웹 서버와 데이터베이스 서버 또는 웹서버와 파일서버 사이에서 인터페이스 역할을 수행하는 서버 Oracle WebLogic, Apache Tomcat, IBM WebSphere 등 |
DB 서버 | 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버 MySql Server, Oracle Server, MS-SQL Server 등 |
파일서버 | 파일 저장 하드웨어로 물리 저장 장치를 활용한 서버 대용량 HDD, SSD 등의 장치가 존재 AWS S3 등 |
클라이언트 HW 개발환경
클라이언트 프로그램 | 설치를 통해 사용자와 커뮤니케이션 하는 프로그램 Visual Basic, C#, Delphi 등으로 개발되어 사용 |
웹 브라우저 | 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답시 브라우저를 통해 사용자와 커뮤니케이션 일반적인 형태의 웹사이트 |
모바일 앱 | 모바일 디바이스에 설치되어 활용되는 애플리케이션 App Store, Android Market등을 통해 다운로드 가능 |
모바일 웹 | 웹 브라우저와 동일한 형태로 모바일 상 웹 브라우저를 통해 서비스 제공 모바일에 최적화되어 제공되는 웹 사이트 |
SW 개발환경
운영체제(OS) | 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어 프로젝트의 성격에 따른 운영체제 사용 |
미들웨어 | 컴퓨터와 컴퓨터간의 연결을 쉽고 안전하게 할 수 있도록 하고 관리를 도와주는 소프트웨어 자바 기반 환경에서 JVM을 설치하여 컨테이너로의 기능을 주로 이용 Tomcat |
DBMS | 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어 데이터의 저장 및 활용을 위해 DBMS 설치 |
형상관리의 개념 : 소프트웨어 개발을 위한 전체과정에서 발생하는 모든 항목의 변경사항을 관리하기 위한 활동
형상관리의 절차
형상식별 | 형상관리 대상을 정의 및 식별하는 활동 추적성 부여를 위해 ID와 관리번호 부여 변경관련 이슈 발생시 ID와 관리번호를 이용하여 추적 |
형상통제 | 형상 항목의 버전 관리를 위한 형상통제위원회 운영 변경요구 관리, 변경제어, 형상관리 등 통제 지원 베이스 라인에 대한 관리 및 형상 통제 수행 가능 |
형상감사 | 소프트웨어 베이스라인의 무결성 평가 베이스라인 변경시 요구사항과 일치여부 검토 |
형상기록 | 소프트웨어 형상 및 변경관리에 대한 각종 수행결과 기록 형상결과 보고서 작성 |
형상관리 도구 유형
공유폴더 방식 (RCS/SCCS) |
매일 개발이 완료된 파을을 약속된 위치의 공유폴더에 복사하는 방식 담당자 한명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상동작 여부 확인 정상 동작일 경우 다음날 각 개발자들이 동작 여부 확인 |
클라이언트-서버 방식 (CVS/SVN) |
중앙에 버전 관리 시스템을 항시 동작시키는 방식 개발자들의 현재 작업 내용과 이전 작업내용 추적에 용이 서로 다른 개발자가 같은 파일을 작업했을때 경고 메시지 출력 |
분산 저장소 방식 (GIT) |
로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식 중앙의 저장소에서 로컬파일을 복사한 순간 개발자 자신마늬 로컬저장소에 생성 개발완료한 파일을 수정한 다음 로컬저장소에 우선적으로 커밋한 후 다시 원격저장소에 반영하는 방식 |
02. 공통 모듈 구현
재사용 : 이미 개발되어 그 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 또는 일부를 다시 사용하는 것
재공학 re-engineering |
기존 소프트웨어를 버리지않고 기능을 개선시키거나 기능을 새로운 소프트웨어로 재활용하는 기법 위험부담 감소, 비용절감, 개발기간 단축, 시스템 명세의 오류억제 등의 장점을 가짐 |
재개발 re-developing |
기존 시스템 내용을 참조하여 완전히 새로운 시스템을 개발하거나 기능을 추가 및 변경하는 기법 |
모듈 : Module, 그 자치로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
모듈화 : Modularity, 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지관리 등이 용이하다록 기능단위의 모듈로 분해하는 설계 및 구현 기법
루틴 | 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임 |
메인루틴 | 프로그램의 주요한 부분, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴 |
서브루틴 | 메인 루틴에 의해 필요할 때마다 호출되는 루틴 |
응집도 : 모듈의 독립성을 나타내는 개념, 모듈 내부 구성요소간 연관 정도, 정보은닉 개념의 확장개념으로 하나의 모듈은 하나의 기능을 수행함
응집도 유형
우연적 응집도 (Coincidential Cohesion) |
모듈 내부의 각 구성요소가 연관이 없을 경우 |
논리적 응집도 (Logical Cohesion) |
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우 |
시간적 응집도 (Temporal Cohesion) |
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리하는 경우 |
절차적 응집도 (Procedural Cohesion) |
모듈이 다수의 관련 기능을 가질때 모듈안의 구성요소들이 그 기능을 순차적으로 수행할 경우 |
통신적 응집도 (Communication Cohesion) |
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우 |
순차적 응집도 (Sequential Cohesion) |
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우 |
기능적 응집도 (Functional Cohesion) |
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 |
결합도 : 모듈 내부가 아닌 외부 모듈과의 연관도 또는 모듈간의 상호 의존성을 나타내는 정도
결합도 유형
내용 결합도 (Content Coupling) |
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우 |
공통 결합도 (Common Coupling) |
파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우 |
외부 결합도 (External Coupling) |
두 개의 모듈에 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우 |
제어 결합도 (Control Coupling) |
단순 처리할 대상인 값만 전달되는게 아닌 어떻게 처리해야한다는 제어요소가 전달되는 경우 |
스탬프 결합도 (Stamp Coupling) |
모듈간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우 |
자료 결합도 (Data Coupling) |
모듈간의 인터페이스로 전달되는 파라미터를 통해서만 모듈간의 상호작용이 일어나는 경우 |
팬인/ 팬아웃 : 소프트웨어의 구성요소인 모듈을 계층적으로 분석하기위해 팬인(Fan-in), 팬아웃(Fan-Out) 활용
팬인(Fan-in) | 팬아웃(Fan-out) | |
개념 | 어떤 모듈을 제어(호출)하는 모듈의 수 | 어떤 모듈에 의해 제어(호출)되는 모듈의 수 |
모듈 숫자 계산 | 모듈 자신을 기준으로 모듈에 들어오면 팬인(in) | 모듈 자신을 기준으로 모듈에서 나가면 팬아웃(out) |
고려사항 | 팬인이 높으면 재사용 측면에서 설계가 잘되어 있지만 단일 장애점 발생 가능 팬인이 높으면 관리비용 및 테스트 비용 증가 |
팬아웃이 높을 경우는 불필요한 모듈 호출 여부 검토 필요 팬아웃이 높을 경우는 단순화 여부 검토 필요 |
공통 모듈 테스트 : IDE 도구를 활용하여 개별 공통 모듈에 대한 디버깅 수행
JUnit | 자바 프로그래밍 언어용 단위 테스트 도구 Erich Gamma와 Kent Beck 등이 작성한 오픈소스로 JAVA 단위 테스트 프레임 워크 |
CppUnit | 자바의 JUnit을 C++로 구현한 단위 테스트 도구 |
HttpUnit | 웹 브라우저 없이 웹사이트 테스트를 수행하는 단위 테스트 도구 |
03. 배치 프로그램 구현
배치프로그램 : 사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄처리 하는 방법
이벤트 배치 | 사전에 정의해 둔 조건 충족시 자동으로 실행 |
온디멘드 배치 | 사용자의 명시적 요구가 있을때마다 실행 |
정기배치 | 정해진 시점(주로 야간)에 정기적으로 실행 |
배출 스케줄러 : 일괄처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
스프링 배치 (Spring Batch) |
스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션 |
쿼츠 스케줄러 (Quartz Scheduler) |
스프링 프레임워크에 플러그인되어 수행하는 작업(Job)과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈소스 기반 스케줄러 |
리눅스/유닉스 크론 표현식
쿼츠 크론 표현식
Cron 표현식 특수문자
'정보처리기사 > [수제비] 정보처리기사 실기' 카테고리의 다른 글
IX. 소프트웨어 개발 보안 구축_02. 소프트웨어 개발 보안 구현 (0) | 2023.04.10 |
---|---|
IX. 소프트웨어 개발 보안 구축_01. 소프트웨어 개발 보안 설계 (0) | 2023.04.06 |
V. 인터페이스 구현 (0) | 2023.04.05 |
I. 요구사항 확인_03. 요구사항 확인 (0) | 2023.04.04 |
I. 요구사항 확인_02. 현행 시스템 분석 (0) | 2023.04.04 |