소프트웨어 개발(통합)

2025. 2. 11. 14:11자격증

반응형
반응형
소프트웨어 개발 2-1 데이터 입출력 구현 1. 논리 데이터 저장소 확인 (1)자료구조 개념 : 컴퓨터상 자료의 효율적으로 저장하기 위해 만들어진 논리적 구조
①선형 구조: 데이터를 연속적으로 연결한 자료 구조 ②비선형 구조: 데이터를 비연속적으로 연결한 자료 구조


(2)리스트의 종류 ①선형 리스트 (Linear list) ②연결 리스트 (Linked list)
(3)스택 Stack 개념 : LIFO Last-In / First-Out 마지막에 들어간게 먼저 나온다. [PUSH] [POP] (계산기 + - * / )
①삽입  ②삭제
③스택 응용 분야
1. 인터럽트의 처리
2. 함수 호출 (재귀): 함수 호출 시 현재 진행 중인 명령어 주소를 스택에 저장
3. 후위표현 연산-PostFix
4. 깊이 우선 탐색 DFS; Depth-First Search : 깊이 내려갈 때마다 스택에 PUSH하고, 더 이상 깊이 갈 곳이 없을 경우 스택에서 POP한 노드와 인접한 노드를 찾음.
(인터럽트란? 키보드 입력을 한다든가 아니면 전원이 꺼진다든가 이런 상황에서 예상치 못한 상황이 생겼을 때 컴퓨터가 처리하는 것.
스택에서 저장했던 상태를 불러와서 실행을 하게 된다.) (함수호출=메서드=서브루틴-프로시저)
(4) Queue 개념 : FIFO First-In / First-Out 처음에 들어간게 먼저 나온다.
(5)데크 Deque; Double Ended Queue 개념 : 데크는 큐의 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료 구조 이다.
(6)트리 개념 : 데이터들을 계층화 시킨 자료 구조
  차수(Degree)는 전체 트리 구조에서 자식 노드 개수가 몇 개인지 찾는다. D 3. B 2, A 2.
(7)트리 순회 방법
①전위 순회 ②중위 순회 ③후위 순회
 
PreFix(전위) InFix(중위) 사람이 이해 할 수 있는 식 – PostFix(후위)
공통 a * ( b + c ) * d
1-1  InFix à PreFix
①계산 순서에 맞춰서 ( )괄호를 해 준다. (( A * ( b + C )) * d
PreFix 연산자-피연산자-피연산자로 묶어 준다. ( * ( * a ( + b c ) ) ) d )
③괄호를 없애 준다. * * a + b c d
1-2  PreFix à InFix
PreFix 연산자-피연산자-피연산자로 묶어 준다 ( * ( * a ( + b c ) ) d ).
InFix 피연산자-연산자-피연산자로 바꿔 준다. ( a * ( b + c ) ) * d
③괄호를 정리해 준다. a * ( b + c ) * d
2-1  InFix à PostFix
①계산 순서에 맞춰서 ( )괄호를 해 준다. ((a*(b+c))*d
PostFix 피연산자-피연산자-연산자로 묶어 준다. (a(bc+)*)d*
③괄호를 없애 준다.  a b c+ * d *
2-2  PostFix à InFix
PostFix 피연산자-피연산자-연산자로 묶는다. ( a ( b c + ) * ) d *
InFix 피연산자-연산자-피연산자로 바꿔 준다. ( a * ( b + c ) ) * d
③괄호를 정리해 준다.  a * ( b + c ) * d
(8)이진 탐색 트리 Binary Search Tree 유형
노드가 왼쪽이나 오른쪽 한 곳만 존재하게 될 경우 효율이 떨어진다. à ①포화 이진 트리, 완전 이진 트리, 편향 이진 트리
편향 이진 트리의 편향된 트리를 방지하기 위해 스스로 균형을 잡는 이진 탐색 트리 à AVL 트리 ③2-3 트리 ④레드-블랙 트리
(9)그래프Graphd의 유형 (노드와 노드를 연결하는 간선을 하나로 모아 놓은 자료 구조)
방향 그래프 n(n-1) 무방향 그래프 n(n-1)/2
(10)그래프 탐색 방법
①깊이 우선 탐색 DFS; Depth-First Search-스택 : 깊이 우선으로 찾아 내려 간다.
②너비 우선 탐색 BFS; Breadth-First Search- : 넓이를 우선으로 찾아 간다.
(11)논리 데이터저장소 구조 (개체 Entity , 속성Attribute , 관계Relationship )
2. 물리 데이터 저장소 설계 (1)물리 데이터 저장소 개념 : DBMS의 특성을 고려하여 데이터베이스 저장 구조 물리 데이터 모델로 변환하기 위한 데이터 저장소
정규화 : 테이블을 쪼개는 작업이 정규화이다. 정규화를 하면서 조인이라는 연산 때문에 속도가 느려진다. à 반정규화 수행 방법 : 정규화를 수행하는 테이블에 대해서 다시 원래대로(합친다) 돌린다.
(2)물리데이터 저장소 모델 변환
①테이블 통합 : 정규화된(분할)테이블을 조인을 하면 하나의 테이블이 된다. 반정규화(통합)
②테이블 분할 : 테이블이 너무 크면 시간이 오래 걸린다. 그래서 분할을 한다. 수평 분할, 수직 분할
③중복 테이블 추가 : 특집진행 1. 정 부분만 포함하는 테이블 추가 2. 진행 테이블 3. 계 테이블 (성능 측면 유리)
(기존에 있던 테이블에다가 다른 테이블들을 추가. 중복 테이블 추가, 저장 측면에서는 두 번 저장되기 때문에 중복이라고 볼 수 있지만 실제 운영상에서는 좀 더 빠른 연산을 할 수 있기 때문에 정규화(분할)를 많이 활용 한다.)
④컬럼 중복화 : 조인 성능 향상을 위한 중복 허용
인덱스 : 인덱스에서 먼저 한번 찾고, 그다음에 그것에 해당되는 데이터를 찾아간다면 빠르게 검색할 수 있다.
: 1. 비슷한 데이터들끼리 한곳에 모아 놓은 구조. 2. 분할된 테이블을 하나의 가상의 테이블 형태로 필요한 부분만 뽑아서 사용
3. A테이블과 B테이블을 서로 조인해서 사용해야 하지만. 조인하지 않고 뷰에서 바로 사용할 수 있게끔 한다. 편하게 사용, 개발 효율, 보안적으로도 좋아진다. 쿼리도 단순해 진다.
클러스터 : 비슷한 데이터들끼리 한곳에 모아 놓는 구조.
(3)파티션의 종류 (레해리컴라)
①범위 분할 Range Partitioning : 1월 데이터, 2월 데이터, 3월 데이터 등 월 단위로 쪼개서 파티션을 구분
②해시 분할 Hash Partitioning : 데이터의 날짜를 3으로 나눴을 때 나머지가 0이면 1번 파티션, 나머지가 1이면 2번 파티션, 너머지가 2이면 3번 파티션 이런 식으로 해시 함수를 돌렸을 때 그 결과에 따라 몇 번 파티션으로 갈지 정해지는 게 해시 파티션.
③목록 분할 List Partitioning : 서울, 대전, 대구, 부산 이런 식의 파티션이 있다고 했을 때, 주소가 서울시 ** **, 대전시 ** **,서울, 대전,  파티션으로 분류, 이런 식으로 나누는 것을 리스트이다.
④조합 분할 Composite Partitioning : 레인지, 해시, 리스트 중에 보통 2가지를 조합하면 컴포지트 파티셔닝 이라고 한다.
⑤라운드로빈 파티셔닝 Round Robin Partitioning : 데이터가 저장될 때마다 처음에 들어온 것을 1번 파티션, 두번째 들어온 건 2번 파티션, 세 번째 들어온 것은 3번 파티션 이렇게 나누는 것을 라운드 로빈 파티셔닝 이라고 한다.
(4)파티션의 장점 (성경SK백가)
능 향상 ② 합 감소 ③업 가능 ④ 용성 향상
(5)ORM; Object-Relational Mapping (객체 관계 맵핑) : 관계형 데이터베이스와 객체지향 프로그래밍 언어 간 호환되지 않는 데이터를 변환하는 프로그래밍 기법, (Database에는 테이블만 존재하고 객체(Java Code)를 서로 매핑해줄 때 ORM 사용.)
(4)트랜잭션 인터페이스의 특징 (ACID) 트랜잭션이란: )은행 데이터 기록
①원자성 Atomicity : 트랜잭션 연산을 데이터베이스에 모두에 반영 또는 반영하지 말아야 한다. (계좌이체 도중 장애 발생시)
②일관성 Consistency : 트랜잭션이 실행을 성공적으로 완료할시 일관성 있는 DB 상태 유지 (계좌이체 10원 보냈을 때 10원 받아야 함)
③격리성 Isolation : 둘 이상 트랜잭션 동시 실행시 한 개의 트랜잭션만 접근 돼야 한다.
④영속성 Durability : 성공적으로 완료된 트랜잭션 결과는 영구적으로 반영 (계좌이체시 통장계좌는 지속적, 영구적 반영돼 보존)
⑤트랜잭션 인터페이스 대표적인 사례 JDBC-Java database connectivity, ODBC-Open Database connectivity
3. 데이터 조작 프로시저 작성 (1)프로시저 : 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
(2)PL/SQL : 표준 SQL을 기본으로 Oracle에서 개발한 데이터 조작 언어
①컴파일 불필요 ②모듈화 가능 ③절차적 언어사용 ④에러 처리
(3)PL/SQL을 활용한 저장형 객체 활용 (프함패트)
① 프로시저 :  쿼리들을 모아 놓은 것
② 함수 : 무언가 값을 얻고 싶을 때 사용하는 것. ) 계좌번호가 있는데 누구 것인지 알고 싶을 때 사용
③ 패키지 : 프로시저 함수들을 효율적으로 관리하는 집합
④ 트리거 : 데이터베이스 사용시 삭제나 삽입 이런 행위가 발생을 하게 되면 그때 뭘 해라라고 정의를 하는 것 (방아쇠)
4. 데이터 조작 프로시저 최적화 (1)SQL 성능 개선 절차 (옵티마이저 : SQL문을 처리, 실행, 계획, 비용을 추정하여 최적의 실행 계획을 수립하는 DBMS의 핵심 엔진
①문제 있는 SQL식별 ②옵티마이저 통계 확인 ③SQL문 재구성 ④인덱스 재구성 ⑤실행계획 유지관리
(2)소스 코드 인스펙션 : 데이터베이스 성능 향상을 위하여 프로시저 코드를 보면서 성능 문제점을 개선
2-2 통합 구현 1. 모듈 구현 (1)단위 모듈 구현 : 기능을 단위 모듈별로 분할하고 추상화하여 성능을 향상 시키고 유지보수를 효과적으로 구현
(2)단위 모듈 구현의 원리 (정분추모)
①정보은닉: 외부에서 정보를 볼수 없다. ②분할과 정복 : 분할 하면서 문제가 있는 부분을 정복 ③추상화 : 현실의 세계의 자동차를 컴퓨터로 자동차(01)를 구현하지만, 자동차는 없다. 데이터의 관점에서 추상화 ④모듈 독립성 : 모듈 각각 기능에 대한 독립성
- 모듈 간 통신을 위해서는 (IPC)를 사용한다. Inter processor Communication
서비스컴포넌트는 실사용 갯수: 3, 모듈: 기능이 같으면 1.
(3)구현 단계에서 작업 절차코딩 계획 ②코딩 ③컴파일: 작성한 코드를 다른 언어의 코드(기계어)로 변환하는 단계 ④테스트
(4)재사용 기법 : 이미 개발되어 그 기능, 성능, 품질을 인정 받았던 소프트웨어의 전체 또는 일부분을 다시 사용하는 기법
(5)자새용 종류 : ①재공학: 기능을 개선시켜 재사용 ②역공학: 소프트웨어에서 역으로 모듈을 만든다. ③재개발 : 완전히 새로운 시스템
(6)테스트와 디버그 차이 : ①테스트: 오류를 찾는 작업 ②디버그: 오류를 수정하는 작업
(7)단위 모듈 테스트의 종류 ①블랙박스테스트 ②화이트박스테스트 ③메서드기반테스트 ④화면기반테스트:실제 화면을 보면서 테스트
2. 통합구현 관리 (1)IDE 개발도구(통합구현환경Integrated Development Environment) : 코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어 (이클립스, 비쥬얼스튜디오–코딩, 디버그, 컴파일, 배포)
(2)협업 도구 분류 ①소스공유-깃허브 ②프로젝트관리-트렐로,레드마인,지라
(3)형상 관리 : 1. 소프트웨어 생명주기 동안 발생하는 변경사항을 체계적으로 관리하여 소프트웨어 품질보증을 향상시키는 관리적 활동
              2. 형상(문서)관리 항목 : ①프로젝트 요구분석 ②소스 코드 ③운영 및 설치 지침서
(4)형상관리절차 (식통감기)
①형상: ID와 관리번호 부여 ②형상: 형상 항목의 변경사항에 대하여, 형상통제위원회가 결정하고 형상항목 버전 관리 운영  ③형상 : 형상 항목의 변경 여구사항에 맞도록 이뤄졌는지 등을 살펴보는 활동 ④형상 : 수행결과를 기록
(5)형상 관리 도구의 기능
①체크인 : 개발자가 수정한 소스를 형상관리 시스템으로 업로드 하는 기능
②체크아웃 : 형상 관리 시스템으로부터 개발자 PC로 다운 받는 기능
③커밋 : 개발자가 형상관리 시스템에 업로드 후 최종적으로 업데이트가 되었을 때 형상 관리 서버에서 반영하도록 하는 기능
(6)형상 관리 도구 사례
CVS; Concurrent Versions System) 동시 버전 관리 시스템 :
1. 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전관리를 실행하는 형상관리도구
2. 가장 오래된 형상 관리 도구 중의 하나
3. 커밋 실패 등에 대한 롤백 기능 미지원
SVN; Subversion 서브버젼 :
1. 중앙 집중형 클라이언트-서버 방식으로 CVS 단점을 보완해 가장 널리 사용되는 형상 관리 도구
2. 커밋 실패시 롤백 지원
3. 잦은 커밋으로 인해 리비전 번호가 크게 증가 할 수 있다.
4. Trunk : 현재 개발 중에 있는 하나의 큰 흐름 / Branch : 변경사항을 Trunk에 직접 반영하기 힘들 때 활용 Tag : 배포시점에 네이밍
Git
1. 리누스 토발즈가 2005년 리눅스 커널의 개발을 위해 만든 형상 관리 시스템이다.
2. 분산형 방식으로 각PC 스스로 완전한 저장소가 구성됨
3. 커밋 실패시 롤백 가능,
4. CVS SVN과 개념이 상이하여 학습시간이 요구됨
2-3 제품 소프트웨어 패키징 1. 제품 소프트웨어 패키징 (1)애플리케이션 패키징 : 개발 완료된 소프트웨어를 배포하고 설치할 수 있도록 고객에게 전달하기 위한 형태로 제작하고 매뉴얼 작성
(2)애프리케이션 패키징 특징
1. 고객의 편의성을 위해 신규/변경 이력을 확인하고 이를(버전 관리) (릴리즈 노트)를 통해 지속적으로 관리
(3)사용자 관점에서의 패키징 고려사항 (환유관변)
①사용자시스템 경 정의 ②UI제공 ③리 서비스 형태로 제공 ④키징의 변경 및 개선 관리 고려
(4)애플리케이션 배포 도구 : 디지털 컨텐츠의 지적 재산권을 보호하고 관리하는 기능을 제공하며, 유통과 배포를 보장하는 도구
(5)애플리케이션 배포 도구의 기술요소 (암키식저 파정크인 )
①암호화 ②키 관리 ③식별 기술 ④저작권 표현 ⑤암호화 파일 생성 ⑥정책 관리 ⑦크랙 방지 ⑧인증
(6)애플리케이션 배포 도구 활용 시 고려사항 (암이복최)
①암호화/보안 ②이기종 연동 ③복잡성 및 비효율성 문제 ④최적화 암호화 알고리즘 적용
(7)애플리케이션 모니터링 도구의 기능 애플리케이션 정적분석 PMD, Cppcheck, Scheckstyle, SonarQube
(8)DRM; Digital Rights Management 디지털 저작권 관리 : 디지털 콘텐츠에 대한 권리정보를 지정하고 암호화 기술을 이용하여 허가된 사용자의 허가된 권한 범위 내에서 콘텐츠의 이용이 가능하도록 통제하는 기술이다.


(9)DRM구성요소 (제소분클 콘패컨보)
①콘텐츠 공자: 저작권자 ②콘텐츠 비자: 구매 ③콘텐츠 배자: 유통 ④리어링 하우스: 라이센스 ⑤DRM텐츠: 메타 데이터 키저: 묶는 도구 ⑦DRM트롤러: 콘텐츠 이용권한 통제 ⑧보안 테이너: 컨텐츠 변형이나 해킹 방지하여, 안전하게 유통 보안장치
(10)DRM 기술요소 (암키식저 파크인정)
호화 ② 관리 ③별 기술 ④작권 표현 ⑤암호화 일 생성 ⑥랙 방지 ⑦증 ⑧책 관리
2. 제품 소프트웨어 매뉴얼 작성 (1)제품 소프트웨어 (설치) 매뉴얼 : 패키징 이후 설치 및 사용자 측면의 주요 내용 등을 문서로 기록한 것
(2)제품 소프트웨어 설치 매뉴얼 구성요소 (개파절아 삭버고준)
①제품 소프트웨어 요 ②설치 관련 일 ③설치 차 ④설치 이콘 ⑤제 방법 ⑥설치 전 및 작성자 ⑦객지원방법 및 FAQ 수 정보 & 제한 보증
(3)제품 소프트웨어 (사용자) 매뉴얼 : 패키징하고 설치와 사용에 필요한 제반 절차 및 환경 등 전체 내용을 포함하는 문서
ISO; International Organization for Standardization 국제표준화기구 / IEC; International Electronical Committee 국제전기기술위원회
(3)ISO/IEC 9126의 소프트웨어 품질 특성 : 품질을 측정하고, 평가하기 위해서 소프트웨어의 품질요소와 특성을 정의 (기신사효유이)
①기능성Functionality  ②신뢰성Reliability ③사용성Usability ④효율성Efficiency ⑤유지보수성Maintainability ⑥이식성 Portability
(4)ISO/IEC 14598의 소프트웨어 품질 특성 :  (반재공객) – 박지후 생년월
①반복성Repeatability ②재현성Reproducibility ③공정성Impartiality ④객관성Objectivity
(5)ISO/IEC 15504 (국제 표준) : 소프트웨어 프로세스 평가하고 개선 (SPICE)
(6)CMMi (사실표준/업계표준) : 성숙도와 능력도 평가 (LG CMMi 5등급)
(7)소프트웨어 공학 : 소프트웨어 개발, 운용, 유지보수 및 파기에 대한 체계적인 접근 방법이다.
(8)소프트웨어 공학의 원칙
1. 현대적인 프로그래밍 기술을 계속적으로 적용
2. 개발된 소프트웨어의 품질이 유지되도록 지속적 검증 수행
3. 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록 유지
(9)공학적으로 잘된 소프트웨어 특징
1. 소프트웨어는 (유지보수)가 용이해야 한다.
2. 소프트웨어는 (신뢰성)이 높아야 한다..
3. 소프트웨어는 충분한 (테스팅)을 거쳐야 한다.
(10)소프트웨어 공학 관련 법칙
①브룩스의 법칙 : 개발 3명이 한다. 여기에 1명이 새로 들어 온다면 대화가 쉽지 않고 새로운 사람들에게 기존에 했던 히스토리를 알려줘야 한기 때문에 인력을 추가 한다고 빨리 끝나는 게 아니라 오히려 시간이 걸려서 개발이 늦어 진다.
②파레토 법칙 : 80 20 법칙 – 전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상
③롱테일(꼬리) 법칙 : 사소해 보이는 80%의 다수가 20%의 소수 핵심보다 뛰어난 가치를 창출해낸다 (파레토 법칙의 반대 법칙)
3. 제품 소프트웨어 버전 관리 (1)소프트웨어 버전곤리 도구 유형 (공클분)
①공유 폴더 방식 ②클라이언트 / 서버 방식 ③분산 저장소 방식
(2)소프트웨어 버전 관리 도구 사용 시 유의사항
①버전에 대한 쉬운 정보 접근성 ②불필요한 사용자에 대한 접근 제어 ③동일 프로젝트에 대한 동시 사용성 ④빠른 오류 복구
(3)빌드 자동화 도구 사례 (CI; Continuous Integration 지속적 통합관리)
①젠킨스 : 자바 기반의 오픈소스로 가장 많이 활용되는 빌드 자동화 도구, 지속적 통합(CI)가능하게 함
②그래들 : 안드로이드 앱을 만드는데 필요한 안드로이드 스튜이오의 공식 빌드 자동화 시스템 (JAVA. C/C++, 파이썬 지원)
2-4 애플리케이션 테스트 관리 1. 애플리케이션 테스트 케이스 설계   (1)테스트 케이스 개념 : 특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행조건, 예상된 결과의 집합
(2)구성요소 ISO/IEC/IEEE 29119-3표준 구성요소 (식항입출환특의)
①식별자 ②테스트 항목 ③입력명세 ④출력명세 ⑤환경설정 ⑥특수절차요구 ⑦의존성 기술 테스트케이스:모듈, 기능]
(3)테스트 오라클의 종류 (참샘휴일)
오라클 ②플링 오라클 ③리틱스 오라클 ④관성 검사 오라클
(4)테스트 레벨 종류 (단통시인)
①단위테스트 : 명세 기반 테스트 (=블랙박스테스트)와 구조 기반 테스트 (=화이트박스) 테스트 나눠 진다. 주로 구조기반 테스트 수행
②통합테스트 : 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법
③시스템테스트 : 기능이 시스템에서 정상적으로 수행 되는지를 검증하는 테스트 이다. (기능적, 비기능적 요구사항 테스트)
인수테스트 : 최종 사용자와 업무의 이해관계자 등이 테스트를 수행함으로써 개발된 제품에 대해 운영 여부를 결정하는 테스트
1.     알파 테스트 : 회사 내부, 자체 테스트, 회사와 밀접한 사람만 참여하게 된다. 사용자와 개발자, 함께 수행되는 인수 테스트
2.     베타 테스트 : 회사 외부, 정식 출시전, 사용자 참여, 필드 테스팅이라고 불리며, 개발자 없이 고객의 사용 환경에 소프트웨어를 설치하여 검사를 수행하는 인수 테스트.
검증Verification : 소프트웨어 개발 과정을 테스트(개발자 시각) / 확인 Validation : 소프트웨어 결과를 테스트 (사용자 시각)
(5)프로그램 실행 여부에 따른 분류


(6)화이트박스 테스트 : 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트 (구글코로)
조 기반 테스트 ② 래스 박스 테스트 ③ 드 기반 테스트 ④ 직 기반 테스트
(7)화이트박스 테스트 유형 (구결조 조변다 기제데)
①구문 커버리지 ②결정 커버리지 ③조건 커버리지 ④조건/결정 커버리지 ⑤변경 조건/결정 커버리지 ⑥다중 조건 커버리지 ⑦기본 경로 커버리지 ⑧제어 흐름 테스트 ⑨데이터 흐름 테스트
(8)블랙박스테스트 : 1. 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트(기능 테스트) 2. 블랙박스 테스트 기능 및 동작 위주의 테스트를 진행하기 때문에 내부 구조나 작동 원리를 알지 못해도 가능 3. 블랙박스 테스트는 명세 테스트라고도 부름
(9)블랙박스 테스트 유형 (동경결 상유분 폐원비)
①동등 분할 테스트 ②경곗값 분석 테스트 ③결정 테이블 테스트 ④상태전이 테스트 ⑤유스케이스 테스트 ⑥분류 트리 테스트
⑦페어와이즈 테스트 ⑧원인-결과 그래프 테스트 ⑨비교 테스트
(10)테스트 목적에 따른 분류 (회안성 강 구회병)
①회복 테스트 ②안전 테스트 ③성능 테스트 ④강도 테스트 ⑤구조 테스트 ⑥회귀 테스트 ⑦병행 테스트
(11)소프트웨어 테스트의 원리 (결완초집 살정오)
①결함 존재 증명 ②완벽 테스팅은 불가능 ③조기 집중 ④결함 집중 ⑤살충제 패러독스 ⑥정황 의존성 ⑦오류-부재의 궤변
2. 애플리케이션 통합 테스트 (1)결함 관리 프로세스 (발등에확할조검)
①에러 발견 ②에러 등록 ③에러 분석 ④결함 확정 ⑤결함 할당 ⑥겸함 조치 ⑦결함 조치 검토 및 승인
(2)결함 추이 분석 유형 (분추에)
①결함 포 분석: 결함의 수를 측정하여 결함의 분포를 분석
②결함 세 분석: 시간의 흐름에 따른 결함의 수를 측정
③결함 이징 분석: 특정한 결함 상태의 지속 시간을 측정하여 분석
(3)테스트 커버리지 유형 (기라코)
능 기반 커버리지: 실제 테스트가 수행된 기능의 수를 측정
인 커버리지: 수행한 소스 코드의 라인 수를 측정하는 방법 ③드 커버리지: 구조 코드 자체가 얼마나 테스트 되었는지를 측정
(4)코드 커버리지 유형 (구결조 조변다)
①구문 커버리지 ②결정 커버리지 ③조건 커버리지 ④조건/결정 커버리지 ⑤변경 조건/결정 커버리지 ⑥다중 조건 커버리지
(5)소프트웨어 결함 관련 용어
①오류Error : 사람(개발자)에 의해 생성된 실수 (Human Mistake)
②결함Defect/결점Fault : 시스템이 고장Failure을 일으키게 하며, 오류Error가 있는 경우 발생하는 현상
③버그Bug : 프로그램 오류로 인해 예상치 못한 결과가 나는 현상
④고장Failure / 문제Problem : 소프트웨어 제품에 포함된 결함이 실행될 때 발생하는 현상
(6)결함 심각도별 분류 (치주보경단)  ( Critical Major Normal Minor Sample )
                                   ( 치명적 – 주요 –  보통 –  경미한 – 단순 )
①치명적Critical 결함 : 데이터 손실, 시스템 충돌
②주요Major 결함 : 기능 장애
③보통Normal 결함 : 부자연스러운 결함, 사소한 기능 오작동
④경미한Minor 결함 : UI잘림
⑤단순Simple 결함 :미관상 좋지 않음, 기능에 영향이 없지만 수정되어야 하는 결함
(7)테스트 자동화 도구 유형
①정적 분석 도구Static Analysis Tools :
1.     애플리케이션을 실행하지 않고 분석
2.     제품 : PMD, Checkstyle, CppCheck, Splint, SonaQube
3.     소스 코드에 대한 코딩표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견
②테스트 실행 도구Test Execution Tools :
1.     작성된 스크립트를 실행하는 도구,
2.     제품 : JMeter, OpenSTA
3.     유형 : 데이터 주도 접근 방식과 키워드 주도 접근 방식이 있다.
성능 테스트 도구Performance Test Tools
1.     처응경자리량 ②답 시간 ③과 시간 ④원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행
2.     제품 : Cobertura, Clover
④테스트 통제 도구Test Control Tools : 제품 : Hudson, Ant, xUnit
(8)테스트 장치 구성 요소 (드스슈 케시스목)
①테스트 라이버 : 향식 통합시험 (하위à상위로 개발) ②테스트 : 향식 통합시험 (상위à하위)
③테스트 슈트 ④테스트 케이스 ⑤테스트 시나리오 ⑥테스트 스크립트 ⑦목 오브젝트
(9)테스트 케이스, 테스트 시나리오, 테스트 스크립트의 차이점


(10)테스트 케이스 자동 생성 도구를 통한 테스트 데이터 도출 방법
①자료 흐름도: 입력값을 찾아내는 방법 ②기능 테스트: 입력값을 생성하는 방법 ③입력 도메인 분석 ④램덤 테스트
(11)통합 테스트Integration Test
1. 단위 테스트가 끝난 모듈 또는 컴포넌트 단위의 프로그램 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인하는 테스트
2. 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트


(12)하향식 통합 테스트Top Down Test (상위모듈이 개발 완료되어 있는 상태) 하향식 – 스텁
①메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하는 테스트
②메인 제어 모듈에 통합되는 하위 모듈과 최하위 모듈은 ‘깊이 — 우선’ 또는 ‘너비 — 우선’ 방식으로 통합
1.     깊이—우선 방식 (수직) : 해당 모듈에 종속된 모든 모듈을 통합하고, 다음 모듈의 종속된 모듈까지 통합하는 방법 (M1 àM8순서)
2.     너비—우선 방식 (수평) : 구조의 수평을 중심으로 해당하는 모듈을 통합하는 방법 (M1 à M2 àM4àM8àM3àM5àM6àM7)
(13)상향식 통합 테스트Botton Up Test (하위모듈이 개발 완료되어 있는 상태) 상향식 – 드라이버
①애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 점진적으로 상위 모듈과 함께 테스트하는 기법
②테스트는 모듈 하나하나 테스트 하지 않고, 클러스터Cluster로 묶어서 테스트 한다.
③드리이버가 있어야 한다.
(14)샌드위치 통합 테스트 – 상 : 하스 / : 상드 방식으로 큰 규모의 통합 테스트에서 사용
(15)빅뱅 테스트 : 한번에 테스트한다. 테스트 비용과 시간이 적게 든다. 하지만 치명적인 Error은 나중에 발견 된다.
향식 -- (Stub) : 하스
1.     모듈 및 모든 하위 컴포넌트를 대신하는 더미 모듈
2.     스텁은 하위 모듈의 반환 값만 전달하면 됨
향식 -- 라이버(Driver) : 상드
1.     상위의 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈
2.     드라이버는 상위 모듈 흐름을 작성해야 하기 때문에 스텁이 개발하기 쉬움
3. 애플리케이션 성능 개선 (1)알고리즘 Algotithm : 어떠한 문제를 해결하기 위한 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 기법 (해결방법)
(2)알고리즘 기법 (분동탐백)
①분할과 정복 Divide and ConQuer : 큰 덩어리를 잘게 잘라서 다시 결합하는 Top-Down방식
②동적 계획법 Dynamic Programing: 작은것의 해답을 이용해서 큰 것의 해답을 알아내는 Bottom-Up 방식
③탐욕법 Greedy : 결정을 해야 할 순간에 가장 좋다고 생각되는 것을 해답으로 선택
④백트래킹(되돌아간다) Backtracking : 그 노드의 부모 노드로 되돌아간 후 다른 자손 노드를 검색하는 알고리즘
(3)시간 복잡도에 따른 알고리즘 분류                                              O(1) – O(logn) – O(n) – O(nlogn) – O(n2)
O(1) : 상수형 복잡도 / 같은 속도로 작동 일정 / 해시 함수(Hashining Function)
O(logn) : 로그형 복잡도 / 이진 탐색(Binary Searcg)
O(n) : 선형 복잡도 / 수행 시간이 자료 크기와 직접적 관계로 정비례 / 순차 탐색
O(nlogN) : 선형 로그형 복잡도 / 퀵 정렬, 병합 정렬, 힙 정렬
⑤ O(n2) : 제곱형 주요 처리 루프 구조가 2중인 경우 / 거품 정렬, 삽입 정렬, 선택 정렬
(4)해싱함수Hashing Function : 해싱함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 이다. (산곱숫 폴기무)
: 나머지 연산자(%)를 사용하여 테이블 주소를 계산하는 방식
: 레코드 키 값을 제곱한 후에 결과값의 중간 부분에 있는 비티를 선택하여 해시 테이블 홈 주소 사용
자 분석법 : 고른 분포를 나타내는 자릿수를 필요한 만큼 선택하여, 레코드의 홈 주소로 사용
딩법 : XOR 한 값을 홈 주소로 사용하는 방식
수 변환법 : 키를 변환해 홈 주소를 얻는 방식
작위 방법 : 난수를 발생시켜 각 레코드 키의 홈 주소를 결정하는 방식
(5)검색 알고리즘
순차 검색 (Sequential Search) : 배열의 처음부터 끝까지 차례대로 비교하여 원하는 데이터를 찾아내는 알고리즘
이진 검색 (Binary Search) : 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 알고리즘
                           ) 소주 뚜껑 숫자 게임. 정답 13 찾기 = 1부터 13까지 차례가 아닌 절반씩 좁혀 가면서 탐색
(6)정렬 알고리즘
퀵 정렬Quick Sort : 피벗(기준)을 정해서 큰 원소와 작은 원소들로 분할하여 배열
           레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬
합병 정렬Merge Sort : 전체 원소를 하나의 단위로 분할한 후 분할한 원소를 다시 병합해서 정렬 (퀵하고 비슷)
힙 정렬 Heap Sort
1.     완전 이진트리로 입력 자료의 레코드를 구성(꽉 찬 이진 트리),
2.     최적, 평균, 최악O(nlog2n) 이다.
거품 정렬Bubble Sort
1.     두 인접한 원소를 검사하여 정렬하는 방법
2.     요소의 개수 -1 번 수행하게 되면 모든 숫자가 정렬된다.
삽입 정렬Insertion Sort : 자료 배열의 모슨 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘
선택 정렬 Selection Sort : 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 정렬되지 않은 부분의 가장 앞의 데이터와 교환해나가는 알고리즘
(7)소스 코드 품질 분석 도구
(8)맥케이브 회전 복잡도 측정 방식 : 브에노이 (V=E-N+2)
    
(9)클린 코드를 저해하는 베드 코드 : 다른 개발자가 로직(Logic)을 이해하기 어렵게 작성된 코드
외계인 코드Alien Code : 매우 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 몹시 어려운 코드
스파게티 코드Spaghetti Code : 스파게티 코드는 컴퓨터 프로그램의 소스 코드가 복잡하게 얽힌 모습을 스파게티의 면발에 비유
                                작동은 정상적으로 하지만, 사람이 코드를 읽으면서 그 코드의 작동을 파악하기는 어려운 코드
(10)클린 코드 작성 원칙 (가단의 중추)
가독성 단순성 의존성 최소 중복성 제거 추상화
2-5 인터페이스 구현 1. 인터페이스 설계 확인 (1)인터페이스 기능 개념 : 이기종 시스템 또는 컴포넌트 간 데이터 교환 및 처리를 위한 기능
1. 인터페이스 설계서를 통해 향후 인터페이스 개발에 필요한 공통 영역에 대한 기능을 도출
2. 인터페이스 (설계서) = 인터페이스 (목록) + 인터페이스 (정의서)
(2)인터페이스 정의서 : 인터페이스 정의서 = 시스템 인터페이스 정의서 + 상세 기능 인터페이스
(3)시스템 인터페이스 정의서 주요 항목 (인최크시데)
인터페이스ID ②최대 처리 횟수 데이터 크기(평균/최대) ④시스템 정보 데이터 정보
(4)EAI; Enterprise Application Integration
1. 기업 내에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보 전달, 연계, 통합을 가능,
2. 기업 내의 시스템 ERP시스템, 인사 시스템, 회계 시스템이 있으면, 이 기업 내의 시스템을 연계할 때 EAI 라는Adaptor를 이용해서 연계 한다. (포허메하) ①포인트 투 포인트 허브 앤 스포크 메시지 버스 하이브리드
단점 : 유연하지 못함, 단일 장애점SPOF에 취약하다.


(4)ESB; Enterprise Service Bus
1. 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 하나의 시스템으로 관리 운영할 수 있도록 서비스 중심의 통합을 지향하는 기술 SOA(Service oriented Architecture)
2.기업 간 연계에 많이 사용 된다. 대표적인 게 행정공통이용센터가 있다. 행공센은 ESB 방식으로 운영되고 있다. 행공센에 접속을 하려면 표준을 따라야 합니다. SOA 표준을 따르고 Loosely Coupled(낮은, 느슨한 결합) 개념을 가지고 규정을 준수해서 인터페이스를 맞추는 작업을 한다.
3.행공센과 토지공사는 기업 간의 연계를 위해서는  ESB 방식으로 연계를 하고 있다.
단점 : 웹서비스 자체가 스펙이 복잡하다. XML 기반으로 문서를 주고 받는 특성
4.SOA는 실패하여 요즘에는 à MSA; Micro Service Architecture 최근에 각광받고 있는 아키텍처 중에 하나 이다. (API 게이트 웨이)
2. 인터페이스 기능 구현 (1)인터페이스 보안의 중요성 : 인터페이스는 시스템 모듈 간 통신 및 정보 교환의 중요한 접점이기 때문에 인터페이스 보안 취약성은 시스템에 심각한 피해를 입힐 수 있다. (자위취)


(2)인터페이스 보안 구현
시큐어코딩 가이드: 개발자의 실수, 논리적 오류 à 보안 취약점 à 취약점 제거 à 코딩 기법
(입보시 에코캡아) 1. 입력 데이터 검증 및 표현 2. 보안 기능 3.시간 및 상태 4.에러 처리 5.코드 오류 6.캡슐화 7.API오용
데이터 베이스 보안
1.데이터베이스 암호화 알고리즘 (대비해) ①대칭 키 비 대칭키 해시


2.데이터베이스 암호화 기법 (애플하) ①API; Application Programing interface 방식 ②Plug-In 방식 ③Hybrid 방식


암호화 전송 ①IPSec ②SSL/TLS ③S-HTTP: 모든 메시지 암호화 하여서 매우 무겁다. 잘 사용 하지 않는다.


(3) JSON : 비동기-일부분 새로고침


(4) AJAX : 비동기적으로 자바스크립트 XML데이터 교환


(5) REST(-HTTP메서드)

3. 인터페이스 구현 검증 (1)인터페이스 구현 검증 도구 (엑스피 엔셀웨)
①xUnit ②STAF ③FitNesse ④NTAF ⑤Selenium ⑥watir

반응형