embedded exam
기능적 요구사항
수행 기능과 관련되어 입출력 처리
제품 구현을 위해 SW가 가져야 하는 속성
비기능적 요구사항
품질 기준 만족을 위해 SW가 가져야 하는 속성
성능, 사용성, 안전성과 같은 행위적 특성
사용자 요구사항
시스템의 외부 동작을 지정
시스템 설계 특성은 회피
표준 양식에 따르게
은어 사용 회피
Volere 요구 공법
시스템 요구사항
시스템 설계 시작 시점에
SW공학자가 사용자 요구사항을 확장한 버전
계약서의 일부로 사용
일관성 필요
외부 동작과 운영 제약을 간단히 기술
요구사항 추출
고객이 원하는 요구사항 수집
개발되는 시스템에 대한 사용자 요구와
시스템 기능 및 제약사항 식별
계약 및 최초 산정의 기본
요구사항 발견
제안된 시스템과 기존 시스템 정보 수집
사용자 요구사항과 시스템 요구사항 걸러내기
인터뷰와 관찰
요구사항 분석
식별 가능한 모든 문제를 도출하고 이해
추상적 요구사항을 일관성 있는 요구사항으로 정리
시스템을 계층적, 구조적으로 표현
외부-인터페이스-내부 정확히 분석
설계, 구현 단계에 정보 제공
요구사항 명세
분석된 요구사항을 명확하고 완전하게 기록
수행할 모든 기능과 모든 제약
합의한 성능에 대해 명세
사용자, 분석가, 개발자, 테스터 공통의 목표 제시
어떻게 수행될 것인가가 아닌
무엇을 수행할 것인가 기술
요구사항 검증
사용자 요구사항이 명세서에 바르게 기재되었나
목적의 완전성
표준 준수
일관성
완전성
정당성
현실성
요구사항 관리
요구사항 식별
변경관리 프로세스
추적관리 정책
CASE 도구
출처 추적
요구사항 추적
설계 추적
SW 아키텍쳐 구조
구성요소의 집합 그 자체
시스템에 대한 서로 다른 관점과 설계방법 제공
SW 아키텍쳐 뷰
이해관계자가 이용하고 작성한
연관성 있는 구성요소의 집합
시스템 구축 시 설계서와 규정 역할
모듈 뷰 : 모듈 구조의 문서화 표현
가용성 전술
결함 존재 여부 파악 및 복구
결함 탐지, 결함 복구, 결함 방지
ping/echo
HeartBeat
변경용이성 전술
구현, 테스트, 배치의 변경으로 인한 시간 비용 제어
변경의 지역화, 파급 효과 방지, 바인딩 시점 연기
변경폭 제한, 정보 은닉, 인터페이스, 런타임등록
성능 전술
주어진 시간 안에 이벤트 처리
자원 요구, 자원 관리, 자원 조정
연산 효율, 병행 처리, 스케줄링
시험용이성 전술
점진적 개발 시 증분마다 쉬운 시험 수행
입/출력 관리, 내부 감시
인터페이스 분리, 내장 감시자
데이터 중심 아키텍쳐 스타일
컴포넌트에 의해 액세스 되는 자료 저장소를 중심
독립 컴포넌트들이 중앙의 데이터 저장소 조작
중앙의 저장소와 외부 컴포넌트 간 상호작용
데이터 흐름 아키텍쳐 스타일
입력 자료가 계산 컴포넌트를 거쳐 출력으로 바뀌는 아키텍쳐 스타일
일괄 연속형, 파이프-필터
호출 반환 아키텍쳐 스타일
주/서브프로그램, RPC, 객체지향, 계층형
QADA 기법
분산 네트워크 적용 가능 제품계열 아키텍쳐
4개 관점 : 구조, 행위, 배치, 개발 뷰
설계 시 스타일과 패턴 사용
ABD 기법
개념적 아키텍쳐 산출물을 위한 구조
시스템 분할의 반복
아키텍쳐 스타일 선택
SW 템플릿 적용 및 정제
ADD(CMU/SEI) 기법
Attribute Driven Design
품질속성의 분할 과정에 기초
설계 주요 요인 아키텍쳐 동인 선택
동인을 만족하는 아키텍쳐 스타일 선택
모듈 정제 및 필요시 절차 반복
Verification
산출물이 그 단계 조건을 만족하는가
인간에 의한 테스팅
산출물 위주의 검토
인스펙션, 워크쓰루, 동료 검토
주기 검증, 형식 검증
validation
요구사항 만족 확인을 위해 구성요소나 시스템 평가
컴퓨터 기반 테스팅- 실제SW 실행
하위 레벨 테스팅
단위, 통합
상위 레벨 테스팅
사용성, 기능, 시스템, 인수
시뮬레이션 단계
모델 기반 개발에서 기본 설계 증명 및 설계 최적화
단방향 시뮬레이션
피드백 시뮬레이션
프토로타이핑 단계
모델을 사용하지 않고
임베디드 개발의 첫단계
시뮬 모델 정당성 검증,
시스템 요구사항 만족여부 검증
시제품 단위의 릴리즈
명세 기반
블랙박스
문서 분석
기능/비기능 테스트 케이스 도출
구조 기반
화이트박스
컴포넌트/시스템 코드 분석
기개발 테스트 케이스 이용
추가 테스트 케이스 도출
등가 분할(도메인 테스팅)
입력 도메인을 등가 클래스로 분할
모든 입력값을 테스팅하는 대신
각 등가 클래스에서 하나의 입력 선택
경계값 분석
등가 클래스를 구분짓는 값들을 경계값으로 테스트
등가분할보다 많은 테스트 케이스 필요
결함 발견 기회 많음
결정 테이블
비즈 규칙을 결정 테이블로 만들고
테이블의 내용으로 테스트 케이스 도출
상태 전이
테스트 케이스 도출 원리
실시간 응답 요구, 이벤트 반응 처리
다기능 입출력
임베디드의 동적 상태에 대한 모델링
유스케이스
테스트 케이스 도출 원리
유스케이스나 비즈 시나리오 기반으로
테스트를 명세화
인수 테스트 설계시 유용
SW 획득 전략
프로그램 목표/목적을 달성하기 위한 마스터 플랜
로드맵, 청사진, 계획을 위한 계획
위험 최소화 계획 준비로
오류 감소 및 프로그램을 지도하고 통제
예산, 기술, 하드웨어, 요구사항
가용성, 과거 성능
요구 규모 및 기능
재사용성, 유지보수성
프로그램 기획 프로세스
시스템을 기능적 요소 또는 서브시스템으로 분해
아키텍텨의 계층적 구조 준수 및 인터페이스 타이밍/대역폭 고려 아키텍쳐 설계
오류 수정
비즈니스 룰, 코드 버그, 코딩 에러 수정
데이터 흐름, 예외 처리, 디자인 결함 수정
예방 조치
장기적으로 SW 기능 유지를 위해
발생 가능한 문제의 사전 차단 활동
환경 적응
통신 프로토콜, DB, 상호운용성 변경
구성 요소, 기술 및 리소스 등 외부 도입 상용제품의 변경
기능 개선
기능 구현 컴포넌트 알고리듬 추가
비즈 룰 추가 변경에 따른 개선
설계 패턴 기반의 재사용
1977년 건축가 크리스토퍼 알렉산더
패턴과 패턴 언어는 최선의 실무 관행, 좋은 설계를 기술하고
경험을 정리하여 다른 사람들이 경험을 재사용하는 것을
가능하게 하는 방안
패턴 이름
문제영역 설명
해결 부분 간의 관계, 책임
적용 결과, 이해득실
생성기 기반의 재사용
1998년 Biggerstaff
프로그램 생성기에 재사용 가능한 지식 포하
도메인 전문가가 도메인 중심 언어나
대화식 CASE 도구로 프로그램
비즈 데이터 처리 등에 유리
고성능에 불리
파서 생성기, CASE 도구 코드 생성기
프레임워크를 이용한
재사용
객체는 재사용으로서 단위가 너무 작고 특화
단위가 큰 추상화 프레임워크 재사용
추상/구상 클래스 및 이들 간이 인터페이스 모임
시스템 기반 구조
미들웨어 통합
엔터프라이즈 응용
애플리케이션을 이용한
재사용
가장 효과적인 재사용 기술
COTS 제품 재사용
소프트웨어 제품 라인 재사용
가장 효과적인 재사용 접근법
애플리케이션 특화된 공통 아키텍쳐 이용
다양한 유형으로 특화
설명형
SW 아키텍쳐 특성
이해 관계자 사이의 의사소통 수단
시스템을 이해하는 공통언어로 서로 다른 관점 이해
시스템 초기 설계 결정 사항 표현
제약 사항, 시스템 구조, 품질속성 등 표현
소프트웨어 아키텍쳐의 재사용
아키텍쳐 단계이 재사용은
유사한 요구사항 시스템에 적용 좋다
구조화된 테스트 5단계
테스트 상황 식별
논리 테스트 케이스 구체화
물리 테스트 케이스 구체화
초기 상황 설정
테스트 스크립트 조합
테스트 시나리오 정의(옵션)
재사용 이점 5개
확 실성 증가
프로세스 위 험 감소
전 문가 활용
표 준 준수
개발 속 도 증가
재사용 문제점 5
유지보수 비용 증가
도구 지원 결여
NIH 증후군
컴포넌트 라이브러리 생성 유지 비용
재사용 가능한 컴포넌트 검색/이해/수정 비용
2014
By Myung Woon, Oh
2014
- 636