2022. 6. 7. 14:58ㆍ정처기(필기)/프로그래밍언어활용
(1) 개발환경 구축
1. 개발환경 구축의 개념
- 개발환경 구축은 응용 소프트웨어의 개발 편의성, 개발 성능 향상을 위해 하드웨어 및 소프트웨어 개발환경을 구축하는 과정
▼ 개발환경 구축 도구의 분류
구분 | 설명 |
빌드 도구 | 작성한 코드의 빌드 및 배포를 수행하는 도구 각각의 구성요소와 모듈에 대한 의존성 관리를 지원하는 도구 |
구현 도구 | 코드의 작성과 디버깅, 수정 등과 같은 작업 시 사용되는 도구 프로그램을 개발할 때 가장 많이 사용되는 도구 |
테스트 도구 | 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 수행 |
형상 관리 도구 | 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구 프로젝트 진행 시 필수로 포함되는 도구 |
2. 개발환경 구성요소
[1] 하드웨어 개발환경
① 서버 하드웨어 개발환경
- 프로젝트 구성에 따라 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버로 구분
- 웹 서버 : 웹 브라우저의 요청을 받아 HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트 등을 전송해주는 서버(ex : Apache HTTP Server, Microsoft Internet Information Service, Google Web Server 등)
- 웹 애플리케이션 서버 : 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 처리를 수행하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버(ex : Oracle WebLogic, Apache Tomcat, IBM WebSphere, JEUS 등)
- 데이터베이스 서버 : 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버(MySql Server, Oracle Server, MS-SQL Server 등)
- 파일 서버 : 파일 저장 하드웨어로 물리 저장 장치를 활용한 서버, 대용량 HDD나 SSD 등의 장치가 존재(AWS S3 등)
② 클라이언트 하드웨어 개발환경
- 서버 개발환경에서 제공된 서비스를 사용하기 위해 UI를 제공한다.
▼ 클라이언트 하드웨어 환경
구분 | 설명 |
클라이언트 프로그램 |
설치를 통해 사용자와 커뮤니케이션하는 프로그램 Visual Basic, C#, Delphi 등으로 개발되어 사용 |
웹 브라우저 | 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션 일반적인 웹사이트 |
모바일 앱 | 모바일 디바이스에 설치되어 활용되는 애플리케이션 |
모바일 웹 | 웹 브라우저와 동일한 형태로 모바일 상 웹 브라우저를 통해 서비스를 제공 모바일에 최적화되어 제공되는 웹 사이트 |
[2] 소프트웨어 개발환경
- 프로젝트 요구사항에 부합한 운영체제, 미들웨어, DBMS를 선정한다.
▼ 소프트웨어 개발환경
- 운영체제 : 서버의 하드웨어를 편리하고 유용하게 사용하기 위한 소프트웨어
- 미들웨어 : 웹 서버, JVM과 같은 개발환경의 구성요소로 활용, 컨테이너로의 기능을 이용
- DBMS : 데이터의 저장 및 활용을 위해 DBMS를 설치
(2) 서버 개발 프레임워크
1. 프레임워크의 개념
- 프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 틀
▼ 프레임워크 특징
- 모듈화 : 구현을 인터페이스 뒤에 감춰 모듈화를 강화
- 재사용성 : 인터페이스를 통해 여러 애플리케이션에서 반복적으로 사용하는 일반적 컴포넌트를 정의하여 재사용성을 높임
- 확장성 : 다형성을 통해 애플리케이션이 프레임워크의 인터페이스를 확장
- 제어의 역행 : 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어
▼프레임워크 구성요소
- 개발환경 : 설계, 구현, 테스트 등 개발에 필요한 지원 도구 모음
- 실행환경 : 자바 기반 응용시스템 개발 시 필수적 기능을 패텬화해 미리 구현해둔 라이브러리 코드 모음
- 운영환경 : 표준 프레임워크 기반 개발 시스템에 대한 운영 시 필요한 의사소통 및 모니터링 도구 모음
- 관리환경 : 표준 프레임워크에 대한 기술 지원, 업그레이드 등 관리하기 위한 내부 업무 시스템
2. 프레임워크의 사례
전자정부 프레임워크
- 전자정부 서비스 품질향상, 정보화 투자 효율을 위하여 범정부적 개발 프레임워크 표준을 정립, 응용 SW에 대한 구성기반과 서비스를 공유하는 프레임워크
(3) 재사용
1. 재사용이란
- 목표 시스템의 개발 시간 및 비용 절감을 위하여 거증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업
2. 재사용의 유형
- 함수와 객체 재사용 : 클래스나 함수 단위로 구현한 소스 코드를 재사용
- 컴포넌트 재사용 : 컴포넌트 단위로 재사용
- 애플리케이션 재사용 : 공통기능을 제공하는 애플리케이션과 기능을 공유하여 재사용
3. 재사용 프로그래밍 기법
- 객체지향 프로그래밍 : 객체 단위로 재사용이 이루어지도록 설계, 구조화된 프로그래밍 구현이 가능
- 제네릭 프로그래밍 : 하나의 값이 여러 데이터 타입을 가질 수 있음, 재사용성을 높일 수 있는 프로그래밍 방식
- 자동 프로그래밍 : 사용자가 설정 변수에 근거한 프로그램 생성
- 메타 프로그래밍 : 런타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행하는 프로그래밍
4. 재사용의 사례
- 라이브러리 : 소프트웨어 개발시 공통으로 사용될 수 있는 특정한 기능을 모듈화한 기법
- 표준 라이브러리 : 특정 언어으 개발환경에 기본적으로 포함되는 라이브러리
- 런타임 라이브러리 : 프로그램이 실제 환경에서 실행되기 위해 필요한 모듈
- 프레임워크 : 소프트웨어 개발에서 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 툴(클래스 + 라이브러리)
- 소프트웨어 아키텍처 : 시스템에 대한 기본 조직체계로 시스템을 이루는 구성요소 간 관계를 나타낸 지침과 원리를 포함하는 청사진
(4) 모듈화
1. 모듈화의 개념
- 모듈화는 프로그램 개발 시 생산성과 최적화, 관리에 용이하게 기능 단위로 분할하는 기법
2. 모듈화의 원리
- 정보 은닉 : 어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐한다는 원리
- 분할과 정복 : 복잡한 문제를 분해, 모듈 단위로 문제 해결한다는 원리
- 데이터 추상화 : 각 모듈 자료 구조를 액세스하고 수정하는 함수 내에 자료 구조의 표현내역을 은폐
- 모듈 독립성 : 낮은 결합도와 높은 응집도
(5) 결합도
1. 결합도 개념
- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성을 나타내는 정도
2. 결합도의 특징
- 모듈 연관성 없음 : 서로 다른 상위 모듈에 의해 호출되어 처리상 연관성이 없는 다른 기능을 수행
- 인터페이스 의존성 : 자료전달이 인터페이스를 통과하여 인터페이스 복잡성에 의존적
- 복잡성 감소 : 낮은 결합도를 통해 복잡성을 감소
- 파급효과 최소화 : 에러 발생 시 오류가 전파되어 다른 오류의 원인이 되는 파급효과를 최소화
3. 결합도의 유형
유형 | 설명 |
내용 결합도 | 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도 |
공통 결합도 | 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도 |
외부 결합도 | 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도 |
제어 결합도 | 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우의 결합도 |
스탬프 결합도 | 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도, 동일한 자료구조 |
자료 결합도 | 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 결합도 |
(6) 응집도
1. 응집도의 개념
- 응집도는 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도
- 하나의 모듈은 하나의 기능을 수행
2. 응집도의 특징
- 유사기능 영역구성 : 클래스 목적에 부합하는 같은 기능영역의 함수들로 구성
- 단일 책임할당 : 함수의 개수가 상대적으로 적고 오로지 자신만이 할 수 있는 책임을 할당받음
- 함수 간 상호협력 : 하나의 함수에 많은 기능을 넣지 않고 다른 함수와 협력
3. 응집도의 유형
우연적 응집도 : 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도
논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리요소들이 한 모듈에서 처리되는 경우의 응집도
시간적 응집도 : 연관된 기능이라기볻는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
통신적 응집도 : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
순차적 응집도 : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
기능적 응집도 : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도
'정처기(필기) > 프로그래밍언어활용' 카테고리의 다른 글
프로세스 스케줄링 (0) | 2022.06.10 |
---|---|
운영체제, 메모리 관리 (0) | 2022.06.09 |
언어특성 활용, 라이브러리 (0) | 2022.06.08 |
기본문법 (0) | 2022.06.08 |
서버 프로그램 구현 (0) | 2022.06.07 |