일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 반복문
- SQL 튜닝
- 객체지향
- 친절한 SQL 튜닝
- 이클립스 설치
- 식별자
- 객체
- 상속
- 비교 연산자
- SpringSecurity 로그아웃
- SQL튜닝
- 인텔리제이 Web 애플리케이션
- 오버로딩
- 연산자
- join
- spring 게시판 삭제
- java
- 예약어
- 오버라이딩
- 배열
- 친절한 SQL
- 산술 연산자
- 함수
- SQL
- StringBuffer
- SpringSecurity 로그인
- 논리 연산자
- 자바의정석
- @PreAuthorize("isAuthenticated()")
- 스프링시큐리티 로그아웃
- Today
- Total
gi_dor
소프트웨어 개발 - 1 본문
🔸 단위모듈 - 하나의 기능을 하는 프로그램
🔹 모듈화원리
- 분할과 지배 divide conquer
- 정보은폐 imformation hiding
- 자료추상화
- 모듈의 독립성 module independence
🔹 프로세스 : 컴파일 → 패키징 → 단위테스트 → 정적분석 → 리포팅 → 배포 → 최종 빌드
🔹 종류 : Maven , Jenkins , Gradle , Makefile , Ant
- Maven : 종속성을 리스트로 형태로 종속성관리
- Jenkins : Java 기반 오픈소스
- Gradle : JVM 기반 빌드 도구
- Makefile
- Ant : 아파치에서 개발 XML기반 스크립트사용
🔸 패키징
🔹 고려사항 : 사용자의 시스템 환경 , 직관적 UI , 관리서비스 형태제공 , 패키지 변경 개선관리 안정적 배포
🔹 패키징도구 : 불법복제 보호 , 사용자 권한제어 , 라이센스관리 , 권한 통제
🔹 패키징도구 사용 고려사항
- 암호화 보안
- 이기종컨텐츠 , DRM연동
- 복잡성 비효율성 문제 고려
- 내부컨텐츠 암호화
🔹 패키징도구 구성요소
- 암호화
- 키관리
- 암호화 파일생성
- 식별기술
- 저작권표현
- 정책관리
- 크랙방지
- 인증
🔹 애플리케이션 모니터링도구 APM : 변경이나 성능관리할 때 주로 사용
🔹 협업도구 : 문서공유 , 소스공유 ,아이디어 공유 ,디자인 공유 , 일정관리 , 프로젝트 관리 ,마인드맵
🔸 제작 소프트웨어 저작권보호
🔹 DRM : 디지털 저작 관리
특성 : 거래투명성 , 사용규칙제공 , 자유로운 상거래제공
🔹 기술요소
- 암호화
- 키관리
- 암호화 파일생성
- 식별기술
- 저작권표현
- 정책관리
- 크랙방지
- 인증
- 인터페이스
- 이벤트 보고
🔹 DRM 유통과정과 구성
- 컨텐츠 제공자 : 컨텐츠를제공하는 저작권자
- 컨텐츠 분배자 : 쇼핑몰 등으로 암호화된 컨텐츠 제공
- 패키저 : 컨텐츠 를 메타데이터와 함께 배포가능한 단위로 묶는 기능
- 보안 데이터 : 원본을 안전하게 유통
- DRM 컨트롤러 : 배포된 컨텐츠의 이용권한 통제
- Clearing house : 키관리 , 라이센스 발급관리 , 정산 , 분배
🔸 소프트웨어 매뉴얼
🔹 소프트웨어 설치 매뉴얼 기본사항
- 소프트웨어 개요
- 설치관련 파일
- 설치 아이콘
- 프로그램 삭제
- 관련추가 정보
🔹 소프트웨어 설치 매뉴얼 작성 프로세스
- 기능 식별 ▶ UI 분류 ▶ 설치파일 / 백업파일 확인▶ UnInstall 절차 ▶ 이상 Case 확인 ▶ 최종 매뉴얼적용
🔹 사용자 매뉴얼 작성프로세스
- 작성 지침 정의 ▶ 구성 요소 정의 ▶ 구성 요소별 내용 작성 ▶ 사용자 매뉴얼 검토
🔹 소프트웨어 국제 표준 품질 특성
- ISO/IEC9126 : 소프트웨어 품질 특성
- ISO/IEC12119 : 제품 품질 요구사항 , 테스트를위한 표준
- ISO 9001 : 품질보증 모델
🔹 소프트웨어 품질목표
- 정확 , 신뢰 , 사용용이 , 효율 , 무결성
- 이식성 , 상호운영성 , 재사용성
- 유지보수 , 유연 , 시험 역량
🔹 관점별 분류
- 사용자 : 신뢰 , 효율 , 용이 , 간결
- 개발자 : 검증가능 , 유지보수 , 이식 , 무결성 , 사용성
- 프로젝트 관리자 : 생산성 , 제어용이성
🔹 ISO/IEC 25000
- SQuaRE
- 품질 관리
- 품질 모델
- 품질 측정
- 품질요구
- 품질 평가
💡25000 - 관모 측요평
🔹 소프트웨어 버전관리
- 공유폴더
공유 폴더에 복사 , PC로 다운로드
RCS ,SCCS - 클라이언트 서버
중앙서버에서 형상관리 시스템 , 모니터링 가능
CVS SVN - 분산저장소
개인로컬 저장소에 복사하여 개발한 뒤 , 원격저장소에 반영
Git
🔸 테스트 관리
🔹 소프트웨어 테스트
- 품질향상 : 반복적 테스트
- 오류발견 : 잠재된 오류 발견
- 오류예방 : 코드 리뷰 , 동료검토 , 인스펙션을 통해 발견
🔹 파레토법칙
- 2:8 법칙 : 전체 결과 가 전체 인원의 20%에서 일어나는 현상
🔹 테스트 커버리지
- 구문커버리지
- 결정커버리지
- 조건커버리지
- 조건/결정 커버리지
- 다중 조건 커버리지
🔹 V모델 테스트
🔹 시각에 따른 테스트
- 검증 테스트 : 제품이 명세서 대로 완성되었는지 , 개박자의 시각에서
- 확인 테스트 : 사용자의 요구사항을 수행했는지 , 사용자의 시각에서
🔹 테스트케이스 자동생성
자료 흐름도 → 테스트 경로 관리 → 입력 도메인 분석 → 테스트 데이터 산출 → 무작위 값 입력 , 신뢰성 검사
🔹 테스트 레벨 종류
- 단위 테스트 : 개발자 , 특정 모듈 테스트 , 객체지향에서 클래스 테스팅
- 통합 테스트 - 오류 및 결함 찾기
- 시스템 테스트 : 실제로 시스템에 적용이 되었는지 /// 기능적: 블랙박스 , 비기능적 : 화이트박스
- 인수 테스트 : 고객이 직접 테스트 - 알파 , 베타
🔹 인수테스트
알파 테스트 (개발사 내에서)
- 개발자의 장소에서 사용자가 개발자 앞에서 행한다
베타 테스트 (개발사 외에서)
- 개발자 없이 선정된 다수의 사용자가 사용자의 환경에 프로그램 설치 후 일정기간 테스트
🔸애플리케이션 테스트
🔹 정적 테스트 : 명세서 , 소스 코드를 대상으로 분석
- 개발 비용 낮춘다
- 개발 초기에 결함 발견 가능
- 구조를 분석해서 논리성 검증
- 리뷰 , 동료 검토 , 워크스루 , 인스펙션
🔹 동적 테스트 : 직접 실행하여 오류를 찾는 테스트
- 소프트 웨어 개발의 모든 단계에서 테스트
- 블랙박스 테스트, 화이트박스 테스트
🔹 블랙박스 테스트 (명세 기반)
- 안을 볼수 없다
- 동작 위주의 테스트
- 외부 사용자의 요구사항 명세서 보면서 테스트 (기능)
- 입력 출력만 비교
- 경계값 분석 : 동치분할을 보안한 기법 . 입력조건 경계값에서 오류 발생확률이 크다는 것을 활용해 테스트
- 원인 효과 그래프 : 입력 데이터 간의 관계와 출력
- 오류예측 : 과거의 경험
- 비교검사 : 동일한 테스트 자료를 여러번 입력 시 동일한 결과 출력되는지
- 동치 분할 : 입력자료에 초점
🔹 화이트 박스 테스트 (구조 기반)
검증기준 : 문장 , 조건 , 분기 , 조건/분기
- 안에 내용을 볼수 있다
- 내부구조와 동작은 검사한다
- 모든문장 1번이상 수행
- 설계서나 소스 코드 기반
- 제어구조에 따라 검사
🔹 테스트 기반에 따른 테스트
- 구조기반 : 소프트웨어 내부 구조에 따라 테스트 , 구문기반 , 결정 기반 , 조건 , 데이터흐름
- 명세 기반 : 사용자 요구사항에 대한 테스트 , 동등 , 경계값 , 분류 , 상태전이 , 결정 테이블 ,원인결과 ,시나리오
- 경험기반 : 테스터의 경험을 기반으로 테스트 , 에러 추정 , 체크리스트 , 탐색적 테스트
🔹 목적에 따른 테스트
- 성능 : 응답시간 , 처리량
- 회복 : 고의로 부하를 가해 실패하도록 유도하고 복구가 되는지
- 구조
- 회귀
- 안전 : 불법 소프트웨어 접근못하게
- 강도 : 과도하게 부하를 걸어도 정상적으로 실행되는지
- 병행
🔹 테스트 장치
테스트 드라이버
- 하위 → 상위 모듈로 통합 하면서 테스트하는 상향식 테스트에서 사용
- 제어하고 동작시키는데 단순히 사용되는 도구
- 테스트 대상의 하위모듈 호출 , 매개변수 를 전달 , 모듈 테스트 수행 후 결과를 도출
- 하위모듈을 호출하는 상위모듈의 역할
테스트 스텁
- 상위 → 하위 모듈방향으로 통합하는 하향식 테스트에서 사용
- 제어 모듈이 호출하는 타 모듈의 기능을 수행하는 도구
- 임시로 제공되는 시험용 모
테스트 슈트
- 테스트대상 컴포넌트나 모듈시스템에 사용되는 테스트의 집합 또는 패키지
- 시나리오가 포함하지않은 테스트케이스 집합
테스트 케이스
- 입력값 , 실행조건 , 기대결과 의 집합
테스트 스크립트
- 테스트 케이스의 실행 순서(절차)를 작성한 문서
- 수행경로에 영할을 미칠 논리조건들을 포함
- 테스트 스텝 , 테스트 절차서 라고함
목 오브젝트
- 테스트를 위해 사용자 행위를 미리 조건부로 입력해 두고 상황에 맞는 행위를 수행하는 객체
🔸통합테스트
🔹 단위테스트 - 처음만든 모듈 , 컴포넌트를 테스트하는것 사용자의 요구사항을 기반으로 가장먼저 수행
🔹 통합테스트
비점진적 통합(빅뱅)
- 모든 모듈이 결합된 프로그램 전체를 테스트
- 규모가 작은 소프트웨어에 적합
점진적 통합(상향/하향)
- 단계적으로 통합
- 오류 수정이 쉽다
- 인터페이스 관련 오류 테스트 할수 있다
🔹 하향식 통합
- Stub 사용
- 우선통합 , 깊이 우선 , 넓이 우선 통합법
- 상위 컴포넌트 테스트 이후 하위 컴포넌트 검사
🔹 상향식 통합
- Driver 사용
- 최하위 레벨의 모듈, 컴포넌트부터 점진적으로 상위모듈과 함께 테스트 하는 기법
🔹 빅뱅 통합
- 한번에 테스트 하기 때문에 Stub , Driver 없이 실제 모듈들로 테스트
🔹 샌드위치 통합
- 상향식 , 하향식 의 장점을 이용
- 하위 프로젝트가 있는 대규모 프로젝트에서 사용
- 시간 절약 , 병렬 테스트 , 비용이 많이 들어간다
상향식 | 하향식 | 빅뱅 | |
수행 | 하위 → 상위 | 상위 → 하위 | 동시 |
드라이버 | 스텁 | 실제 모듈로 테스트 | |
장점 | 장애 위치 확인 가능 모든 모듈이 준비 되어 있지 않아도된다 |
장애 위친 확인 가능 초기 프로토 타입 가능 |
소규모 시스템 단기간에 테스트 |
단점 | 초기 프로토 타입 불가 | 많은 스텁필요 낮은 수준 모듈은 부적절한 테스트 가능성 |
장애위치 확인 어려움 모든 모듈이 개발 준비되어 있어야함 |
🔸 결함관리
🔹 결함
- 에러
- 결함 Defect
- 결점 Fault
- 버그
- 실패 Failure
🔹 심각도별 분류
- 치명적
- 주요 Major
- 보통
- 경미한 Minor
- 단순 Simple
결함 우선순위 : 결정적 ,높음 보통 낮음 또는 즉시해결 , 주의요망 , 대기 , 개선권고
▶심각도가 높다고 반드시 우선순위가 높은게 아니다
🔹 결함 추적순서
- 결합 등록 → 결함 검토 → 결함 할당 → 결함수정 → 결함 조치 보류 → 결함 해제
🔹 결함 관리 도구
- Mantis : 단위별 작업 내용을 기록 , 결함 , 이슈관리 , 추적을 지원하는 오픈소스 도구
- Trac : 결함 추적 및 통합 관리를 지원하는 오픈소스 도구
- Bugzilla : 결함을 지속적으로 관리 , 심각도 , 우선순위
- Redmine : 프로젝트 관리 및 결함 추적도구
- JIRA : 아틀래시안에서 제작 , PHP로 개발된 결함상태 관리
- Test Collab : 테스트 케이스를 관리하기 위한 간단하고 쉬운 인터페이스 제공 ,완벽한 통합지원
🔹 결함관련 용어
- 에러 : 개발자의 실수 , 오타 , 잘못된이해
- 오류 : 잘못된 연산자 , 비정상적인 프로그램 과 정상적인 프로그램의 버전간의 차이
- 실패 : 정상 프로그램과 비정상 프로그램의 실행결과 차이
- 결함 : 버그 , 에러 , 오류 ,실패 , 프로그램 실행에 대한 문제점 , 전체를 포괄하는 용어
🔹 결함 내성 Fault Tolerance
- 결함 , 고장이 발생 하여도 정상적 혹은 부분적으로 기능을 수행할 수 있는 내성을 의미
🔸 애플리케이션 성능개선
🔹 성능 측정 지표
- 처리량 Throughput : 주어진 시간내에 처리할수 있는 프로세스 처리 수
- 응답시간 Response Time : 데이터 입력 완료시부터 응답 출력이 개시될 때 까지의 시간
- 경과시간 Turnaround Time 입력한 시점부터 그결과의 출력이 완료할 때 까지 걸리는 시간
- 자원 사용율 Resuouce Usage : 프로세스 처리중 사용하는 CPU사용량 , 메모리 사용량 , 네트워크 사용량
🔹 성능 분석도구
- 성능 , 부하 , 스트레스 점검도구 : 처리량 , 응답시간 , 경과 시간을 점검하기 위해 가상의 시스템 부하
스트레스를 통해 성능을 분석 - 모니터링 도구 : 성능 모니터링 , 성능 저하원인 분석 , 시스템 부하량 분석 , 장애진단 , 사용자 분석 , 용량산정 등
기능을 통해 애플리케이션 실행시 자원 사용량 확인하고 분석 가능한 도구
🔹 DB 연결 및 쿼리 실행시 발생되는 성능 저하 원인
DB Lock
- 과도한 데이터 조회 / 업데이트 / 인덱스 생성시 발생
- Lock 해제 시 까지 대기하거나 처리되지 못하고 종료
불필요한 DB Fetch
- 필요한 데이터 보다 많은 대량의 데이터 요청이 들어올 경우 발생
- 응답시간 저하 현상이 발생
연결누수 Connection Leak
- DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을경우 발생
부적절한 Connection Pool Size
- 커넥션 풀 크기가 너무 작거나 크게 설정한 경우 발생
기타
- 트랜잭션이 Commit 되지 않고 커넥션 풀에 반환 , 잘못작성된 코드로 불피요한 Commit 자주 발생 하는 경우
🔹 소스코드 품질분석 도구
정적분석 도구 : 개발초기
- 소스코드 검증 , 코드 리뷰 , 리버스 엔지니어링
- pmd , cppcheck ,SonarQube , checkstyle , ccm , cobertura
동적분석 도구
- Avalanche , Valgrind
정적분석 | 동적 분석 | |
분석 대상 | 소스코드 | 실제 애플리케이션 |
평가 기술 | 오염분석 , 패턴비교 | 애플리케이션 실제 실행 |
단계 | 애플리케이션 개발 단계 | 애플리케이션 개발 완료 |
🔸 인터페이스 구현
🔹 모듈연계
EAI : 기업내에서 운영하는 이기종 간의 정보 전달, 연계, 통합이 가능하도록 하는 솔루션
1️⃣ Point-to-Point
- 가장 기초적인 애플리케이션 통합 방법 1:1 단순통합
- 변경 , 재사용 X
2️⃣ Hub & Spoke
- 중앙 (허브) 집중 방식
- 확장 보수에 용이하다
- 허브 장애시 전체 장애 발생
3️⃣ Message Bus
- 미들웨어 (버스 ) 를 두어 연계한다
- 뛰어난 확장성 , 대용량 데이터 처리
4️⃣ Hybrid
- Hub& Spoke (그룹 내 ) + Message Bus (그룹 간 ) 통합 방식
EBS : 애플리케이션 간의 데이터 변환 , 연계 지원을 제공하는 인터페이스 제공솔루션
- 애플리케이션 통합 관점으로는 EAI와 비슷 , 애플리케이션 보다는 서비스 중심이다
🔹 AJAX
- JS 를 사용한 비동기 통신
- 클라이언트와 서버 간에 XML 데이터 주고 받는 기술
- 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해 전체 페이지를 새로 곷침하지 않고 일부만 데이터를 로드
🔹 JSON
- 데이터 통신을 이용한 인터페이스 구현방법
- 웹과 컴퓨터 프로그램에서 용량이 적은 데이터를 교환하기 위해 객체를 속성 ,값 쌍의 형태로 표현
🔹 인터페이스 구현 검증도구
- Watir - Ruby 기반 , 모든 언어 기반 웹애플리케이션 테스트와 브라우저 호환성 테스트
- xUnit - Java(Junit) , C++ , .Net 다양한 언어 지원 , 함수 클래스 다른 구성단위 테스트
- FitNess - 웹 기반 테스트 케이스 , 자동으로 빠르고 쉽게 테스트
- STAF - 서비스 호출 , 컴포넌트 재사용 , 데몬응 사용 분산환경에서 테스트
- NTAF Naver - 테스트 자동화 프레임워크 STAF + FitNess 통합
- Seleniun - 스크립트 언어없이 기능테스트 작성을위한 플레이백 도구 제공
🔹 인터페이스 구현 감시도구
- APM - 동작상태 감시
- 대표 : 스카우터 , 제니퍼
🔸 인터페이스 보안
🔹 인터페이스 보안
- 데이터 통신시 데이터 탈취 위협
스니핑 : 네트워크 주변을 다니며 계정과 비밀번호를 알아낸다
스푸핑 : 일반 사용자가 인터넷상에서 통신하는 정보를 크래서 사이트를 통하도록해 비밀번호를 알아낸다 - 데이터 베이스 암호화
DB 기밀성 유지
대칭키 , 해시 , 비대칭키 알고리즘 사용 - 시큐어 코딩
OWASP Top10 참고 KISA에서 SW 보안 약점 가이드 발표 , 보안 취약점 , 약점 대응반안이 서술됨
🔹 네트워크 보안 적용
▶ Transport Layer Network 보안
- 상대방 인증을 적용 : IPSec AH 프로토콜 적용
- 데이터 기밀성 보장이 필요 : IPSec ESP
- End-to-End : IPSec Transport Mode
- Application Layer Network 보안
서버만 공개키 인증을 가지고 통신 (위험 분산) : SSL
연결단위 외 메시지 단위로도 인증및 암호화 필요 : S-HTTP 적용해 메시지를 암호화 (성능 저하됨)
'자격증 > 정보처리' 카테고리의 다른 글
모의고사 1과목 오답노트 - 기록 (1) | 2024.02.18 |
---|---|
정보 시스템 구축관리 (1) | 2024.02.17 |
데이터베이스 구축 (1) | 2024.02.12 |
소프트웨어 개발 - 2 자료구조 (1) | 2024.02.06 |
소프트웨어 설계 (1) | 2024.01.22 |