- 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단계
- 테스트 상황 식별
- 테스트 베이시스 분석 및 테스트 되어야 할 각 상황을 식별
- 논리적 테스트 케이스 구체화
- 일련의 테스트 상황을 시작에서 종료까지 테스트 객체를 통해 통과되는 논리적인 테스트 케이스로 변환
- 의도한 테스트 목표와 커버리지가 달성될 수 있다는 것을 증명
- 물리적 테스트 케이스 구체화
- 논리적 테스트 케이스에 구체적인 입력 변수값을 선택
- 구체적 용어로 논리적 테스트 케이스와 산출물을 정확히 기술
- 실행에 필요한 입력값, 테스트 행동, 예상결과 포함
- 초기 상황 설정
- 물리적 테스트 케이스 실행에 필요한 초기 상황을 제시
- 테스트 스크립트 조합
- 테스트 실행을 위해 최적의 순서로 테스트 행동과 개별적인 테스트 케이스의 결과 점검을 할 수 있는 테스트 스크립트 정의
- (옵션)테스트 시나리오 정의
- 테스트 스크립트가 실행되어야 할 순서를 기술
- 리스크 관리 옵션
- 소프트웨어 재사용 문제점
- 유지보수 비용의 증가
- 재사용된 소프트웨어 시스템/컴포넌트의 소스 코드 활용 불가시, 유지보수 비용 증가
- 도구 지원의 결여
- CASE 도구 집합이 재사용 포함 개발을 지원하기 곤란한 경우 발생
- NIH 증후군
- 어떤 소프트웨어 공학저들은 컴포넌트 재사용보다 재작성을 선호
- 컴포넌트 라이브러리의 생성과 유지
- 재사용 가능한 컴포넌트의 라이브러리 생성/유지에 많은 비용 소요
- 소프트웨어 컴포넌트 분류, 목록 생성 및 검색 기술 미개발
- 재사용 가능한 컴포넌트의 검색, 이해, 수정
- 소프트웨어 컴포넌트들은 라이브러리에서 발견되고 이행되고 때로는 새로운 환경에서 동작되도록 수정 필요
댓글 없음:
댓글 쓰기