성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

[01 소프트웨어 구축] 06 서버 프로그램 구현 본문

Diary/정보처리기사

[01 소프트웨어 구축] 06 서버 프로그램 구현

hyemi_flora 2024. 4. 22. 12:21

* 협업도구 : 여러 사용자가 각자의 작업 환경에서 통합된 프로젝트를 동시해 수행하도록 하는 소프트웨어

* 형상 관리도구
- 소프트웨어 개발과정에서 발생하는 모든 변경을 통제하고 관리하는 방법
- 변경관리  ( 소스코드의 변경사항관리 ) < 버전관리 ( 체크인/체크아웃 릴리즈 등 버전으로 관리) < 형상관리 ( 변경관리와 버전관리를 포함한 프로젝트 진행상황, 빌드, 릴리즈 등 전체적으로 관리하는 것)

* 형상관리 절차 : 식통감기!
- 형상식별 : 관리해야할 항목을 구분
- 형상통제 : 변경요청을 검토하고 CCB(형상통제 위원회)의 승인을 거쳐 베이스라인에 반영
- 형상감사 : 변경에 대한 검토
- 형상기록 : 변경 사항과 처리과정 기록

* 형상관리 도구 : CVS, SVN, GIT

*버전관리 도구 사용방식 (== 형상관리 도구 사용방식)
- 저장소 (Repository)
- import  : 개발자가 최초의 한번 실행하여 가지고 있던 프레임워크(공통모듈, 핵심모듈 등) 소스코드를 저장소에 적용
- check out : Import 된 데이터를 다른 개발자들이 저장소에서 가져가는 것 
- add commit : 새로 만들어진것은 add, 저장소에 저장된 데이터가 수정되었을 때 commit (= check in)
- update : add 또는 commit 된 것을 그때 그때 내려받는 것
- trunk : 
- branch : 현재 시점의 트렁크에서 가지를 분리해서 개발 진행
- merge : 브런치 하여 개발한 소스를 기존 트렁크에 합치는 것 

*빌드도구 : 실행 가능한 소프트웨어로 변환해 주는 도구
1> Make : Unix계열
2> Ant : Java 기반, XML기반의 빌드 스크립트사용
3> Maven : 의존성관리와 프로젝트 라이프사이클 관리
4> Jenkins : Java기반 오픈소스, Groovy기반
5> Gradle : Groovy기반, 안드로이드기반 개발에서 주로 사용 

* 프레임워크 : 개발에 필요한 반제품 형태의 소프트웨어

* 프레임워크  특징 : 모듈화(Modulatity), 재사용성(Reusability), 확장성(Extensibility), 제어의 역흐름(Inversion of Control)

* Java 프레임워크 : 전자정부 프레임워크, 스트럿츠, 스프링

* ORM 프레임워크 : 아이바티스, 마이바티스, 하이버네이트 

* 라이브러리(Library) : 프로그램에서 자주사용되는 리소스(클래스, 템플릿, 데이터 등) 모아 놓은 것
- 내부 라이브러리 : 프로그래밍 언어에서 기본적으로 제공해 주는 것
- 외부 라이브러리 : 개발자들이 기능을 개발하여 제공해주는 것

* API (Application Programming Interface) : 소프트웨어끼리 또는 서비스와 상호작용하는 인터페이스, 기능들을 의미
- B-E 개발자가 프레임워크와 라이버리를 이용해서 API형태로 개발(사용설명서) 하면 
F-E개발자가 API를 활용해서 화면을 만든다.

* 결합도 및 응집도 : 모듈의 독립성을 높여 효과적으로 모듈화 하기 위해 사용한다.
-> 응집도(Cohesion)을 높이고, 결합도(Coupling)을 낮춰야한다.

* 결합도 유형 
- 자료결합도 (이터 결합도 Data Coupling) :결합도가 가장 낮은것, 값 전달
- 탬프 결합도(Stamp Coupling) : 배열 전달
- 어 결합도 (Control Coupling) : 제어요소 전달
- 부 결합도 (External Coupling) : 다른 모듈 변수 전달
- 통 결합도 (Common Coupling) : 전역변수 사용
- 용 결합 (Content Coupling) : 다른 모듈 기능 전달

* 응집도 유형
- 기능적 응집도 (Functional Cohesion) : 응집도가 가장 높은 것,  단일한 목적 수행, 모듈 내부에 있는 소스코드 내용들이 하나의 목적을 위해 뭉쳐있는것!
- 순차적 응집도 (Sequential Cohesion) : 출력값을 입력값으로 사용, 순차적으로 처리되는것이아님! 모듈 내부에서 하나의 활동값으로 나온 출력값을 다음 입력값으로 사용하는 것 
- 통신적 응집도 (Communication Cohesion): 동일한 입/출력
- 절차적 응집도 (Procedural Cohesion): 순차적 수행
- 시간적 응집도 (Temporal Cohesion): 같은 시간 기능 수행
- 논리적 응집도 (Logical Cohesion) : 유사한 성격 
- 우연적 응집도 (Coincidental Cohesion) : 연관관계 없음

* 팬인(Fan-in), 팬아웃(Fan-out)
- 모듈의 복잡도와 상호작용을 분석하는 지표
- 나에게 들어온 것 : 팬인, 나에게서 나간것 : 팬 아웃

* MVC 모델 계층 (Model View Controler)
- 프레젠테이션 계층 (Presentation Layer) : 사용자 인터페이스 / 뷰단
- 제어 계층 (Cotrol Layer): 요청을 분석하고 적절한 비지니스 로직 호출
- 비지니스 로직 계층 (Business Logic Layer) : 실제 업무로직을 처리 / 제어 + 비지니스 : 컨트롤러단
- 퍼시스턴스 계층 (Persistence Layer): 데이터관리, DB 연결 등등
- 도메인 모델 계층 (Domain Model Layer): 데이터 담은 덩어리, 데이터를 담아 넘길 덩어리, 데이터를 전달하는 것

* 시큐어 코딩  OWASP(The Open Web Application Security Project) : 오픈소스 웹 어플리케이션 보안 프로젝트
- 키 사에서 다운로드 가능, 시큐어코딩 가이드에 따라 개발하면 시큐어 코딩이라고 한다.

* 시큐어 코딩 가이드
- 보안취약점을 제거해 안전한 소프트웨어를 개발하는 SW개발 기법
1) 입력 데이터 검증 및 표현 : SQL Injection, XSS 등
2) 보안 기능 : DES,MD5 같이 깨진 알고리즘은 사용하지 말기, 패스워드 평문 저장 등
3) 시간 및 상태 : 종료되지 않은 반복문
4) 에러 처리 : 오류메시지 정보노출
5) 코드 오류 : 널 포인터 역참조
6) 캡슐화 : 캡슐화 잘못하였을때
7) API오용 

* 배치 프로그램 : 실시간과 반대의미, 데이터를 모아서 일괄로 처리

* 배치 프로그램 필수요소 : 대용량 데이터, 자동화, 견고함, 안정성, 성능