최초 작성일: 2024-10-06
최종 작성일: 2024-10-06
목표 : 정처기 합격 및 CS 지식 쌓기
소프트웨어 구축
1. 서버환경 구축
(1) 웹서버(web) – 정적인것(이미지,CSS,HTML등)
(2) 웹 애플리케이션 서버(WAS) – 동적인것 (게시판에서 DB에서 긁어서 보여줘)
(3) 데이터베이스 서버
(4) 파일서버
(5) Load Balancer(random, least Loaded, round robin) – L4장비
(6) CDN(Content Delivery Network) – 영상이나 이런 것을 분산
(7) 시스템 아키텍처 고려사항 (물리적인 것)
확장성 (scalability)
성능 (performance)
응답시간 (response time)
처리량 (throughout)
접근성 (accessibility)
일관성 (consistency)
보안 (security)
2. 개발 소프트웨어 환경
(1) 시스템 소프트웨어
1) 운영체제
2) JVM
3) 웹 서버– 아파치 등
4) WAS
5) DBMS
(2) 개발 소프트웨어
1) 요구사항 관리 도구 (게시판) : JFeature,
2) 설계/모델링 도구
3) 구현도구 :
4) 테스트 도구 :
5) 형상관리 도구 : git, CVS, SVN 등
6) 협업 도구 :
7) 배포 도구 : 젠킨슨, Travis CI, 레이븐, 앤트 등
3. IDE(Integrated Development Environment) 도구
(1) 개념 : 소프트웨어 개발에 필요한 다양한 기능을 하나의 프로그램 내에서 제공하는 소프트웨어
(2) IDE 도구의 종류 : 이클립스, 비쥬얼 스튜디오, Xcode, IntelliJ IDEA
(3) 도구 선정 시 고려 사항 : 적정성, 효율성, 이식성, 친밀성, 범용성
4. 협업 도구
(1) 개념 : 여러 사용자가 각자의 작업 환경에서 통합된 프로젝트를 동시에 수행할 수 있도록 지원하는 소프트웨어
(2) 기능 : 전사 관리, 프로젝트 관리, 드라이브 공간, 문서 공유 등
(3) 협업 도구 도입 프로세스
문제 정의
솔루션 및 기대효과 정의
협업 도구 분석
협업 도구 최종 선정
5. 형상 관리 도구(변경 관리 + 버전 관리)
(1) 개념 : 소프트웨어 개발 과정에서 발생하는 모든 변경 사항을 통제하고 관리하는 방법
(2) 변경관리/ 버전 관리/ 형상 관리
1) 변경 관리 : 소스코드의 변경 사항을 관리
2) 버전 관리 : 체크인/체크아웃, 릴리즈, 퍼블리싱 등을 버전으로 관리
3) 형상 관리 : 변경 관리와 버전 관리를 포함하며, 프로젝트 진행 상황, 빌드, 릴리즈까지 관리
(3) 형상 관리 절차 (식도감기)
1) 형상 식별 : 관리해야 할 항목을 구분하고 번호나 태그 부여
2) 형상 통제 : 변경 요청을 검토하고 형상 통제 위원회(CCV)의 승인을 거쳐 현재의 기준선(베이스라인)에 반영
3) 형상 감사 : 변경에 대한 검토
4) 형상 기록 : 변경 사항과 처리과정을 기록
6. 버전 관리 도구
(1) 개념 : 소스코드와 문서 등의 디지털 콘텐츠에 대한 여러 버전을 관리한다
(2) 도구 유형
1) 공유 폴더 방식 (RCS, SCCS)
2) 클라이언트/서버 방식(CVN,SVN)
3) 분산 저장소 방식 (GIT)
(3) 버전관리 소프트웨어 사용 방식
(4) 버전 관리 주용 용어
Repository : 저장소
Checkout : import 된 데이터 내려받기
Commit : 변경된 소스코드 반영
Update : 변경된 소스코드 받는 것
Add : 파일 새로 추가
Trunk : 주 프로젝트
Branch : 가지
Merge : 합치는 것
Diff : 두개의 소스코드가 다른 경우 비교하는 것
7. 빌드 도구
(1) 빌드 개념 : 소스 코드 파일들을 컴파일하고, 다른 필요한 과정들을 거쳐 실행 가능한 소프트웨어로 변환하는 일련의 과정
(2) 빌드 자동화 도구 종류
1) Make : 유닉스 계열 운영체제에서 주로 사용
2) Ant : 자바 기반의 빌드도구로 XML 기반의 빌드 스크립트를 사용
3) Maven : 의존성 관리 ( 참조하는 외부 라이브러리의 관리)와 프로젝트 라이프 사이클
4) Jenkins : 자바 기반의 오픈소스 지속적 통합 서비스 도구
5) Grandle : 그루비 기반의 오픈소스 빌드 자동화 도구(안드로이드 개발)
8. 프레임워크 (frame – 틀, 라이브러리 – 언어에 특화된 함수 혹은 모듈, api형태로 개발)
(1) 개념 : 소프트웨어 개발에 필요한 공통적인 구성요소와 아키텍처를 일반화하여 제공하는 반제품 형태의 소프트웨어
(2) 특징
모듈화
재사용성
확장성
제어의 역흐름 (inversion of control) : 이 제어를 프레임워크가 관리하는 것
(3) 프레임워크의 구분
1) 자바 프레임워크 : 전자 정부 프레임 워크(스프링 기반), 스프링
2) ORM 프레임 워크(객체가 데이터베이스를 다루기 위한것) : 아이바티스, 마이바티스, 하이버네이츠
3) 자바 스크립트 프레임워크 : 앵귤러제이에스, React JS, node.JS(서버 프로그램 역할까지 함)
4) 프론트엔드 프레임워크(CSS역할 수행) : 부트스트랩, Foundation, MDL
9. 라이브러리
컴퓨터 프로그램에서 자주 사용되는 루틴이나 리소스(클래스, 템플릿, 설정 데이터 등)를 모아 놓은 것
10. API(Application Programming Infertace)
소프트웨어 간 인터페이스로 다른 소프트웨어 또는 서비스와 상호작용하는데 사용된다
모듈 구현
1. 단위 모듈 구현
(1) 구현의 개념
소프트웨어를 기능 단위로 분해하여 개별적으로 구현하는 기법
(2) 효과적인 모듈화
결합도(커플링)를 낮추고 응집도(conhension)를 높임
Fan-out 최소화, fan-in 증가
2. 결합도
(1) 개념 : 모듈 과 모듈 간의 관련성/의존성 정도
(2) 유형 (데스형 제 외 저래 공 유랑 내가 닮았다니)
1) 자료 결합도 (data coupling) : 값 전달 (좋은 것)
2) 스탬프 결합도 (stamp coupline) : 배열, 포인터 등 전달
3) 제어 결합도 : 제어 요소 전달
4) 외부 결합도 : 다른 모듈 변수 사용
5) 공통 결합도 : 전역 변수 사용
6) 내용 결합도 : 다른 모듈 기능 이용 (나쁜 것)
3. 응집도(cohension)
(1) 개념 : 모듈 내부에서 구성요소 간에 밀접한 관계를 맺고 있는 정도
(2) 유형 ( 우 논 시 절 통 순 기)
1) 기능적 응집도 : 단일한 목적 수행 (좋은 것)
2) 순차적 응집도 : 출력값을 입력값으로 사용
3) 통신적 응집도 : 동일한 입력, 출력
4) 절차적 응집도 : 순차적 수행
5) 시간적 응집도 : 같은 시간 기능 수행
6) 논리적 응집도 : 유사한 성격
7) 우연적 응집도 : 연관 관계 없음 (나쁜 것)
4. Fan-in, fan-out
(1) 개념 : 모듈의 복잡도와 상호작용을 분석하는 데 사용되는 지표
5. 공통 모듈 구현
(1) 순서 : 상세 설계 확인 -> 공통 모듈 상세 문서와 매핑된 공통 모듈 구현
(2) 공통모듈 구현: dto/vo 구현 -> sql문 구현 (xml) -> dao 구현 -> service 구현 -> controller 구현 (실제 비즈니스 로직이 만들어짐)
(3) 공통 모듈 구현 요소
DTO(값을 담아둘 수 있는 그릇, Data Transfer Object) : 데이터를 전송하는 객체
VO(Value Object) : 특정 값을 나타내는 객체
DAO(Data Access Object) : DB에 접근하는 객체
Service: DAO 클래스를 호출
Controller: 비즈니스 로직을 수행
(4) Annotation
1) 개념 : 사전적으로 주석 이라는 의미를 가지고 있다/ 자바 코드에 주석처럼 달아 특수한 의미를 부여한다/ 컴파일 또는 런타임에 해석된다
서버 프로그램 구현
1. 서버 프로그램 구현
(1) 업무프로세스 확인
1) 개념 : 개인이나 조직이 자원을 입력하여 가치 있는 산출물을 제공하는 일련의 활동
2) 업무 프로세스 구성 요소
프로세스 책임자
프로세스 맵
Task 정의서
성과 지표
프로세스 조직
경영자의 리더십
(2) 서버 프로그램 구현 : 업무 프로세스를 기반으로 서버에서 서비스를 제공하는 기능을 개발하는 활동
(3) MVC(Model View Controller) 모델의 계층
1) 프레젠테이션 계층 : 사용자 인터페이스
2) 제어 계층 : 요청을 분석하고 적절한 비즈니스 로직 호출
3) 비즈니스 로직 계층 : 핵심 업무 로직을 처리
4) 퍼시스턴스 계층 : 데이터 관리
5) 도메인(값의 덩어리) 모델계층 : 데이터를 전달
DBMS 접속 기술
(1) 개념 : 프로그램에서 데이터베이스에 접근하여 DML을 사용할 수 있게 하는 기술
(2) 접속 기술 종류 : 소켓 통신, Vendor API, JDBC(Java Data Base Connectivity), ODBC(Open Data Base Connectivity)
ORM (Object-Relational Mapping) 프레임 워크
(1) 개념 : 객체 지향 프로그래밍과 관계형 데이터 베이스 간의 호환성 격차를 해결하기 위한 프로그래밍 기법
(2) 매핑 기술 비교
1) Sql mapper :SQL을 명시하여 단순히 필드를 매핑시키는 것이 목적(단순히 데이터 매핑 기능 수행)/ 종류 : 아이바티스, 마이바티스, JDBC template 등
2) OR Mapping(ORM) : 실질적인 ORM/ 객체를 통해 간접적으로 데이터베이스를 다룬다/ 종류: JPA(Java persistent API), Hibernate
시큐어 코딩
(1) OWASP(Open Web Application Security Project) : 오픈 소스 웹 애플리케이션 보안 프로젝트
(2) 시큐어 코딩 가이드
1) 개념 : 해킹 등 사이버 공격의 원인인 보안 취약점을 제거해 안전한 소프트웨어를 개발하는 SW 개발 기법
2) 시큐어 코딩 가이드 항목
① 입력 데이터 검증 및 표현
SQL Injection
XSS(크로스 사이트 스크립트)
자원 삽입
위험한 형식 파일 업로드
명령 삽입
메모리 버퍼 오버프로
② 보안 기능
적절한 인증없이 중요기능 허용
부적절한 인가
취약한 암호화 알고리즘 사용
하드코딩된 패스워드
패스워드 평문 저장
취약한 패스워드 허용
③ 시간 및 상태 (우리가 동시에 처리 되니)
경쟁 조건
종료되지 않는 반복문 또는 재귀 함수
④ 에러 처리
오류 메시지 정보 노출
오류 상황 대응 부재
부적절한 예외 처리
⑤ 코드 오류
널 포인터 역 참조
부적절한 자원 해제
해제된 자원 사용
초기화 되지 않은 변수 사용
⑥ 캡슐화
잘못된 세션에 의한 정보 노출
제거되지 않은 디버그 코드
시스템 정보 노출
잘못된 접근 지정자
⑦ API 오용
DNS에 의존한 보안 결정
취약한 API 사용
배치 프로그램 구현
배치 프로그램
(1) 배치의 개념 : 데이터를 일괄적으로 모아서 처리하는 대량의 작업을 처리
(2) 배치 프로그램의 필수 요소 : 대용량 데이터, 자동화, 견고함, 안전성, 성능
(3) 스케쥴 관리 종류
1) 크론탭(Crontab) : 유닉스, 리눅스 계열에서 사용/ 시간을 지정해 특정 명령을 자동 실행/ 크론탭 형식 ( 분 시 일 월 요일 명령어)
인터페이스
1. 인터페이스 시스템
(1) 개념 : 서로 다른 시스템이나 장치 간에 정보나 신호를 주고받을 수 있게 도와주는 시스템
(2) 시스템 구성 : 송신 시스템, 수신 시스템, 중계 서버(시스템)
(3) 송수신 데이터 식별
1) 전문 공통부 : 인터페이스 ID, 서비스 코드, 접속 IP 등
2) 전문 개별부 : 업무 처리에 필요한 데이터를 포함
3) 전문 종료부 : 전송 데이터의 끝을 포함하는 문자 포함
2. 인터페이스 설계서 구성
(1) 목록 : 연계 업무와 연계에 참여하는 송수신 시스템의 정보, 연계 방식 과 통신 유형 등에 대한 정보
(2) 정의서
3. 내 외부 모듈 연계 방식
(1) EAI (Enterprice Application Integration)
1) 개념 : 기업 내의 다른 플랫폼 및 애플리케이션들을 연결, 통합하는 솔루션
2) 구축 유형
POINT-TO-POINT: 미들웨어 없이 직접 애플리케이션 끼리 연결
Hub & Spoke : 중앙 허브를 통한 중앙 집중적 연결
Message bus(ESB 방식) : 미들웨어를 사용
하이브리드 : 내부 Hub & spoke, 외부 메시지 버스
(2) ESB (Enterprise Service Bus, 미들웨어를 통해서 다른 쪽의 데이터 이용)
1) 개념 : 웹 서비스 중심의 표준화된 데이터 버스를 이용하여 다양한 애플리케이션을 유연하게 통합하는 플랫폼/ 프로토콜 변환, 서비스 중심의 메시지 라우팅 기능 제공
4. 인터페이스 연계 기술
(1) DB Link : DBMS 직접 연결
(2) DB Connection: DBMS 직접 연결
(3) JDBC: DBMS 직접 연결
(4) API/OPEN API
(5) Web Service : SOAP, WSDL, UDDI (HTTP, HTTPS, SMTP 프로토콜 이용)
(6) Hyper Link
(7) Socket : 컴퓨터를 직접 뚤어버림
5. 인터페이스 전송 데이터 (이런 형태의 데이터를 주고 받음)
(1) JSON : 이름과 값의 쌍
(2) XML : 확장된 마크업 랭귀지, 구조화한 문서를 표현하고 전송
(3) YAML : 데이터 직렬화 언어
(4) CSV(Comma Separated values)
6. 인터페이스 구현
(1) AJAX
1) 개념 : 비동기 방식으로 데이터를 교환/ 전체 페이지를 새로고침하지 않고, 페이지의 일부만을 변경할 수 있는 기법
(2) SOAP(Simple Object Access Protocol)
1) 개념 : http, https, SMTP 등을 통한 XML 기반 메시지 교환 프로토콜/SOA 개념을 실현하는 기술(SOA를 그냥 메시지 교환 서비스 라고 보면 됨)
2) 구성
① SOAP (simple object access protocol) : HTTP, HTTPS, SMTP 등을 활용하여 XML 형태의 메시지를 네트워크 상에서 교환하는 프로토콜(설명서를 통해 SOAP를 이용해 데이터를 주고 받는 것)
② WSDL(Web Services Description Language) : 웹 서비스 기술 언어, 서비스의 기술적 세부사항 기술(데이터 설명서 – 입출력 데이터)
③ UDDI(Universal Description, Discovery and integration): 비즈니스 업체 목록 등록을 위한 XML 규격(데이터 설명서를 모아둔곳)
3) SOAP 보안 프로토콜
보안 프로토콜 | 설명 |
SAML | 인증/권한 관리 |
XKMS | 키 관리 |
XACML | 접근 제어 |
(3) REST
1) 개념 : HTTP URI를 통한 자원 명시와 HTTP 메소드를 통한 CRUD Operation 적용
2) 구성 요소
자원(Resource) : URI를 통해 식별 (어디에 뭐가 있는지_)
행위(Method) : get, post, put(수정), delete ( 그걸로 뭐할것인지)
표현(Representation) : 데이터 표현
3) RESTFUL : REST의 원리를 따르는 시스템
6. 인터페이스 보안 ( 개발, DB 측면에서 고려 필요)
(1) 인터페이스 보안 취약점 분석
인터페이스를 통한 데이터 변조, 탈취
패킷 공격 기법
-스니핑 : 패킷을 가로채는 행위
-스푸핑: IP 주소나 다른 식별자를 위장
(2) 인터페이스 보안 기능 적용
1) 네트워크 영역: 트래픽에 대한 암호화 설정
IPSec, SSL, S-HTTP,TLS
2) 애플리케이션 영역: 시큐어 코딩 가이드
3) DB 영역: 민감 데이터를 암호화
7. 인터페이스 구현 검증 도구
(1) 구현 검증 도구
Xunit : 다양한 언어 지원
STAF: 서비스 호출 및 컴포넌트 재사용 등
FitNesse: 웹기반 테스트 프레임 워크
NTAF : FitNesse의 장점과 STAF장점을 통합
셀리늄 : 웹 애플리케이션 테스트 프레임 워크
Watir : ruby를 사용하는 애플리케이션 테스트 프레임 워크
(2) 구현 감시 도구
APM을 사용하여 동작 상태 감시
종류 : 스카우터, 제니퍼 등
8. 인터페이스 오류 처리
(1) 발생 알림
(2) 오류 발생 확인 : 로그 확인, 오류 테이블 확인, 감시 도구 확인
소프트웨어 구축
1. 서버환경 구축
(1) 웹서버(web) – 정적인것(이미지,CSS,HTML등)
(2) 웹 애플리케이션 서버(WAS) – 동적인것 (게시판에서 DB에서 긁어서 보여줘)
(3) 데이터베이스 서버
(4) 파일서버
(5) Load Balancer(random, least Loaded, round robin) – L4장비
(6) CDN(Content Delivery Network) – 영상이나 이런 것을 분산
(7) 시스템 아키텍처 고려사항 (물리적인 것)
확장성 (scalability)
성능 (performance)
응답시간 (response time)
처리량 (throughout)
접근성 (accessibility)
일관성 (consistency)
보안 (security)
2. 개발 소프트웨어 환경
(1) 시스템 소프트웨어
1) 운영체제
2) JVM
3) 웹 서버– 아파치 등
4) WAS
5) DBMS
(2) 개발 소프트웨어
1) 요구사항 관리 도구 (게시판) : JFeature,
2) 설계/모델링 도구
3) 구현도구 :
4) 테스트 도구 :
5) 형상관리 도구 : git, CVS, SVN 등
6) 협업 도구 :
7) 배포 도구 : 젠킨슨, Travis CI, 레이븐, 앤트 등
3. IDE(Integrated Development Environment) 도구
(1) 개념 : 소프트웨어 개발에 필요한 다양한 기능을 하나의 프로그램 내에서 제공하는 소프트웨어
(2) IDE 도구의 종류 : 이클립스, 비쥬얼 스튜디오, Xcode, IntelliJ IDEA
(3) 도구 선정 시 고려 사항 : 적정성, 효율성, 이식성, 친밀성, 범용성
4. 협업 도구
(1) 개념 : 여러 사용자가 각자의 작업 환경에서 통합된 프로젝트를 동시에 수행할 수 있도록 지원하는 소프트웨어
(2) 기능 : 전사 관리, 프로젝트 관리, 드라이브 공간, 문서 공유 등
(3) 협업 도구 도입 프로세스
문제 정의
솔루션 및 기대효과 정의
협업 도구 분석
협업 도구 최종 선정
5. 형상 관리 도구(변경 관리 + 버전 관리)
(1) 개념 : 소프트웨어 개발 과정에서 발생하는 모든 변경 사항을 통제하고 관리하는 방법
(2) 변경관리/ 버전 관리/ 형상 관리
1) 변경 관리 : 소스코드의 변경 사항을 관리
2) 버전 관리 : 체크인/체크아웃, 릴리즈, 퍼블리싱 등을 버전으로 관리
3) 형상 관리 : 변경 관리와 버전 관리를 포함하며, 프로젝트 진행 상황, 빌드, 릴리즈까지 관리
(3) 형상 관리 절차 (식도감기)
1) 형상 식별 : 관리해야 할 항목을 구분하고 번호나 태그 부여
2) 형상 통제 : 변경 요청을 검토하고 형상 통제 위원회(CCV)의 승인을 거쳐 현재의 기준선(베이스라인)에 반영
3) 형상 감사 : 변경에 대한 검토
4) 형상 기록 : 변경 사항과 처리과정을 기록
6. 버전 관리 도구
(1) 개념 : 소스코드와 문서 등의 디지털 콘텐츠에 대한 여러 버전을 관리한다
(2) 도구 유형
1) 공유 폴더 방식 (RCS, SCCS)
2) 클라이언트/서버 방식(CVN,SVN)
3) 분산 저장소 방식 (GIT)
(3) 버전관리 소프트웨어 사용 방식
(4) 버전 관리 주용 용어
Repository : 저장소
Checkout : import 된 데이터 내려받기
Commit : 변경된 소스코드 반영
Update : 변경된 소스코드 받는 것
Add : 파일 새로 추가
Trunk : 주 프로젝트
Branch : 가지
Merge : 합치는 것
Diff : 두개의 소스코드가 다른 경우 비교하는 것
7. 빌드 도구
(1) 빌드 개념 : 소스 코드 파일들을 컴파일하고, 다른 필요한 과정들을 거쳐 실행 가능한 소프트웨어로 변환하는 일련의 과정
(2) 빌드 자동화 도구 종류
1) Make : 유닉스 계열 운영체제에서 주로 사용
2) Ant : 자바 기반의 빌드도구로 XML 기반의 빌드 스크립트를 사용
3) Maven : 의존성 관리 ( 참조하는 외부 라이브러리의 관리)와 프로젝트 라이프 사이클
4) Jenkins : 자바 기반의 오픈소스 지속적 통합 서비스 도구
5) Grandle : 그루비 기반의 오픈소스 빌드 자동화 도구(안드로이드 개발)
8. 프레임워크 (frame – 틀, 라이브러리 – 언어에 특화된 함수 혹은 모듈, api형태로 개발)
(1) 개념 : 소프트웨어 개발에 필요한 공통적인 구성요소와 아키텍처를 일반화하여 제공하는 반제품 형태의 소프트웨어
(2) 특징
모듈화
재사용성
확장성
제어의 역흐름 (inversion of control) : 이 제어를 프레임워크가 관리하는 것
(3) 프레임워크의 구분
1) 자바 프레임워크 : 전자 정부 프레임 워크(스프링 기반), 스프링
2) ORM 프레임 워크(객체가 데이터베이스를 다루기 위한것) : 아이바티스, 마이바티스, 하이버네이츠
3) 자바 스크립트 프레임워크 : 앵귤러제이에스, React JS, node.JS(서버 프로그램 역할까지 함)
4) 프론트엔드 프레임워크(CSS역할 수행) : 부트스트랩, Foundation, MDL
9. 라이브러리
컴퓨터 프로그램에서 자주 사용되는 루틴이나 리소스(클래스, 템플릿, 설정 데이터 등)를 모아 놓은 것
10. API(Application Programming Infertace)
소프트웨어 간 인터페이스로 다른 소프트웨어 또는 서비스와 상호작용하는데 사용된다
모듈 구현
1. 단위 모듈 구현
(1) 구현의 개념
소프트웨어를 기능 단위로 분해하여 개별적으로 구현하는 기법
(2) 효과적인 모듈화
결합도(커플링)를 낮추고 응집도(conhension)를 높임
Fan-out 최소화, fan-in 증가
2. 결합도
(1) 개념 : 모듈 과 모듈 간의 관련성/의존성 정도
(2) 유형 (데스형 제 외 저래 공 유랑 내가 닮았다니)
1) 자료 결합도 (data coupling) : 값 전달 (좋은 것)
2) 스탬프 결합도 (stamp coupline) : 배열, 포인터 등 전달
3) 제어 결합도 : 제어 요소 전달
4) 외부 결합도 : 다른 모듈 변수 사용
5) 공통 결합도 : 전역 변수 사용
6) 내용 결합도 : 다른 모듈 기능 이용 (나쁜 것)
3. 응집도(cohension)
(1) 개념 : 모듈 내부에서 구성요소 간에 밀접한 관계를 맺고 있는 정도
(2) 유형 ( 우 논 시 절 통 순 기)
1) 기능적 응집도 : 단일한 목적 수행 (좋은 것)
2) 순차적 응집도 : 출력값을 입력값으로 사용
3) 통신적 응집도 : 동일한 입력, 출력
4) 절차적 응집도 : 순차적 수행
5) 시간적 응집도 : 같은 시간 기능 수행
6) 논리적 응집도 : 유사한 성격
7) 우연적 응집도 : 연관 관계 없음 (나쁜 것)
4. Fan-in, fan-out
(1) 개념 : 모듈의 복잡도와 상호작용을 분석하는 데 사용되는 지표
5. 공통 모듈 구현
(1) 순서 : 상세 설계 확인 -> 공통 모듈 상세 문서와 매핑된 공통 모듈 구현
(2) 공통모듈 구현: dto/vo 구현 -> sql문 구현 (xml) -> dao 구현 -> service 구현 -> controller 구현 (실제 비즈니스 로직이 만들어짐)
(3) 공통 모듈 구현 요소
DTO(값을 담아둘 수 있는 그릇, Data Transfer Object) : 데이터를 전송하는 객체
VO(Value Object) : 특정 값을 나타내는 객체
DAO(Data Access Object) : DB에 접근하는 객체
Service: DAO 클래스를 호출
Controller: 비즈니스 로직을 수행
(4) Annotation
1) 개념 : 사전적으로 주석 이라는 의미를 가지고 있다/ 자바 코드에 주석처럼 달아 특수한 의미를 부여한다/ 컴파일 또는 런타임에 해석된다
서버 프로그램 구현
1. 서버 프로그램 구현
(1) 업무프로세스 확인
1) 개념 : 개인이나 조직이 자원을 입력하여 가치 있는 산출물을 제공하는 일련의 활동
2) 업무 프로세스 구성 요소
프로세스 책임자
프로세스 맵
Task 정의서
성과 지표
프로세스 조직
경영자의 리더십
(2) 서버 프로그램 구현 : 업무 프로세스를 기반으로 서버에서 서비스를 제공하는 기능을 개발하는 활동
(3) MVC(Model View Controller) 모델의 계층
1) 프레젠테이션 계층 : 사용자 인터페이스
2) 제어 계층 : 요청을 분석하고 적절한 비즈니스 로직 호출
3) 비즈니스 로직 계층 : 핵심 업무 로직을 처리
4) 퍼시스턴스 계층 : 데이터 관리
5) 도메인(값의 덩어리) 모델계층 : 데이터를 전달
DBMS 접속 기술
(1) 개념 : 프로그램에서 데이터베이스에 접근하여 DML을 사용할 수 있게 하는 기술
(2) 접속 기술 종류 : 소켓 통신, Vendor API, JDBC(Java Data Base Connectivity), ODBC(Open Data Base Connectivity)
ORM (Object-Relational Mapping) 프레임 워크
(1) 개념 : 객체 지향 프로그래밍과 관계형 데이터 베이스 간의 호환성 격차를 해결하기 위한 프로그래밍 기법
(2) 매핑 기술 비교
1) Sql mapper :SQL을 명시하여 단순히 필드를 매핑시키는 것이 목적(단순히 데이터 매핑 기능 수행)/ 종류 : 아이바티스, 마이바티스, JDBC template 등
2) OR Mapping(ORM) : 실질적인 ORM/ 객체를 통해 간접적으로 데이터베이스를 다룬다/ 종류: JPA(Java persistent API), Hibernate
시큐어 코딩
(1) OWASP(Open Web Application Security Project) : 오픈 소스 웹 애플리케이션 보안 프로젝트
(2) 시큐어 코딩 가이드
1) 개념 : 해킹 등 사이버 공격의 원인인 보안 취약점을 제거해 안전한 소프트웨어를 개발하는 SW 개발 기법
2) 시큐어 코딩 가이드 항목
① 입력 데이터 검증 및 표현
SQL Injection
XSS(크로스 사이트 스크립트)
자원 삽입
위험한 형식 파일 업로드
명령 삽입
메모리 버퍼 오버프로
② 보안 기능
적절한 인증없이 중요기능 허용
부적절한 인가
취약한 암호화 알고리즘 사용
하드코딩된 패스워드
패스워드 평문 저장
취약한 패스워드 허용
③ 시간 및 상태 (우리가 동시에 처리 되니)
경쟁 조건
종료되지 않는 반복문 또는 재귀 함수
④ 에러 처리
오류 메시지 정보 노출
오류 상황 대응 부재
부적절한 예외 처리
⑤ 코드 오류
널 포인터 역 참조
부적절한 자원 해제
해제된 자원 사용
초기화 되지 않은 변수 사용
⑥ 캡슐화
잘못된 세션에 의한 정보 노출
제거되지 않은 디버그 코드
시스템 정보 노출
잘못된 접근 지정자
⑦ API 오용
DNS에 의존한 보안 결정
취약한 API 사용
배치 프로그램 구현
배치 프로그램
(1) 배치의 개념 : 데이터를 일괄적으로 모아서 처리하는 대량의 작업을 처리
(2) 배치 프로그램의 필수 요소 : 대용량 데이터, 자동화, 견고함, 안전성, 성능
(3) 스케쥴 관리 종류
1) 크론탭(Crontab) : 유닉스, 리눅스 계열에서 사용/ 시간을 지정해 특정 명령을 자동 실행/ 크론탭 형식 ( 분 시 일 월 요일 명령어)
인터페이스
1. 인터페이스 시스템
(1) 개념 : 서로 다른 시스템이나 장치 간에 정보나 신호를 주고받을 수 있게 도와주는 시스템
(2) 시스템 구성 : 송신 시스템, 수신 시스템, 중계 서버(시스템)
(3) 송수신 데이터 식별
1) 전문 공통부 : 인터페이스 ID, 서비스 코드, 접속 IP 등
2) 전문 개별부 : 업무 처리에 필요한 데이터를 포함
3) 전문 종료부 : 전송 데이터의 끝을 포함하는 문자 포함
2. 인터페이스 설계서 구성
(1) 목록 : 연계 업무와 연계에 참여하는 송수신 시스템의 정보, 연계 방식 과 통신 유형 등에 대한 정보
(2) 정의서
3. 내 외부 모듈 연계 방식
(1) EAI (Enterprice Application Integration)
1) 개념 : 기업 내의 다른 플랫폼 및 애플리케이션들을 연결, 통합하는 솔루션
2) 구축 유형
POINT-TO-POINT: 미들웨어 없이 직접 애플리케이션 끼리 연결
Hub & Spoke : 중앙 허브를 통한 중앙 집중적 연결
Message bus(ESB 방식) : 미들웨어를 사용
하이브리드 : 내부 Hub & spoke, 외부 메시지 버스
(2) ESB (Enterprise Service Bus, 미들웨어를 통해서 다른 쪽의 데이터 이용)
1) 개념 : 웹 서비스 중심의 표준화된 데이터 버스를 이용하여 다양한 애플리케이션을 유연하게 통합하는 플랫폼/ 프로토콜 변환, 서비스 중심의 메시지 라우팅 기능 제공
4. 인터페이스 연계 기술
(1) DB Link : DBMS 직접 연결
(2) DB Connection: DBMS 직접 연결
(3) JDBC: DBMS 직접 연결
(4) API/OPEN API
(5) Web Service : SOAP, WSDL, UDDI (HTTP, HTTPS, SMTP 프로토콜 이용)
(6) Hyper Link
(7) Socket : 컴퓨터를 직접 뚤어버림
5. 인터페이스 전송 데이터 (이런 형태의 데이터를 주고 받음)
(1) JSON : 이름과 값의 쌍
(2) XML : 확장된 마크업 랭귀지, 구조화한 문서를 표현하고 전송
(3) YAML : 데이터 직렬화 언어
(4) CSV(Comma Separated values)
6. 인터페이스 구현
(1) AJAX
1) 개념 : 비동기 방식으로 데이터를 교환/ 전체 페이지를 새로고침하지 않고, 페이지의 일부만을 변경할 수 있는 기법
(2) SOAP(Simple Object Access Protocol)
1) 개념 : http, https, SMTP 등을 통한 XML 기반 메시지 교환 프로토콜/SOA 개념을 실현하는 기술(SOA를 그냥 메시지 교환 서비스 라고 보면 됨)
2) 구성
① SOAP (simple object access protocol) : HTTP, HTTPS, SMTP 등을 활용하여 XML 형태의 메시지를 네트워크 상에서 교환하는 프로토콜(설명서를 통해 SOAP를 이용해 데이터를 주고 받는 것)
② WSDL(Web Services Description Language) : 웹 서비스 기술 언어, 서비스의 기술적 세부사항 기술(데이터 설명서 – 입출력 데이터)
③ UDDI(Universal Description, Discovery and integration): 비즈니스 업체 목록 등록을 위한 XML 규격(데이터 설명서를 모아둔곳)
3) SOAP 보안 프로토콜
보안 프로토콜 | 설명 |
SAML | 인증/권한 관리 |
XKMS | 키 관리 |
XACML | 접근 제어 |
(3) REST
1) 개념 : HTTP URI를 통한 자원 명시와 HTTP 메소드를 통한 CRUD Operation 적용
2) 구성 요소
자원(Resource) : URI를 통해 식별 (어디에 뭐가 있는지_)
행위(Method) : get, post, put(수정), delete ( 그걸로 뭐할것인지)
표현(Representation) : 데이터 표현
3) RESTFUL : REST의 원리를 따르는 시스템
6. 인터페이스 보안 ( 개발, DB 측면에서 고려 필요)
(1) 인터페이스 보안 취약점 분석
인터페이스를 통한 데이터 변조, 탈취
패킷 공격 기법
-스니핑 : 패킷을 가로채는 행위
-스푸핑: IP 주소나 다른 식별자를 위장
(2) 인터페이스 보안 기능 적용
1) 네트워크 영역: 트래픽에 대한 암호화 설정
IPSec, SSL, S-HTTP,TLS
2) 애플리케이션 영역: 시큐어 코딩 가이드
3) DB 영역: 민감 데이터를 암호화
7. 인터페이스 구현 검증 도구
(1) 구현 검증 도구
Xunit : 다양한 언어 지원
STAF: 서비스 호출 및 컴포넌트 재사용 등
FitNesse: 웹기반 테스트 프레임 워크
NTAF : FitNesse의 장점과 STAF장점을 통합
셀리늄 : 웹 애플리케이션 테스트 프레임 워크
Watir : ruby를 사용하는 애플리케이션 테스트 프레임 워크
(2) 구현 감시 도구
APM을 사용하여 동작 상태 감시
종류 : 스카우터, 제니퍼 등
8. 인터페이스 오류 처리
(1) 발생 알림
(2) 오류 발생 확인 : 로그 확인, 오류 테이블 확인, 감시 도구 확인
객체지향 (OOP, Object Oriented Programming)
(1) 개념 : 현실 세계의 유형, 무형의 모든 대상을 객체(object)로 나누고 객체의 행동(method)과 고유한 값(attribute)을 정의하여 설계하는 방법
(2) 구성 요소
클래스(class) : 속성과 연산을 정의해서 만든 틀 (붕어빵 틀)
속성(attribute): 객체들이 가지고 있는 고유한 데이터
메서드 : 작업을 수행하기 위한 명령문의 집합
메시지 : 객체에게 어떤 행위를 하도록 지시
객체(object) : 클래스의 인스턴스 (실제 생성되는 클래스)
(3) 객체지향 언어의 특징
캡슐화 : 속성(attribute)과 메서드를 하나로 묶은 것 ( 정보 은닉과 연관 관계가 있음, private name, public get/set method로 호출)
정보은닉(information hiding) :내부 데이터에 직접 접근할 수 없도록 제한
상속 : 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것
다형성(polymorphism): 하나의 메시지에 대해 여러 가지 방법으로 응답 (오버 로딩 – a().a(x),a(x,y), 오버 라이딩-상속관계에서만 존재, 자식이 재정의하는 것)
추상화(abstraction) : 실체의 핵심적인 개념들만 추출(공통의 성질만 뽑는 것)
(4) 객체지향 설계 원칙(solid)
단일책임원칙(SRP): 한 클래스는 하나의 책임만
개방 폐쇄 원칙 (OCP): 확장에는 열려 있고 수정에 닫혀 있어야 한다
리스코프 치환 원칙(LSP) : 자식 클래스는 언제나 자신의 부모 클래스를 대체 한다
인터페이스 분리 원칙 (ISP) : 사용하지 않는 인터페이스는 구현하지 말아야 한다
의존성 역전 원칙(DIP) : 변화가 거의 없는 것에 의존
디자인 패턴 ( 자주 사용하는 것을 모아두는 것)
(1) 개념 : 객체지향 프로그래밍 설계를 할 때 자주 발생하는 문제들에 대해 재사용할 수 있도록 만들어 놓은 패턴들의 모음
(2) 구조 : 패턴의 이름과 유형/ 문제 및 배경/ 솔루션 / 사례/ 결과 / 샘플코드
(3) GoF 디자인 패턴 분류
-생성 패턴 : 객체 생성과 관련한 패턴 ( 싱글톤 패턴 등)
-구조 패턴 : 객체를 조합해서 더 큰 구조를 만드는 패턴
-행위 패턴 : 알고리즘이나 책임분배에 관련된 패턴
생성 패턴 | 구조 패턴 | 행위 패턴 |
-abstract factory -builder -factory method -prototype -singletone |
-adapter -bridge -composite -decorator -façade -flyweight -proxy |
-chain of responsibility -command -interpreter -iterator -meditator -memento -visitor -template method -observer -state -strategy |
'스터디스터디 > 정처기' 카테고리의 다른 글
[실기] 데이터베이스 (14) | 2024.10.09 |
---|---|
[실기] 소프트웨어공학(3/3) (8) | 2024.10.07 |
[실기] 소프트웨어공학(1/3) (5) | 2024.10.06 |
/WIP/[실기] C언어 - 문제풀이(32~39) (0) | 2024.09.18 |
/WIP/[실기] C언어 - 문제풀이(22~31) (0) | 2024.09.18 |