4. 프로그래밍 언어 활용
4.1 서버프로그램 구현
4.1.1 서버프로그램 구현 능력단위 정의
4.1.2 개발환경구축
4.1.3 공통모듈구축
- 서버프로그램 구현 능력단위 정의
서버프로그램 구현이란 애플리케이션 설계를 기반으로 개발에 필요한 환경을 구성하고, 프로그래밍 언어와 도구를 활용하여 공통모듈, 업무프로그램 배치 프로그램을 구현하는 능력이다.
1.개발환경 구축
1.1 개발환경 구축의 이해
서버프로그램 구현을 위한 첫번째 시작은 개발에 필요한 환경을 구성하는 일이다. 개발환경 구성 시 구현될 요구사항의 명확한 이해가 필요하며, 이에 맞는 개발도구 및 서버의 선정이 이루어져야 한다. 또 개발에 사용되는 도구들의 사용 편의성과 성능, 라이선스 등에 대한 내용도 파악해야 한다.
1.2 개발을 위해 사용되는 도구의 분류와 특성
개발 환경 구성을 위한 도구들의 분류는 아래와 같이 크게 4가지로 가능하며 각각의 내용과 사용되는 도구들을 이해해야 한다.
구현도구 Eclips ,visual studio cade
테스트도구 xUnit, Spring teset
형상관리도구 CVS, Subversion, Git
빌드도구 Ant, Maven, Gradle
1. 구현 도구
코드의 작성과 디버깅, 수정 등과 같은 여러가지 작업이 가능하며 구현해야 할 소프트웨어가 어떤 프로그래밍 언어로 개발되는지에 따라 선택하여 사용하며 프로그램을 개발할 때 가장 많이 사용되는 도구이다.
2. 빌드 도구
작성한 코드에 대한 빌드 및 배포를 수행하며, 각각의 구성 요소들과 모듈들에 대한 의존성 관리를 지원하는 도구이다.
3. 테스트 도구
코드의 기능 검증과 전체의 품질을 높이기 위해 사용되는 도구들로 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업이 가능하다.
4. 형상관리 도구
개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위해 형상관리 도구가 사용된다. 프로젝트 진행시 필수로 포함되는 도구들이다.
1.3 개발환경 구축 시 구성 요소
개발환경 구성은 크게 하드웨어와 소프트웨어 환경으로 구성되며 형상관리 등 다양한 요소로 되어있다. 하드웨어와 소프트웨어 구성 시 유의점은 추후 운영할 환경도 고려하여 구성해야 한다는 것이다.
1. 하드웨어 환경
서버 환경 : 프로젝트 및 개발 구성에 따라 애플리케이션 서버, 데이터베이스 서버, 파일 서버 등으로 구분한다.
웬 서버
HTTP를 이용한 요청/응답을 처리 하기 위한 미들웨어를 설치하는 서버이다. 주로 웹 브라우저 화면에서 요청하는 서비스를 처리하기 위해 ,HTML,CSS 이미지 등을 제공하는 웹 서버 애플리케이션의 처리를 담당한다.
웹애플리케이션 서버
웹 서비스를 동적으로 제공하기 위해 WAS의 형태인 Resin, Tomcat등 과 서비스에 관련된 애플레케이션이 설치되는 서버이다.
데이터베이스 서버
데이터의 수집, 저장을 위한 용도로 MySQL., Oracle, Ms-SQL 등 데이터베이스의 SW에 설치되어 있다.
파일 서버
파일 저장 하드웨어로 물리적 저장장치를 활용한 서버이다. 대용량 HDD,SDD 등 장치가 주요 요소이다.
클라이언트 환경 : 위의 서버환경에서 제공되는 서비스를 사용하기 위해 유저의 인터페이스를 제공하는 하드웨어 이다.
Client Server 화면
주로 설치를 통해 사용자와 커뮤니케이션 하는 화면들이다. Visual Basic, C#,Delphi 등으로 개발되어 사용자에게 배포된다.
웹브라우저 화면
웹서비스의 형태로 서버에서 웹 어플리케이션을 응답시 브라우저를 통해 사용자와 커뮤니케이션을 한다.
스마트폰
CS화면과 유사하지만 모바일 디바이스에 설치되어 사용자가 활용한다. 웹앱의 경우 웹브라우저와 동일한 형태로 모바일 상 웹브라우저를 통해 서비스를 받는다.
2. 소프트웨어 환경
개발을 위한 기본적인 소프트웨어 환경을 선택 및 구성한다. 프로젝트의 성격과 요구사항에 부합한 운영체제, 언어의 선택에 적절한 미들웨어, 그리고 데이터베이스시스템을 설치한다.
운영체제
운영체제는 서버의 하드웨어를 사용자 측면에서 편리하고 유용하게 사용하기 위한 SW이다.
미들웨어
개발을 위한 보조 SW로서 웹서버나 JVM 같은 개발환경의 구성요소로 활용한다. 웹서비스 경우 웹서버를 설치하여 사용자 요구사항에 적합한 웹서비스를 제공한다. JAVA를 활용한 개발의 경우 JVM을 설치하여 컨테이너로의 기능을 이용한다.
DBMS
데이터의 저장과 활용을 위해 데이터베이스 시스템을 설치하고 고객사의 요청과 요구사항에 따라 제품을 선택한다.
3. 형상관리
형상관리란 소프트웨어의 개발을 위한 전체과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동이다.
형상 식별
형상관리 대상을 정의, 식별하고 해당 항목에 추적성을 부여하기 위해 ID와 관리번호를 부여한다. 추후 변경에 관련된 이슈 발생 시 ID와 관리번호를 이용하여 추적한다. 이러한 활동은 베이스라인의 기준이 된다.
변경 제어
형상항목으 버전관리를 위해 형상통제위원회를 두어 변경요구, 영향도분석, 검토, 승인 등 변경절차를 통한 통제를 수행하여 베이스라인에 대한 관리와 형상에 대한 통제를 수행할 수 있도록 한다.
형상 상태 보고
형상의 통제와 관련된 결과를 관리하고 보고서로 작성하는 활동이다. 베이스라인의 상태에 대한 판단의 기준이 된다.
형상 감사
감사활동을 통해 형상 통제의 확인, 검증과 베이스라인의 무결성을 평가하는 활동을 말한다.
1.4 개발환경 구축 순서
프로젝트 요구사항 분석
개발환경 구성을 위한 필요 도구 설계
개발 대상에 따른 적정한 개발 언어 선정
개발 언어와 하드웨어를 고려한 구현도구 구축
빌드와 테스트 도구 구축
1. 개발환경 준비를 위해 프로젝트의 요구사항을 분석한다.
대상이 되는 시스템의 요구사항을 분석하여 어떠한 도구들이 필요한지 준비하는 과정이다.
시스템의 환경을 분석하여 개발환경 구축에 필요한 도구에 대해 파악한다.
2. 개발 환경 구성을 위한 필요도구를 설계한다.
개발을 해야할 구현도구, 빌드도구, 테스트도구, 형상관리도구 등 요구사항에 맞는 시스템을 구축하기 위한 환경을 설계한다.
3. 개발 대상에 따른 적절한 개발 언어를 선정한다.
적정성 : 개발하고자 하는 시스템이나 응용 프로그램의 목적에 적합한가
효율성 : 개발 대상을 효율적으로 구현이 가능한가
이식성 : 여러가지 디바이스와 운영체제에 적용 가능한가
친밀성 : 대중의 프로그래멍가 사용 가능한 언어인가.
범용성 : 다수의 시스템에서 사용중이며 많은 과거의 사례가 존재하는가
사용자의 요구사항과 개발 대상의 업무의 성격에 적합한 특성을 확인하고 컴파일러의 사용성을 고려하여 적합한 언어를 선정한다.
개발 대상의 업무의 성격에 적합한 특성을 확인하고 적합한 언어를 선정한다. 예로 대상업무가 웹을 이용한 고객 서비스의 경우 적합한 JAVA,JSP 및 JavaScript/HTML을 server와 client 개발언어로 선정한다.
4. 프로젝트의 성격과 개발자 편의성을 위한 구현도구를 선정한다
위의 선정된 개발언어에 따라서 적합한 구현도구를 선정한다. 예로 Java로 개발언어가 선정되었다면 이클립스를 주로 이용하여 구현하며 C# VB등의 경우 비쥬얼 스튜디오를 활용할 수 있다.
5. 프로그램의 배포 및 라이브러리 관리, 테스트를위한 빌드 테스트 도구를 선정한다.
프로젝트 팀원의 빌드 도구의 친밀도와 숙련도를 고려하여 빌드 도구와 형상관리 도구를 고려하고 통합 개발 도구와 호환이 가능한 도구를 선정한다.
테스트도구의 경우 MTP에 적합하게 계획에 따라 필요한 도구를 선정한다. 온라인 트랜잭션이 빈번한 개발 대상인 경우 테스트자동화 도구를 고려하여 품질 향상에 기여한다.
2. 서버 개발 프레임워크
2.1 프레임워크에 대한 이해
소프트웨어 프레임워크는 효율적인 정보 시스템 개발을 위한 코드 라이브러리, 애플리케이션 인터페이스, 설정 정보 등의 집합으로서 재사용이 가능하도록 소프트웨어 구성에 필요한 기본을 제공하며 정보시스템의 개발 및 운영을 지원하는 도구 및 가이드 등을 포함한다.
2.2 프레임워크의 특징
프레임워크는 모듈화, 재사용성, 확장성 ,제어의 역흐름이라는 대표 4가지 특징을 보유한다.
모듈화 : 인터페이스에 의한 캡슐화를 통해 모듈화를 강화하고 설계와 구현의 변경에 따르는 영향을 극소화하여 소프트웨어의 품질을 향상시킨다.
재사용성 : 프레임워크가 제공하는 인터페이스는 반복적으로 사요할 수 있는 컴포넌트를 정의할 수 있게하여 재사용성을 높여준다.
확장성 : 프레임워크는 다형성을 통해 애플리케이션이 프레임워크의 인터페이스를 확장할 수 있게 한다.
제어의 역흐름 : 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 다형성을 통해 애플리케이션이 확장한 메소드를 호출함으로써 제어가 프레임워크로부터 애플리케이션으로 거꾸로 흐르게 한다.
2.3 서버 프로그램을 구현하기 위한 서버개발 프레임워크
서버 개발 프레임워크는 대표적인 예로 Java를 이용하는 Spring 프레임워크가 있으며 Python의 diango, Javascript의 Node.js 등이 있다.
목표 대상 시스템의 하드웨어와 요구사항을 분석하여 개발 언어와 구현도구를 선정함과 유사하게 서버 개발 프레임워크를 선정한다.
-공통 모듈 구현
1. 재사용
기존의 소프트웨어 또는 소프트웨어 지식을 활용해, 새로운 소프트웨어를 구축하는 일이다.
1.1 재사용의 이해
1. 재사용의 개념
재사용가능한 소프트웨어나 소프트웨어 지식은 재사용 가능한 자산이다. 자산에는 설계, 요구명세, 검사, 아키텍처 등도 포함된다.
2. 코드 재사용
가장 잘 알려져 있는 재사용 가능 자산은 코드이다. 코드 재사용은 어떤 시점에 쓰여진 프로그램의 일부 또는 전부를 이후의 다른 프로그램을 만들때 사용하는 것이다. 코드의 재사용은 장황한 작업에 소비하는 시간과 에너지를 절약하는 전형적 기법이다.
3. 재사용 프로그래밍 기법
재사용을 빠르고 용이하게 하기 위해 프로그래밍 정식 절차의 일부로서 보다 체계적으로 실시할 수 있도록하는 연구가 많이 이루어져 왔다.
객체지향 프로그래밍 기법
객체 단위로 재사용이 이루어지도록 설계하여 구조화된 구현이 가능하다.
제네릭 프로그래밍
데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다.
자동프로그래밍
프로그램이 사용자가 설정한 일련의 변수에 근거하여 어떤 종류의 프로그램을 생성하는 것이다.
메타프로그래밍
자기 자신 혹은 다른 컴퓨터 프로그램을 데이터로 처리함으로써 프로그램을 자성, 수정하는 프로그램을 작성하는 것을 말한다.
1.2 재사용의 유형
1. 편의점 재사용
프로젝트를 시작할 때 재사용가능한 컴포넌트가 있는지를 찾아보고 재사용한다.
편의적 재사용은 다음으로 더 세분화할 수 있다.
내부 재사용
팀내에서 만든 콤포넌트를 재사용한다. 어디까지나 편의상이며 계획적인 것이 아니기 때문에, 인터페이스의 조정 등에 추가적인 비용이 발생할 수 있다.
외부 재사용
서드파티에서 만든 콤포넌트를 구하여 사용한다. 유상인 경우, 조달비용을 자신이 직접 개발할 때 드는 비용이 20%이하로 잡는 것이 일반적이다. 또, 조달한 콤포넌트를 학습하여 활용하는데 걸리는 시간도 고려해야한다.
2. 계획적 재사용
컴포넌트를 차후에 재사용가능하도록 전략적으로 설계해 나간다.
1.3 재사용의 사례
1. 소프트웨어 라이브러리
코드 재사용의 매우 일반적인 예로서 라이브러리를 사용하는 것이다.
2. 디자인 패턴
디자인 패턴은 비슷한 문제를 풀기 위한 범용적인 해법이다.
3. 프레임 워크
개발자는 일반적으로 타사 응용 프로그램 및 프레임 워크를 통해 많은 소프트웨어를 재사용한다.
프레임워크는 대개 도메인 마다 다르고 응용 프로그램 그룹에 적용 할 수 있다.
2. 모듈화
2.1 모듈의 개요
프로그램을 구성하는 구성 요소의 일부로 관련도니 데이터와 함수들이 묶여서 모듈을 형성한다. 주로 파일 단위로 구성된다.
2.2 모듈화의 원리
1. 분할과 지배
복잡한 문제를 분해, 모듈 단위로 문제 해결한다.
2. 정보 은폐
어렵거나 변경 가능성이 있는 모듈을 타모듈로부터 은폐한다.
3. 자료추상화
각 모듈 자료구조를 액세스하고 수정하는 함수내에 자료 구조의 표현 내역을 은폐한다.
4. 모듈의 독립성
낮은 결합도와 높은 응집도를 가진다.
2.3 모듈화 측정 척도
모듈화는 공통모듈의 구현을 위해 재사용성 강화를 위한 중요한 개념이다. 모듈은 내부처리요소간의 독립성을 나타내며 응집도가 높을수록 좋고 모듈간의 연관성은 루즐리커플로 구현할 수 있는 결합도가 낮을수록 좋다.
2.4 모듈화의 종류
1. 설계측면
모듈
설계 시 관련이 있는 기능을 모아 한 부분에 모아놓고 라이브러리 형태로 사용된다.
컴포넌트
바이너리형태의 재사용 가능한 형태로 인터페이스에 의해 로직을 수행 할 수있는 모듈단위를 말한다.
소프트웨어 재사용과 관련하여 객체들의 모임, 대규모 재사용 단위이다.
서비스
기존 컴포넌트 보다는 루즐리 커플드 한 형태의 기능을 제공하는 모듈단위 이다.
2. 구현 측면
매크로
프로그램 구현 시 반복되는 부분을 특정 이름을 부여하고 이름을 호출하여 실행할 수 있도록 하는 프로그래미이 기법, 단 전처리기는 매크로가 사용된 모든 곳에 코드를 대체해 놓는다.
함수
프로그램 구현시 커더란 프로그램의 일부코드로 특정한 작업을 수행하고 상대적으로 다른 코드에 비해 독립적인 모듈이다.
인라인
프로그램 구현 시 반복되는 부분을 특정 이름을 부여해 놓고 이름을 호출하여 실핼 할 수있도록 하는 프로그램 기법. 단 컴파일러는 이 inline이 사용된 모든 곳에 코드를 복사한다.
3. 결합도
3.1 결합도의 개요
모듈내부가 아닌 외부의 모듈과의 연관도이다.
소프트웨어 구조에서 모듈간의 관련성을 측정하는 척도이다.
3.2 결합도의 특징
서로 다른 상위 모듈에 의해 호출되어 처리 상 연관성이 없는 서로 다른 기능을 수행한다.
3.3 결합도 단계
자료 : 모듈들이 간단히 변수를 파라미터로 교환한다.
스탬프 : 모듈 사이에 자료구조 교환한다.
제어 : 제어용 신호를 주고 받는다.
외부 : 모듈들이 소프트웨어의 외부환경과 연관되는 사용된다.
공통 : 많은 모듈들이 전역변수를 참조할 때 발생한다.
내용 : 한 모듈이 다른 모듈의 내부자료나 제어정보를 사용한다.
결합도는 낮을수록 좋다.
4. 응집도
4.1 응집도의 개요
정보은닉 개념의 확장개념으로, 하나의 모듈은 하나의 기능을 수행하는 집적성을 지칭한다.
모듈의 독립성을 나타내는 개념으로 모듈내부 구성원간의 연관도이다.
4.2 응집도의 특징
클래스 목적에 부합하는 같은 기능영역의 함수들로 구성되어 있다.
함수의 개수가 상대적으로 적으며 오로지 자신만이 할 수 있는 책임을 부여 받는다.
하나의 함수에 많은 기능을 부여 하지 않고 다른 함수와 협력한다.
4.3 응집도의 단계
우연적 : 아무 관련성 없는 작업을 한 모듈에서 모음
논리적 : 유사한 성격의 작업들을 모음
시간적 : 같은 시간대에 처리되어야 하는 것들을 모음
절차적 : 모듈진행 요소들이 서로 관계되어지고 순서대로 진행
교환적 : 동일한 입출력 자료를 이용하여 서로 다른 기능을 수행하는 기능
순차적 작업의 결과가 다른 모듈이 입력자료로 사용
기능적 : 하나의 기능만 수행하는 모듈
응집도는 높을수록 좋다.
모듈내부의 독립성을 보장하기 위해 단 하나의 기능만을 구현하는 것을 말한다.
'자격증 > 정보처리기사' 카테고리의 다른 글
| 정보처리기사 36일차 (0) | 2021.02.18 |
|---|---|
| 정보처리기사 35일차 (0) | 2021.02.13 |
| 정보처리기사 33일차 (0) | 2021.02.11 |
| 정보처리기사 32일차 (0) | 2021.02.10 |
| 정보처리기사 31일차 (0) | 2021.02.10 |