2014년 12월 15일 월요일

[임베디드소프트웨어기술] 기말정리


  • SW 아키텍처 구조
    • 구성요소의 집합 그 자체로서 시스템에 대한 서로 다른 관점과 설계방법을 제공하며 그 자체로서 타당하고 유용

  • SW 아키텍처 뷰
    • 이해관계자가 이용하고 작성한 연관성 있는 구성요소의 집합

  • 모듈 구조
    • 시스템 모듈의 집합과 이들의 구성조직
    • 모듈: 구현 단위, 코드기반의 접근 방법에서 사용, 설계의 공통 시작시점
    • 모듈 구조: 분할, 사용, 계층, 상속의 형태

  • 컴포넌트-커넥터 구조
    • 컴포넌트: 실행시간의 주요 연산단위
    • 커넥터: 컴포넌트 간의 통신수단
    • 클라이언트-서버, 동시성, 프로세스, 공유 데이터

  • 할당 구조
    • 소프트웨어 구성요소와 외부환경의 구성요소 간 관계
    • 업무할당, 배치, 구현

  • 가용성 전술
    • 목표: 결함 존재시 결함의 존재여부 파악 및 복구
    • 결함탐지, 결함 복구, 결함 방지

  • 변경용이성 전술
    • 목표: 구현, 테스트, 배치의 변경으로 인한 시간과 비용을 제어
    • 변경의 지역화, 파급효과 방지, 바인딩 시점 연기

  • 성능전술
    • 목표: 주어진 시간 안에 시스템에 도달한 이벤트에 대한 응답을 생성
    • 자원 요구, 자원 관리, 자원 조정

  • 시험용이성 전술
    • 목표: 소프트웨어의 점진적 개발시 증분시마다 쉬운 시험 수행
    • 입력/출력 관리, 내부 감시

  • 사용편의성 전술
    • 목표: 사용자가 의도한 작업의 쉬운 달성
    • 사용자 인터페이스 분리, 사용자/시스템 발의 지원

  • 보안성 전술
    • 목표: 다양한 경로를 통해 인증되지 않은 접근 발생시 공격 저지 및 복구
    • 공격 저지, 공격 탐지, 공격 복구

  • 데이터 중심 아키텍처 스타일
    • 컴포넌트에 의해 액세스되는 자료 저장소를 중심으로 하는 아키텍처 스타일
    • 독립 컴포넌트들이 중앙의 데이터 저장소를 조작
    • 중앙의 데이터 저장부와 외부 컴포넌트 간 상호작용을 통해 시스템의 중요 기능들이 수행
<데이터 중심 아키텍처 스타일>

  • 데이터 흐름 아키텍처 스타일
    • 입력 자료가 계산 컴포넌트를 거쳐 출력으로 바뀌는 아키텍처 스타일
    • 유형: 일괄 연속형, 파이프-필터
<데이터 흐름 아키텍처 스타일>

  • 호출 반환 아키텍처 스타일
    • 유형: 주/서브프로그램, 원격 프로세서 호출, 객체-지향, 계층형
<호출 반환 아키텍처 스타일>

  • QADA 기법 (Quality Driven Architecture Design & Analysis)
    • 분산 네트워크 시스템에 적용 가능한 제품계열 아키텍처
    • 4개 관점: 구조, 행위, 배치, 개발 뷰
    • 아키텍처 설계시 스타일과 패턴 사용



  • ABD 기법 (Attribute Based Design)
    • 시스템의 개념적 아키텍처 산출물을 위한 구조
    • 시스템 분할의 반복되면서 디자인
    • 아키텍처 스타일 선택
    • 소프트웨어 템플릿 적용 및 정제

  • ADD 기법 (Attribute Driven Design)
    • 품질 속성의 분할 과정에 기초하여 소프트웨어 아키텍처 정의
    • 설계에 주요한 영향을 미치는 아키텍처 동인 선택
    • 동인을 만족하는 아키텍처 스타일 선택
    • 모듈 정제 및 필요시 절차 반복

  • 테스트 베이시스
    • (볼펜) 테스터가 볼펜으로부터 기대되는 것이 무엇인지에 대한 정보
    • 결정의 기초

  • 테스트 전략
    • 테스트의 가장 중요한 것
    • 테스트 깊이 수준 등을 결정하는 활동의 결과

  • 화이트박스 테스트
    • 논리 테스트
    • 정의: 모듈사양서 또는 소스 프로그램을 기초로 모듈의 논리 테스트
    • 기준: 프로그램의 내부명세 근거
    • 테스트기준: 논리상의 오류(처리 순서상의 오류)

  • 블랙박스 테스트
    • 기능 테스트
    • 정의: 모듈사양서를 기초로 입력 조건이나 출력 조건, 예외처리, 오류처리 등 모든 기능면의 테스트
    • 기준: 프로그램의 외부명세 근거
    • 테스트 기준: 인터페이스 기능 성능에러, 초기 또는 종료에 관한 에러

  • 베리피케이션
    • 정의: 개발단계의 산출물이 그 단계의 초기에 설정된 조건을 만족하는지 여부를 결정하기 위해 구성 요소나 시스템을 평가하는 프로세스
    • 특징: 인간에 의한 테스팅 - 주로 산출물 위주의 검토형태
    • 종류: 검사, 검토, 동료 검토, 주기 검증, 형식 검증

  • 밸리데이션
    • 정의: 명시된 요구사항들을 만족하는지 여부를 확인하기 위해 개발단계 말이나 중간에 구성요소나 시스템을 평가하는 프로세스
    • 특징: 컴퓨터 기반 테스팅 - 실제적으로 소프트웨어를 실행
    • 종류
      • 하위레벨 테스팅 - 단위 테스팅과 통합 테스팅
      • 상위레벨 테스팅 - 사용성 테스팅, 기능 테스팅, 시스템 테스팅, 인수 테스팅

  • 시뮬레이션 단계 (Temb 환경 첫번째 단계)
    • 목적: 모델 기반 개발에서의 기본설계 증명 및 설계 최적화
    • 단방향 시뮬레이션
      • 독립적으로 테스트
      • 환경과의 동적인 상호작용은 무시
    • 피드백 시뮬레이션
      • 시뮬레이트된 가상의 임베디드 시스템과 플랜트 사이의 상호작용을 테스트
      • 제어법칙을 검증
    • 래피드 프로토타이핑
      • 가상의 임베디드 시스템은 실제 환경과 연결되어 테스트
      • 시뮬레이션 모델의 타당성 확인

  • 프로토타이핑 단계 (Temb 환경 두번째 단계)
    • 모델을 사용하지 않고 임베디드 시스템 개발시의 첫단계
    • 목표: 시뮬레이션 모델에 대한 정당성 검증, 시스템 요구사항 만족 여부 검증, 시제품 단위의 릴리즈
    • 테스트 레벨
      • 소프트웨어 단위 테스트
      • 소프트웨어 통합 테스트
      • 하드웨어/소프트웨어 통합 테스트
      • 시스템 통합 테스트
      • 환경 테스트

  • 명세 기반
    • 테스트 설계 기법 분류방법중 하나
    • 블랙박스 기법
    • 테스트 베이시스 문서 분석
    • 기능적/비기능적 테스트 케이스 도출

  • 구조 기반
    • 테스트 설계 기법 분류방법중 하나
    • 화이트박스 기법
    • 컴포넌트/시스템 코드 분석
    • 기개발 테스트 케이스 이용
    • 추가 테스트 케이스 도출

  • 등가 분할 (= 도메인 테스팅)
    • 입력 도메인(모든 가능한 입력값)을 등가 클래스로 분할
    • 모든 가능한 입력값을 테스팅하는 대신, 각 등가 클래스로부터 하나의 입력을 하는 것으로 충분

  • 경계값 분석
    • 등가 클래스를 구분짓는 값들이 경계값으로 간주
    • 등가 분할보다 많은 테스트 케이스 생성하나 결함 발견 기회는 증가

  • 결정 테이블
    • 시스템의 복잡한 비즈니스 규칙을 결정 테이블로 만들고 이 테이블의 내용으로 테스트 케이스를 도출

  • 상태 전이
    • 실시간 응답 요구, 이벤트 반응 처리, 다기능 입출력 등의 특징을 갖고 있는 임베디드 시스템의 동적 상태에 대한 모델링 방법

  • 유스케이스
    • 유스케이스나 비즈니스 시나리오 기반으로 테스트를 명세화하여 인수 테스트 설계시 매우 유용

  • 로직 처리
    • 테스트되어야 할 프로그램, 기능 또는 시스템 처리 로직에 대한 상세한 지식에 근거하여 도출
    • 처리절차 = 결정포인트 + 행동

  • 체크리스트
    • 체계적으로 도축되기 보다는 테스트 경험과 노하우를 정라히고 목록화하여 차기 테스팅에서 해당 내용을 누락없이 재활용하는 것을 목적으로 작성
    • 대상: 테스팅 절차, 테스트 대상 기능, 시스템 요소

  • 오류수정
    • 비즈니스 룰, 코드 버그, 코딩 에러 수정
    • 데이터 흐름, 예외처리, 디자인 결함 수정

  • 예방조치
    • 장기적으로 SW 기능 유지를 위해 발생 가능한 문제의 사전 차단활동

  • 환경적응
    • 통신 프로토콜, 데이터베이스, 상호운용성 변경 등
    • 구성요소, 기술 및 리소스 등 외부도입 상용제품의 변경

  • 기능개선
    • 기능을 구현하는 컴포넌트나 알고리즘 추가
    • 비즈니스 룰의추가 및 변경에 따른 개선

  • 설계패턴 기반의 재사용
    • 1977년 Christopher Alexander가 주창한 아이디어에서 유래
    • 재사용에서의 패턴의 역할
      • 패턴과 패턴 언어는 최선의 실무관행, 좋은 설계를 기술하고 경험을 정리하여 다른 사람들이 경험을 재사용하는 것을 가능하게 하는 방안

  • 생성기 기반의 재사용
    • 1998년 Biggerstaff가 제시
      • 프로그램 생성기에 재사용 가능한 지식을 포함
      • 도메인 전문가가 도메인 중심 언어나 대화식 CASE 도구를 이용하여 프로그램
    • 생성기 기반 재사용 개념
      • 비즈니스 영역의 공톡적인 시스템 구조를 이용
      • 비즈니스 데이터 처리와 같은 응용 시스템의 경우, 비용 측면에서 성공적

  • 프레임워크를 이용한 재사용
    • 프레임워크의 재사용 아이디어
      • 객체는 재사용을 위한 단위가 너무 작고 특정 응용 시스템에 너무 특화
      • 단위가 큰 추상화인 프레임워크를 이용하여 재사용 지원
    • 프레임워크의 개념
      • 추상/구체 클래스, 이들 간의 인터페이스 모임으로 구성되는 서브시스템 설계
      • 응용 시스템은 보통 다수의 프레임워크를 통합하여 구축
    • 프레임워크의 세 종류
      • 시스템 기반구조
      • 미들웨어 통합
      • 엔터프라이즈 응용

  • 애플리케이션을 이용한 재사용
    • 가장 효과적인 재사용 기술로 단위가 큰 자산의 재사용
    • 두가지 유형의 애플리케이션 재사용
      • COTS 제품 재사용
      • 소프트웨어 제품 라인 재사용

-----------------------------------------------------------

  • 소프트웨어 아키텍처의 특성
    • 이해관계자 사이의 의사소통 수단
      • 소프트웨어 아키텍처는 이해관계자 사이의 서로 다른 관점을 이해하고 서로 간 의사소통하는 데 기반으로 사용될 수 있는 공통 언어로서 시스템의 추상화 표현
    • 시스템의 초기 설계 결정사항 표현
      • 아키텍처는 구현에 대한 제약사항 정의, 개발할 시스템 구조, 개발조직의 구조, 시스템의 품질속성 실현 여부 등을 결정
      • 시스템 변경 시 가장 적은 비용과 위험부담을 갖는 변경 경로 결정에 사용
    • 소프트웨어 아키텍처의 재사용
      • 아키텍처 단계에서 재사용은 유사한 요구사항을 갖는 시스템에 대해 많은 이점 제공(코드, 요구사항, 아키텍처 설계 경험까지 재사용 가능)

  • Kruchen의 4+1 뷰 모델과 RUP 간 관계
    • 4+1은 논리 뷰, 프로세스 뷰, 개발 뷰, 물리 뷰, 시나리오로 구성
    • RUP와의 관계
      • 시나리오 - Usecase View
      • 논리 뷰 - Design View
      • 개발 뷰 - Implementation View
      • 뮬리 뷰 - Deployment View

  • TEmb 일반요소의 4개 토대
    • L - Life Cycle(수명주기) - 중심토대, 토대간의 접착제 역할
      • 어떤 활동들이 수행되어야 하고 어떤 순서를 따르는지에 대한 정의
      • 테스터와 관리자에게 프로세스에 대한 적절한 이해력 제공
    • I - Infrastructure(기반구조)
      • 특정 활동들을 수행하는 표준방식을 정의하여 수행방식을 지원
    • T - Technique(기법)
      • 계획된 활동들의 수행을 가능하게 만들기 위해 테스트 환경에 필요한 것을 정의
    • O - Organization(조직)
      • 계획된 활동들을 수행해야 하는 사람들의 역할과 요구되는 전문지식, 타 분야와의 상호작용하는 방식 등을 정의

  • 구조화된 테스트 설계절차 5단계
    1. 테스트 상황 식별
      • 테스트 베이시스 분석 및 테스트 되어야 할 각 상황을 식별
    2. 논리적 테스트 케이스 구체화
      • 일련의 테스트 상황을 시작에서 종료까지 테스트 객체를 통해 통과되는 논리적인 테스트 케이스로 변환
      • 의도한 테스트 목표와 커버리지가 달성될 수 있다는 것을 증명
    3. 물리적 테스트 케이스 구체화
      • 논리적 테스트 케이스에 구체적인 입력 변수값을 선택
      • 구체적 용어로 논리적 테스트 케이스와 산출물을 정확히 기술
      • 실행에 필요한 입력값, 테스트 행동, 예상결과 포함
    4. 초기 상황 설정
      • 물리적 테스트 케이스 실행에 필요한 초기 상황을 제시
    5. 테스트 스크립트 조합
      • 테스트 실행을 위해 최적의 순서로 테스트 행동과 개별적인 테스트 케이스의 결과 점검을 할 수 있는 테스트 스크립트 정의
    6. (옵션)테스트 시나리오 정의
      • 테스트 스크립트가 실행되어야 할 순서를 기술

  • 리스크 관리 옵션

  • 소프트웨어 재사용 문제점
    • 유지보수 비용의 증가
      • 재사용된 소프트웨어 시스템/컴포넌트의 소스 코드 활용 불가시, 유지보수 비용 증가
    • 도구 지원의 결여
      • CASE 도구 집합이 재사용 포함 개발을 지원하기 곤란한 경우 발생
    • NIH 증후군
      • 어떤 소프트웨어 공학저들은 컴포넌트 재사용보다 재작성을 선호
    • 컴포넌트 라이브러리의 생성과 유지
      • 재사용 가능한 컴포넌트의 라이브러리 생성/유지에 많은 비용 소요
      • 소프트웨어 컴포넌트 분류, 목록 생성 및 검색 기술 미개발
    • 재사용 가능한 컴포넌트의 검색, 이해, 수정
      • 소프트웨어 컴포넌트들은 라이브러리에서 발견되고 이행되고 때로는 새로운 환경에서 동작되도록 수정 필요

댓글 없음:

댓글 쓰기