1장. 요구사항 확인
현행시스템파악
[현행시스템/정보시스템] 구성(현황)/기능(구성도)/인터페이스(현황)
-> 아키텍쳐 / 소프트웨어 (구성도) -> 하드웨어/네트워크(구성도)
소프트웨어 아키텍쳐 - 소프트웨어를 설계하고 전개하기 위한 지침.
소프트웨어 아키텍쳐의 기술표준
소프트웨어 아키텍쳐 프레임워크
소프트웨어 아키텍쳐 4+1 뷰
논리뷰(기능), 구현부, 프로세스뷰(비기능), 배포뷰(비기능), 유즈케이스뷰
다양한 경로를 통해 수집된 직접적인 요구사항을 검토, 페르소나 목적 기준 표
요구사항 매트릭스
기능적 요구사항의 특성 - 기능성, 완전성, 일관성
객관적 하드웨어 성능 지표. 1분간 트랜잭션 수.
tpmC - Transaction Processing Performance Council
시스템이 액터에게 제공해야하는 시스템 요구사항이자 사용자 입장에서의 시스템기능
유스케이스
어플리케이션 성능 측정 지표 중 트랜잭션을 처리하는 동안 자원 사용량을 나타냄
자원 사용률(Resource Usage)
요구사항 정의에 사용되는 초기 시나리오를 말하며, 낙관적인 이상적인 시스템 동작..
정황 시나리오
비용산정모델
전문가들에게 의뢰
델파이 기법
원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하예 구함
LoC, (낙 + 기*4 + 비)/ 6
한 사람이 1개월 동안 할 수 있는 양을 기준으로 프로젝트 비용 산정
Man Month
보헴이 개발한 모형, 프로그램 규모에 따라 비용 측정. 단순형, 중간형, 임베디드형
Cocomo
기업이 시간 경과에 따라 간접비용까지 포함해서 파악하는 컴퓨팅 비용
TCO(Total Cost Ownership)
사용자 요구사항 도출을 위하여 잠재정 사용자의 목적, 행동패턴 응집된 가상의 사용자
페르소나
4장. 서버프로그램 구현
개발환경 구축
개발도구 분류
구현도구(+ 통합개발환경 - Eclipse, IntelliJ, Android Studio ...)
테스트도구
형상관리도구(GIT, CVS(서버클라), SVN(CVS 발전))
빌드도구(Ant, Maven, Gradle)
형상관리
개발하다가 나오는 모든 항목의 변경사항을 관리하기 위한 활동
요구사항이 확정되고 형상들을 통제하는 시점의 기준?
베이스라인
공통 모듈 구현
모듈
크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭
모듈의 독립성
응집도 - 기능, 순차, 통신, 절차, 시간, 논리, 우연
결합도 - 자료, 스탬프, 제어, 외부, 공통, 내용
모듈간 통합시 특정 서비스 변경에도 다른 서비스에 영향 없음
Loosely Coupled(느슨한 결합)
Fan in/out
MVC 패턴과 공통모듈구현
DTO(Data Transfer Object)/VO -> SQL 문 구현 -> DAO(Data Access Object)
-> Service -> Controller -> 화면 구현
5장. 인터페이스 설계 확인
인터페이스 설계서
외부, 내부 모듈 연계 방법
기업에서 운영되는 다른 플랫폼 및 어플리케이션 간의 연계환경, 기본 인프라
EAI by 어댑터
Point to Point, Hub & Spoke, Message Bus, Hybrid
ESB(Enterprise Service Bus) - 서비스 교환을 위해 표준 API 로 통합, 느슨한 결합
인터페이스 구현 검증 도구
다양한 언어 지원, 함수 클래스 같은 서로 다른 구성 단위 테스트 가능
xUnit
서비스 호출, 컴포넌트 재사용 등 다양한 환경 지원. 데몬 사용.
STAF
웹기반 테스트 케이스 설계 실행 결과 확인 지원하는 테스트 프레임워크
FitNesse
웹 어플리케이션 테스트. 테스트 스크립트 언어 학습 필요없이 기능 테스트 만듬.
Selenuim
루비기반 웹 어플리케이션 테스트 프레임워크
watir
6장. 화면 설계
UI 요구사항 확인
UI 유형 - CLI, GUI, NUI, OUI
UI 설계 원칙 - 직관성, 유효성, 학습성, 유연성
UI 표준
디자인 철학에 따른 시스템 공통으로 적용되는 화면 간 이동 및 구성.
UI 지침
세부 가이드라인.
Custom, Company, Competitor 를 비교 분석 차별화 분석
3C 분석
Strength, Weakness, Opportunity, Threat 요인을 규정하고 이를 토대로 경영전략
SWOT 분석
불확실성을 제거하면서 다양한 시나리오를 설계
시나리오 플래닝
사용자가 작성된 시나리오에 맞춰서 과제 수행.
사용성 테스트
사용자 화면이 있는 경우 각각의 화면단위로 단위모듈을 개발 .. 시나리오 기반테스트
화면 기반 테스트
워크숍
스토리보드
UI 화면 설계를 위한 정책, 구성, 와이어프레임 등 대부분 정보가 수록된 문서.
이해관계자들과의 화면 구성을 협의, 흐름 공유를 위한 화면단위 레이아웃 설계
와이어프레임
SW의 실행을 클라이언트에서 책임지는 기술
Rich Client
SW의 실행을 서버에서 책임지는 기술
Thin Client
7장. 어플리케이션 테스트 관리
테스트 산출물
테스크 케이스, 테스트 시나리오, 테스트 슈츠, 테스트 결과서, 테스트 계획서
어플리케이션 테스트 케이스 작성
정적테스트 - 동료검토, 워크스루, 인스펙션
동적테스트
화이트박스 테스트
제어구조 테스트(논리적 복잡도, 수행결로 집합),
코드커버리지 - 결정 / 구문 / 조건 커버리지, 변경 조건/결정 커버리지
루프 테스트
블랙박스 테스트
동등 분할 테스트, 경계값 분석 테스트, 결정테이블 테스트, 상태전이 테스트
유스케이스 테스트, 분류트리테스트, 페어와이즈(Pairwise) 테스트,
사용자 시각으로 소프트웨어 요구가 적합한지 최종 입증하는 과정
확인(Validation)
Verification(검증, 개발자)
회복 / 안전 / 강도 / 성능 / 구조 / 회귀 / 병행 테스트
경험 기반 테스트, 명세 기반 테스트, 구조 기반 테스트
사전된 정의된 참 값과 시행값 비교.
테스트 오라클
어플리케이션 테스트 시나리오 작성
함께 편성되고 관리되는 테스트 활동의 그룹, 각 레벨당 독립적
테스트레벨
단위 테스트(인터페이스, 자료구조, 실행경로, 오류처리 테스트)
통합 테스트(빅뱅, 상향, 하향)
시스템 테스트((단위시스템의)기능/비기능 요구사항 테스트)
인수 테스트(알파, 베타 테스트)
어플리케이션 통합 테스트
하향식 통합 - stub
상향식 통합 - cluster(driver 아랫 것들 모음) 만들고 -> driver 만듬
빅뱅 테스트
테스트 자동화 도구
반복적인 테스트 작업을 스크립트 형태로 구현
정적 분석 도구 - 코딩 표준, 코딩 스타일, 코드 복잡도
테스트 실행 도구 - 스크립트 작성 및 실행, 데이터/키워드 주도 접근 방식
성능 테스트 도구 - 처리량, 응답시간, 경과시간, 자원사용률
테스트 통제 도구 - 테스트 계획/관리, 형상관리, 결함 추적/관리
주어진 테스트 케이스에 의해 수해되는 테스트 범위 측정하는 테스트 품질측정기준
테스트 커버리지
테스트 하네스
테스트 환경의 일부분. driver, stub,
, test case(입력값, 실행조건, 기대 결과), test script(테스트 실행 절차)
, test suites(test case 집합), Mock Object(조건부 행위 입력)
2장. 데이터 입출력 구현
Optimizer
SQL 을 빠르게 할 최적경로-실행계획을 찾아주는 엔진.
통계 없이 사전 정의 규칙에 따라 - RBO(Rule Based Optimizer)
통계 정보를 통해 많은 경로를 고려 - CBO(Cost Based Optimizer)
옵티마이저의 실행 계획을 원하는 대로 변경하는 부분 - HINT
SQL 문 재구성
인덱스 쓰면 HAVING 사용 x, 인덱스 자주 조합시 결합인덱스 사용.
분포도 공식 - 1/row종류 * 100.
데이터저장소 연결 절차
드라이버 로딩 -> DB 연결 -> 쿼리 전달 -> 결과 수신
파티셔닝
연속적인 숫자나 날짜를 기준으로 하는 파티셔닝. 손쉬운 관리 기법
Range Partitioning(범위 분할 파티셔닝)
해시 함수에 의한 균등한 데이터 분할.
Hash Partitioning
특정 파티션에 저장될 데이터에 대한 명시적 제어가 가능
List Partitioning
범위 분할 이후 해시함수를 적용해 재분할. 큰 파티션 나누기.
Composite Partitioning.
정규화
1NF(속성값은 원자값), 2NF(부분함수 종속제거), 3NF(이행함수 종속제거)
, BCNF(결정자 함수면서 후보키 아닌것 제거), 4NF(다치종속 제거),
5NF(조인종속성 제거)
8장. 절차형 SQL 작성
데이터분석함수
집계함수 (Aggregate)
그룹함수 - 컬럼 값을 기준으로 그룹화하여 결과값 출력하는 함수
GROUP BY ROLLUP(cul1, cul2 ..)
계층적으로 더 큰 레벨의 중간 집계값-합/평균 등을 구함.
GROUP BY CUBE(cul1, cul2 ...)
모든 가능한 경우의 수만큼 중간 집계값을 구함
GROUP BY GROUPING SETS(cul1, cul2...)
집계 대상 컬럼별 개별 집계를 구할 수 있음.
윈도우 함수 - 온라인 분석 처리 용도로 표준 SQL 에 추가된 함수
SELECT ... RANK() OVER (ORDER BY cul DESC) wantName FROM...
동일 순위시 레코드 넘어감
SELECT ... DENSE_RANK() OVER (ORDER BY cul DESC) name FROM...
동일 순위라도 레코드 안넘어감
SELECT ... ROW_NUMBER() OVER (ORDER BY cul DESC) name FROM...
동일 순위라도 따로 레코드 매김
DCL
GRANT 권한 ON 테이블 TO 사용자 [WITH GRANT OPTION];
REVOKE 권한 ON 테이블 FROM 사용자 [CASCADE CONSTRAINTS];
9. 소프트웨어 개발 보안 구축
소프트웨어 개발 보안 설계
3대 요소 - 기밀성, 가용성, 무결성
Dos 공격
특정 서버에 수많은 접속 시도를 해 정상적인 서비스 이용을 막음
DDoS 공격 - 공격자를 분산 배치하여 특정 서버에 수많은 ...
SYN Flooding - SYN 만 보내서 TCP 가득 참.
UDP Flooding - 대량의 UDP 패킷을 임의의 포트로 전송. 2개 서버 맛감.
Smurf - Directed Broadcasting ICMP Echo Packet
PoD(Ping of Death) - 큰 사이즈 패킷을 쪼갠 ICMP패킷으로 공격. 버퍼 오버플로우
HTTP GET Flooding - 캐시 말고 웹서버 직접 처리하게 대량의 GET 패킷 보냄
Slowloris - HTTP 최종 개행 문자가 이상해 웹 서버와 연결상태를 장기간 지속
RUDY - Content Length 를 크게하고 메시지부분을 조금씩 보내 연결지속
Land Attack - Source IP, Destination IP 같아서 자기한테 계속 보냄
Bonk/Boink - 같은 시퀀스 번호를 계속 보냄 / 일정한 간격으로 스퀀스 번호에 빈 공간
Tear Drop - Fragment Offset 정보가 잘못되어 재조합과정에서 문제.
입력데이터에 유효성 검증을 하지 않아 URL 등에 SQL 을 넣어서 DB로부터 정보를 열람, 조작할 수 있는 공격
SQL 삽입
TCP 의 신뢰성 기반의 연결을 이용해, 통신 내용을 엿보거나 세션을 가로채는..
세션 하이재킹(Session Hijacking)
가능한 경우의 수를 모두 대입하는 방법
무차별대입공격
운영상태의 보안 리스크
보안 취약점
개발단계의 보안 리스크며 운영상태의 보안 리스크의 원인
보안 약점
위협이 취약점을 이욯하여 조직의 자산 손실 피해를 가져올 가능성
Risk 위협
조직이나 기업의 자산에 악영양을 끼칠 수 있는 사건이나 행위
Threat 위험
암호 알고리즘
암호화는 되는데 복호화는 불가능한 알고리즘
일방향 암호화 알고리즘
Secure Coding Guide
입력 데이터 검증 및 표현
SQL 삽입, XSS(Cross Site Script),
보안 기능
적절한 인증 없이 주요기능 허용, 반복된 인증시도 부재 등으로 부적절한 사용자..
시간 및 상태 - 경쟁조건(mutex), 무한루프
에러처리 - 오류 메시지 정보 노출, 오류 상황 대응 부재, 부적절한 예외 처리.
오류코드 - 널 포인터 역참조, 부적절한 자원 해체, 해체된 자원 사용, 초기화안된 변수
캡슐화 - 잘못된 세션에 의한 정보 노출(실그톤 패턴), 제거안된 디버깅 코드,
네트워크에 대한 공격이나 침입을 실시간적으로 차단하단 능동적 처리 시스템
IPS(Intrusion Prevention System)
조직 내부 주요 자료가 외부로 빠져나가는걸 탐지 차단
DLP(Data Loss Prevention)
10. 프로그래밍 언어활용
변수 활용
프로그래밍 기본 용어
명령문 - 프로그램을 구성하는 문장. 조건문/반복문으로 구성
연산자 - 대입 > 조건 > 이항( 논리 > 비트 > 관계 > 쉬프트 > 산술) > 단항
사용자 정의 자료형
열거체 - 서로 연관된 정수형 상수들의 집합, 구조체, 공용체(메모리 공유struct)
추상화 - 기능/자료/제어 추상화
자료구조 개념
알고리즘 개념
프로그래밍 언어별 특성
ALGOL - 절차 + 컴파일. 최초로 재귀 호출.
BASIC - 절차 + 컴파일. 교육용
FORTRAN - 절차 + 컴파일. 과학기술전문용어
DELPHI - 객체 + 컴파일. 파스칼++. C++ 처럼 윈도우즈에서 온갖거 다함.
Perl - 절차 + 인터프릿터. 실용성 모토. 강력한 문자열 처리.
Haskell - 함수형 + 인터프리터. 전형적 함수형.
LISP - 함수형 + 인터프리터. 수학표기법 위해 만듬. 연산자가 첫번재 위치.
PLOLOG - 논리형 + 인터프리터. 인공지능, 언어학, 자연언어 처리
객체지향 - 객체(인스턴스), 클래스(개체, 속성, 메서드), 메시지(객체 간 통신)
라이브러리 활용
프로그래밍 예제
파이썬
ord(int) - 아스키코드, hex(int), oct(int), True, False, and, or, range(100, 0, -1)
a = [[1,2],[1,2]]. (java -> int [][]a). private _, protected __,
{key:dict}, (tuple1, tuple2), { set1, set2}.
프린트 시 괄호 같이 나오고 스트링 프린트 시 ' ' 꼭 붙이기.
java => extend"s", println, printf, print 차이.
Overloading, Overriding.
Bubble Sort(교환해서 맨 끝 먼저 정렬), Insert Sort(앞부터 삽입+ 뒤로 땡기면서 정렬),
선택정렬 (가장 작은거 찾아서 앞부터 교환)
11. 응용 SW 기초 기술 활용
운영체제
운영체제 종류
윈도우즈 - OLE(Object Linking and Embedding)
유닉스, 리눅스 - 다중 사용자 기능, 계층형 트리 구조 파일
맥 운영체제 - 유닉스 기반
안드로이드 - 리눅스 기반
운영체제 기능
메모리 관리 기법
반입 기법(메모리에 언제), 배치 기법(메모리에 어디에),
할당 기법(메모리에 어떻게), 교체 기법(메모리에 누구를)
프로세스 상태 전이
( 생성, 준비, 실행, 대기, 완료 )
Dispatch(준비->실행), Timer Runout(실행->준비). Block(실행->대기)
Wakeup(대기->준비), Swap in/out (지연준비/대기<-> 준비/대기)
스케쥴링
선점형 - RR, SRT, Multi-level queue, Multi-level feedback queue
비선점형 - Priority, Deadline, FCFS, HRN(대기시간+서비스시간/서비스시간), SJF
가상화
여러개의 물리적인 리소스들을 사용자에게 하나로 보이게 하거나,
하나의 물리적인 리소스를 사용자에게 여러개로 보이게 하는 거.
플랫폼 가상화, 리소스 가상화
DBMS
종류
File System - ISAM(주저장부, 색인부 나눔), VSAM(대형 운영체제)
HDBMS(계층형), NDBMS(망형),
RDBMS(보편, 상하관계)
Oracle(유료, 대형시스템), SQL Server(MS), MySQL(Oracle, opensource),
Maria DB(MySQL 이중대)
ERD(E-R Diagram)
엔티티와 엔티티 간의 관계를 도식화한 다이어그램.
개체, 관계, 속성
Transaction
TCL - COMMIT, ROLLBACK, CHECKPOINT
DML - CRUD - SELECT, INSERT, UPDATE, DELETE
ACID - Atomicity(원자성), Consistency(일관성), Isolation(독립성), Durability(지속성)
이상 현상 - 중복으로 인함. 삽입, 삭제, 갱신 이상이 있음.
Network
Packet Switching
X.25(고정대역폭), Frame Relay, ATM(Packet, Circuit 통합 연결지향식 프로토콜)
Circuit Switching
Distance Vector Algorithm / Link State Algorithm
RIP, IGRP, OSPF,
다양한 네트워크를 상호 연결하는 컴퓨터 네트워크의 일부. 경로를 제공하는 망.
백본망(Backbone network)
TCP/IP 프로토콜로 서버 클라 사이 대용량 파일 주고받을 때 사용하는거
FTP(File Transfer Protocol)
12. 제품 소프트웨어 패키징
제품 소프트웨어 패키징
릴리즈 노트
제품 소트프웨어 패키징 도구
패키징 시에 디지털 콘텐츠의 지적 재산권 관련 기술, 유통 및 배포 보장.
저작관 관리(DRM)
Content Provider, Contents Distributor, Packager
Security Container(원본 유통시 보안), DRM Controller(배포된 컨텐츠 내 권한통제)
Clearing House(키 관리, 라이선스 발급 관리)
패키징 도구 수성 세부 항목 꼭 봐야함
공개키 암호 방식 기반 디지털 인증서를 사용하는 soft/hard 웨어, 사용자 .. 총칭
PKI
디지털 저작물에 특정한 번호를 부여하는 일종의 바코드 시스템
DOI(Digital Object Identifier)
디지털에 있는 자원을 나타내는 "유일한" 주소
URI(URL 은 네트워크 상 자원의 위치를 알리는 약속)
디지털 컨텐츠, 웹 서비스 권리 조건을 표현한 XML 기반의 마크업 언어
XrML
멀티미디어 기술들이 통일된 형태로 상호 운용성을 보장하는 멀티미디어 표준 규격
MPEG-21,
콘텐츠 등록하자마자 암호화 / 사용자가 콘텐츠 요청시 암호화
Pre-Packaging, On the fly Packaging,
미디어 포맷에 따른 콘텐츠 작성 관리 배급 폐기.. 전 공급과정을 관리하는 기술
CMS(Contents Management System)
통합 로그인 기술
SSO
콘텐츠를 효율적으로 전달을 위해 여러 노드를 가진 네트워크에 데이터 저장, 제공
CDN(Contents Delivery Network)
디지털 통신망을 이용해 컨텐츠 통신을 종합적으로 할 수 있게 하는 통신 서비스
ISDN(Integrated Service Digital Network)
제품 소프트웨어 개발간계부터 적용한 기준이나 패키징 이후 사용자 측면의 주요내용.
제품소프트웨어 메뉴얼
.. 설치 메뉴얼, .. 안내 메뉴얼,
패키지의 인터페이스, 포함하고 있는 메서드나 오퍼래이션, 파라미터의 설명도 포함
제품 소프트웨어 사용자 메뉴얼
기출
BCP(Business Continuity Planning) - 재난시 복구 대책
DRS - 재난시 원격에 설치되어 대체해서 작동하는 서버
RTO - Recovery Time Objective
Crimeware - 불법행동 조장 프로그램
UI 품질 요구사항
기능성, 신뢰성, 사용성(이해성, 학습성, 운용성), 효율성, 유지 보수성, 이식성
웹 3요소 - 웹 표준, 웹 호환성, 웹 접근성
웹 접근성(인운이건)
인식 용이성(대체 텍스트), 운용 용이성(키보드, 광민발작), 이해성, 견고성
UML
연관관계(실선, 가끔 화살표), 의존관계(점선화살표), 일반화(실선 화살표)
, 실체화(점선화살표), 집합(빈마름모, 마름모는 큰쪽), 포함관계(색깔마름모)
BitLocker - Windows 운영체제에서 블록 전체에 암호화하는 디스크 암호화 기술
디지털트윈(현실 세계와 1:1 매핑해서 만든 객체, GE 가 만듬),
cps(cyber physical system, 물리적요소를 인공지능,lot둥으로 실시간으로 제어하는 시스템)
정보시스템이 시스템 에러에 대응해서 오랜 기간 정상 운용이 가능한 성질
고가용성
온톨로지를 활용하여 서비스를 기술하고, 그것의 의미적 상호 운용성을 이용해 서비스 검색, 조합, 중재 기능을 자동화 하는 웹.
시맨틱 웹(Semantic Web)
누출되었을 때 손해가 막심하고 복구도 빡센 정보
민감 정보(Sensitive Information)
컴퓨터 내부를 관리하는 커널과 사용자를 연결하는 창
Shell
어플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈 소스 DB 모니터링 인페도구 ..
스카우터,
안정적인 시스템 운영을 위한 부하량, 접속자 파악 및 장애진단 목적 성능 모니터링 도구
APM(Application Performance Monitoring)
"연계 메커니즘" DB LINK, DB connection ( db connection pool 이용)
오류 부재의 궤변
비동기 브라우저 / 서버 통신(AJAX) 를 위해 속성 - 값 쌍, 키-값 쌍으로 ...
JSON
자바스크립트를 이용한 비동기 통신기술, 클라-서버 사이에 xml 주고받는 기술
AJAX
데이터 구조나 오브젝트 상태를 다른 컴퓨터 환경으로 저장,재구성가능 포맷으로 변환
직렬화(Serialization)
인증을 받은 컴포넌트를 등록, 최신상태 유지, 버전별 상태 유지 관리하는 곳
Repository
나쁜 코드, 클린 코드
라이브러리 -> 모듈(전역변수, 함수 저장 파일) -> 패키지(모듈 디렉토리 형식으로 저장)
소프트웨어의 구체적인 부분에 해당하는 설계와 구현 재사용 가능하게할 클래스제공틀
프레임워크
재사용성, 모듈화, 제어의 역행, 확장성 - 어플리케이션 인터페이스도 마찬가지
JVM, 컴파일러, 디버거, 자바 에뮬렛 등 응용프로그램을 위한 도구 모음
JDK - Java Development Kit
JSP(Java Server Page) 내에서 자바 코드 직접 안쓰고 로직을 내장, 유지보수 굿 라이브러리
JSTL
가상메모리 주소를 실제 메모리 주소로 변환하는 장치
MMU(Memory Management Unit)
외부 네트워크와 접속하여 가장 빠른 속도로 데이터를 주고받을 수 있게 하는 L2 장치
NIC(Network Interface Card)
온라인 업무 처리 형태의 하나. 터미널 메시지 보낸거 호스트 처리, 다시 터미널로 보냄
OLTP(Online Transaction Processing)
클라우드
PaaS(Platform as Service, SaaS(Software as Service)
국산 암호화 - SEED
웹 서비스의 구체적인 내용이 xml 로 적혀진 것.
WSDL(Web Service Description Language), 이게 보관된 곳 -> UDDI