gi_dor

소프트웨어 개발 - 1 본문

자격증/정보처리

소프트웨어 개발 - 1

기돌 2024. 1. 27. 20:34

🔸 단위모듈 - 하나의 기능을 하는 프로그램

🔹  모듈화원리 

  • 분할과 지배 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 적용해 메시지를 암호화 (성능 저하됨)
  •  

 

 

 

 

https://jjuha-dev.tistory.com/entry/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%8B%A4%EA%B8%B0-EAI%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%9C%A0%ED%98%95

 

[정보처리기사 실기] EAI의 개념과 유형

EAI(Enterprise Application Integration)란? : 기업에서 운영하는 이기종 간의 정보 전달, 연계, 통합이 가능하도록 하는 솔루션 ✅ 구성요소 : EAI 플랫폼, 어댑터, 브로커, 메시지 큐, 비즈니스 워크플로우 E

jjuha-dev.tistory.com

 

728x90

'자격증 > 정보처리' 카테고리의 다른 글

모의고사 1과목 오답노트 - 기록  (1) 2024.02.18
정보 시스템 구축관리  (1) 2024.02.17
데이터베이스 구축  (1) 2024.02.12
소프트웨어 개발 - 2 자료구조  (1) 2024.02.06
소프트웨어 설계  (1) 2024.01.22