소프트웨어공학 44

소프트웨어 구현_리펙토링(Refactoring), method (extract , move, rename, inline), bad smell, 코드 스멜

▣ 소프트웨어 구현_리펙토링(Refactoring), method (extract , move, rename, inline), bad smell ■ Refactoring 대상 , Code Smell 종류 구분 설명 해결방법 중복코드 (Duplicated Code) 같은 코드가 두 군데 이상 존재할 때 서브 클래스에 같은 코드가 존재할 때 메서드 추출, 클래스 추출, 메서드 상향, 템플릿 메서드 형성 장황한 메소드 (Long Method) 메서드 안의 내용이 너무 길다 Replace Parameter with Method 매개변수 세트를 메소드로 전환 Introduce Parameter Object 매개변수 세트를 객체로 전환 Reserve Whole Object 객체를 통째로 전달하는 기법 방대한 클래스..

소프트웨어 테스트 관련 표준_ISO/IEC/IEEE 29119-2, IEEE 730(품질 보증 계획), IEEE 829(테스트 케이스 구성요소), 테스트 설계, 테스트 가능성

▣ SW 테스트 관련 표준_ISO/IEC/IEEE 29119-2, IEEE 730(SW 품질 보증 계획), IEEE 829(테스트 케이스 구성요소), 테스트 설계, 테스트 가능성 테스트 설계 및 구현 프로세스 ■ IEEE 730(SW 품질 보증 계획 수립에 관한 지침) (IEEE Guide for Software Qualtity Assurance Planning(SQAP)) 6.2 요구되는 검토 1) SW 요구사항 검토(SRR) 2) 상위수준 설계 검토(HLDR) 3) 하위수준 설계 검토(LLDR) 4) SW검증 및 확인 계획서 검토(SVVPR) 5) 기능적 검토 : SRS의 요구사항과 제품의 부합성 확인 6) 물리적 검토 : 문서와 제품의 일관성, 인도준비 상태 확인 7) 프로세스 검토 : 코드와 설계..

테스트 설계기법_동적테스트_구조기반(화이트박스), 구문, 문장, 조건, 결정, 조건 결정, 변경 조건, 다중 조건, 경로 커버리지

▣ 테스트 설계기법_동적테스트_구조기반(화이트박스), 구문, 문장, 조건, 결정, 조건 결정, 변경 조건, 다중 조건, 경로 커버리지 상세기법 조건 설명 구문 or 문장 커버리지 (SC, Statement Coverage) 문장 1회 모든 문장이 적어도 한번 실행 테스트 Suite(테스트 케이스 묶음)에 실행된 구문이 몇 퍼센트인지를 측정 분기 or 결정 커버리지 (DC, Decision Coverage) T/F 모든 결정의 분기가 적어도 한번씩은 실행되어야 함 조건 커버리지 (CC, Condition Coverage) TF, FT 전체 조건식의 결과와 관계없이 각 개별 조건식이 참/거짓 한번 모두 갖도록 수행 조건/결정 커버리지 (C/DC, Condition Decision Coverage) TT, F..

프로세스 품질 관련 표준_SPICE(ISO 15504), CMM, CMMI, ISO/IEC 12207 생명주기

▣ 프로세스 품질 관련 표준_SPICE(ISO 15504) 여러 프로세스 개선 모형을 국제표준으로 통합한 ISO 소프트웨어 프로세스 모형으로 소프트웨어 프로세스에 대한 개선 및 능력 측정 기준 ■ 프로세스 차원의 5개범주 - 기본 프로세스 : CUS(고객-공급자), ENG(공학) - 지원 프로세스 : SUP(지원) - 조직 프로세스 : MAN(관리), ORG(조직) ■ 프로세스 수행능력 차원의 6 단계 암기 - 불수관확예최 ■ SPICE 2차원 평가 모델 기준 설명 프로세스 차원 (Process Dimension) -5개의 프로세스 카테고리와 40개 세부 프로세스로 구성 -ISO 12207의 소프트웨어 생명주기 프로세스를 기반으로 함 -각 프로세스 별로 목적을 달성하기 위한 기준이 제시됨. 프로세스 수행..

SW 개발 방법론_애자일(Agile) 개발_기본가치, 원칙, XP, 스크럼 Scrum, Crystal, TDD, DSDM, 스프린트, 번다운, 번업

▣ SW 개발 방법론_애자일(Agile) 개발_기본가치, 원칙, XP, 스크럼 Scrum, Crystal, TDD, DSDM, 스프린트, 번다운, 번업 ■ 애자일 기본가치 • 계약과 협상 중심이 아닌, 고객과의 협력을 중시 • 계획 중심이 아닌, 변화에 대한 민첩한 대응을 중시 • 문서 중심이 아닌, 실행 가능한 소프트웨어를 중시 • 프로세스와 도구 중심이 아닌, 개개인과의 상호 소통을 중시 암기 : 고변동개 ■ 애자일 원칙 • 최우선적인 목표는 고객을 만족시키기 위해 가치 있는 소프트웨어를 빨리, 지속적으로 제공하는 것 • 개발 후반에 새로 추가되는 요구 사항도 기꺼이 받아들인다. 애자일 프로세스는 고객의 경쟁력을 위해 요구 사항의 변경을 받아들인다. • 동작 가능한 소프트웨어를 짧으면 2주, 길면 2..

단위 테스트(컴포넌트 테스트)_드라이버(Driver), 스텁(Stub), 오라클(Oracle), 통합 테스트

▣ 단위 테스트(컴포넌트 테스트)_드라이버(Driver), 스텁(Stub), 오라클(Oracle), 통합 테스트 - 테스트 드라이버(Driver) : 테스트 대상 모듈을 호출하는 더미 프로그램 - 테스트 스텁(Stub) : 테스트 대상 모듈에 의해 호출되는 프로그램 ■ 테스트 관련 용어 - 테스트 베이시스(Test Basis) : 테스트케이스 생성시 기초 자료 (기능, 요구사항, 제약사항명시) - 테스트 케이스(Test Case) : 특별한 목표 또는 상황을 테스트 하기 위한 입력값, 사전조건, 예상 결과, 사후조건 들의 집합 - 테스트 수트(Test Suite) : 테스트 대상 컴포넌트나 시스템에 사용되는 여러 테스트 케이스 집합으로 TestCase간 사전/사후조건 연관 관계 포함 - 테스트 스크립트(..

테스트 설계기법_동적테스트_명세기반(블랙박스)_ 동등분할, 경계값분석, 의사결정테이블, 상태전이, 유즈케이스, 분류트리, 페어와이즈, 클래스 태스팅 기법

▣ 테스트 설계기법_동적테스트_명세기반(블랙박스)_ 동등분할, 경계값분석, 의사결정테이블, 상태전이, 유즈케이스, 분류트리, 페어와이즈 - 프로그램 구조를 고려하지 않고 프로그램의 요구 사항 명세서를 기반으로 테스트 케이스를 선정하여 테스트하는 기법 - Black Box Test : 시스템 내부는 Black Box로 간주 - Data Driven: 입출력 데이터 흐름에 초점 기법 개념도 내용 동등분할 (Equivalence Class Partitioning) 대표값을 이용 테스트 케이스도출 입력 정보를 유사한 특징을 가진 클래스로 분류, 각 클래스의 대표 테스트 케이스를 작성하는 방법 - 클래스는 유한개의 독립적 집합으로 분리 - 동일한 입력에 대해서는 동일한 결과 - 출력 결과에 대해서도 동등분할 경계..

제품 품질 관련 표준_ISO/IEC 25010:2011, 기신사효유이 보호, ISO 9126, ISO 25000, 품질속성

▣ 제품 품질 관련 표준_ISO/IEC 25010:2011, 기신사효유이 보호, ISO 9126, ISO 25000, 품질속성 암기 : 기신사효유이+보호 기성정타 (Functional suitability, completeness, correctness, appropriateness) 신성결함복구가(Reliability, maturity, Fault tolerance, recoverability, availability) 사이학운인오접(Usability, understandability, learnability, operability, userinterface aesthetics, user error protection, accessibility) 성시자용(Performance Efficiency, ti..

테스트 설계기법_정적분석_복잡도 분석_순환복잡도(Cyclomatic Complexity), 의사코드(psuedo code), 제어 흐름 그래프(control flow graph), McCabe

▣ 테스트 설계기법_정적분석_복잡도 분석_순환복잡도(Cyclomatic Complexity) - McCabe는 프로그램의 이해 난이도는 주로 그 프로그램에 대한 제어 흐름 그래프의 복잡도에 의해서 결정 된다는 사실을 관찰 - 순환복잡도 계산 방식 CC = R의 수 CC = E - N + 2 CC = P + 1 * 참고 R(Region) : 노드와 가장자리 노드를 둘러싸인 영역과 그래프 밖 영역의 수 E(Edge) : 화살표의 수 N(Node) : 노드의 수 P(Predicate) : 분기 노드의 수(if, for, while, try 문) * 분기로 계산되는 프로그램 코드 키워드 if / else if / for / while / do while / try catch : 1개로 카운트 switch문 안의..

SW 개발 방법론_소프트웨어 프로덕트 라인(software product lines)

▣ SW 개발 방법론_소프트웨어 프로덕트 라인(software product lines) - Domain Specific하게 재사용할 단위인 Core Assets을 미리 개발 하고, 실제 Product 를 개발하는 것은 이미 재사용의 단위로써 만들어진 Core Assets 을 이용하여 여러 Products를 만들어내자는 접근방법 - 도메인 공학으로 제품간의 공통성과 가변성을 추출하여 Core Asset개발 - 특정 시장이나 사업 전략에 구분되는 공통적인 기능 집합(Platform)을 가지는 제품 - 컴포넌트가 조립될 수 있는 프레임워크를 제공하는 아키텍처를 기반으로, 필요한 컴포넌트를 선택적으로 조립함으로써 시장의 요구사항에 맞는 시스템을 생산 하는 방식 ■ 소프트웨어 프로덕트 라인의 구성 요소 구분 내..