마인드 맵 갤러리 4장 디자인공학 마인드맵
4장 디자인 엔지니어링 마인드맵 이 마인드맵에는 소프트웨어 디자인 엔지니어링의 개요, 소프트웨어 디자인 원리, 소프트웨어 아키텍처 디자인, 컴포넌트 레벨 디자인 기술, 디자인 사양 및 디자인 검토에 사용됩니다.
2023-11-14 21:39:57에 편집됨제4장 디자인 프로젝트
소프트웨어 디자인 엔지니어링 개요
소프트웨어 디자인 엔지니어링 개요
소프트웨어 요구사항 분석은 "무엇을 할 것인가"의 문제를 해결하는 반면, 소프트웨어 설계 프로세스는 "어떻게 할 것인가"의 문제를 해결합니다.
소프트웨어 설계는 소프트웨어 요구 사항을 소프트웨어 표현으로 변환하는 프로세스로, 주로 소프트웨어 아키텍처 설계 단계와 구성 요소 수준 설계의 두 단계로 구성됩니다.
소프트웨어 설계 작업
디자인 접근법을 사용하면 소프트웨어 분석 모델에서 데이터, 기능 및 행동 모델로 표현되는 소프트웨어 요구 사항에 대한 정보가 디자인 단계로 전달되어 데이터/클래스 디자인, 아키텍처 디자인, 인터페이스 디자인, 컴포넌트 레벨 디자인이 됩니다.
데이터/클래스 설계: 분석 클래스 모델을 소프트웨어 구현에 필요한 클래스 구현 및 데이터 구조로 변환
CRC와 데이터 사전에 정의된 클래스와 데이터 개체 및 관계에 설명된 자세한 데이터 내용은 데이터 설계 활동의 기초를 제공합니다.
데이터 디자인 프로세스에는 다음 두 단계가 포함됩니다.
첫째, 요구 사항 분석 단계에서 결정된 데이터 개체에 대한 논리적 표현을 선택하려면 가장 효과적인 설계 솔루션을 선택하기 위해 다양한 구조의 알고리즘 분석이 필요합니다.
그런 다음 개별 데이터 설계 결정의 영향을 제한하거나 범위를 지정하는 데 필요한 논리적 데이터 구조에서 작동하는 프로그램 모듈을 식별합니다.
아키텍처 디자인: 아키텍처 디자인은 소프트웨어의 전체 구조를 정의합니다.
아키텍처 설계는 소프트웨어 구성 요소, 외부에서 볼 수 있는 속성 및 이들 간의 관계로 구성된 소프트웨어의 전체 구조를 정의합니다.
아키텍처 설계 표현은 시스템 사양, 분석 모델, 분석 모델에 정의된 하위 시스템의 상호 작용에서 파생될 수 있습니다.
인터페이스 디자인: 인터페이스 디자인은 소프트웨어 내, 소프트웨어와 협업 시스템 간, 소프트웨어 동료 간 통신 방법을 설명합니다.
인터페이스 디자인에는 주로 세 가지 측면이 포함됩니다.
소프트웨어 모듈 간 인터페이스 설계
모듈과 기타 인간이 아닌 정보 생산자 및 소비자(예: 외부 엔터티) 간의 인터페이스를 설계합니다.
디자이너(사용자)와 컴퓨터 사이의 인터페이스
구성 요소 수준 설계: 구성 요소 수준 설계는 소프트웨어 아키텍처의 구조적 요소를 소프트웨어 구성 요소의 절차적 설명으로 변환합니다.
구성요소 수준 설계는 소프트웨어 아키텍처의 구조적 요소를 소프트웨어 구성요소의 절차적 설명으로 변환합니다.
클래스 기반 모델, 흐름 모델, 동작 모델에서 얻은 정보는 구성 요소 설계의 기초가 됩니다.
소프트웨어 설계 목표
소프트웨어 설계 과정에서 우리는 소프트웨어의 품질 요소에 세심한 주의를 기울여야 합니다.
McGlanghlin 소프트웨어 설계 프로세스의 목표는 다음과 같습니다.
1) 설계는 분석 모델에 설명된 모든 명시적 요구 사항을 구현해야 하며 사용자가 기대하는 모든 암시적 요구 사항을 충족해야 합니다.
2) 디자인은 읽기 쉽고 이해하기 쉬워야 하며, 향후 프로그래밍, 테스트 및 유지 관리가 쉬워야 합니다.
3) 설계는 구현 관점에서 시작하여 데이터, 기능 및 동작과 관련된 소프트웨어의 완전한 그림을 제공해야 합니다.
설계 측정 기술 표준
1) 설계된 구조는 소프트웨어 구성요소 간의 제어를 확립하기 위한 계층적 구조이어야 한다.
2) 설계는 모듈식이어야 하며 소프트웨어를 특정 기능이나 하위 기능을 완성하는 구성 요소로 논리적으로 나누어야 합니다.
3) 설계에는 데이터 추상화와 프로세스 추상화가 모두 포함되어야 합니다.
4) 디자인은 독립적인 기능적 특성을 지닌 모듈을 구축해야 한다.
5) 모듈과 외부 환경 사이의 복잡한 연결을 줄이는 인터페이스를 설계해야 합니다.
6) 설계는 소프트웨어 요구사항 분석을 통해 얻은 정보를 기반으로 구동 가능하고 반복 가능한 방법을 수립할 수 있어야 합니다.
소프트웨어 설계 과정
1) 사양 개발
2) 아키텍처 및 인터페이스 디자인
3) 데이터/클래스 설계
4) 컴포넌트 레벨(프로세스) 설계
5) 디자인 문서 작성
6) 설계 검토
소프트웨어 설계 원칙
추상화 및 점진적인 개선
추상화는 소프트웨어 설계 규모가 점차 증가함에 따라 복잡성을 제어하기 위한 기본 전략입니다.
추상화의 과정은 구체적인 것에서 일반적인 것으로 진행된다. 상위 개념은 하위 개념의 추상화이고, 하위 개념은 상위 개념의 정제와 정제이다.
소프트웨어 엔지니어링 프로세스의 각 단계는 더 높은 수준의 추상화 해석에 대한 구체적인 설명입니다.
소프트웨어 설계의 주요 추상화 방법은 프로세스 추상화와 데이터 추상화입니다.
프로세스 추상화(기능 추상화라고도 함)는 명확하게 정의된 기능을 완료하는 모든 작업이 실제로는 일련의 하위 수준 작업에 의해 완료되더라도 사용자가 단일 엔터티로 처리할 수 있음을 의미합니다.
데이터 추상화는 이 유형의 객체에 적용되는 데이터 유형 및 작업의 정의를 나타내며, 이러한 작업을 통해서만 데이터를 수정하고 관찰할 수 있도록 제한합니다.
점차적으로 세련됨을 구하라
단계별 개선은 문제 해결 프로세스를 여러 단계 또는 단계로 나누며, 각 단계는 이전 단계보다 문제 해결에 더 가까워지고 더 정교해집니다.
추상화를 통해 디자이너는 낮은 수준의 세부 정보를 무시하면서 프로세스와 데이터를 설명할 수 있으며, 구체화를 통해 디자이너는 디자인 프로세스 중에 낮은 수준의 세부 정보를 공개할 수 있습니다.
모듈식
모듈화, 즉 규정된 원칙에 따라 소프트웨어를 더 작고 독립적이지만 상호 연관된 구성 요소로 나누는 것은 실제로 시스템 분해 및 추상화 프로세스입니다.
모듈은 데이터 설명 및 실행 가능한 명령문과 같은 프로그램 개체의 모음입니다. 개별적으로 이름이 지정되고 이름으로 액세스할 수 있습니다.
예를 들어, 프로세스. 함수, 서브루틴, 매크로 등
정보 숨기기
각 모듈의 구현 세부정보는 다른 모듈에서 숨겨져야 합니다.
블록에 포함된 정보(데이터 및 프로시저 포함)는 이 정보가 필요하지 않은 다른 모듈에서 사용할 수 없습니다.
정보 은닉을 통해 모듈의 프로세스 세부 사항 및 로컬 데이터 구조에 대한 액세스 제한을 정의하고 시행할 수 있습니다.
기능적으로 독립적
기능적 독립성: 기능적 독립성은 모듈화, 추상화, 정보 은닉, 지역화와 같은 개념의 직접적인 결과입니다. 기능적으로 특정한 모듈을 개발하고 다른 모듈과의 과도한 상호 작용을 피함으로써 기능적 독립성을 달성할 수 있습니다.
기능적 독립성의 중요성
기능이 분리되고 인터페이스가 단순화되어 소프트웨어 개발이 더 쉬워집니다.
설계 수정이나 코딩 수정으로 인한 부작용이 제한되므로 오류 확산이 줄어들고 모듈 재사용이 가능해 소프트웨어 유지 관리 및 테스트가 쉬워집니다.
기능적 독립성은 응집성과 결합이라는 두 가지 지표로 측정할 수 있습니다.
응집력은 모듈 내의 요소가 서로 얼마나 밀접하게 통합되어 있는지를 측정하는 것입니다.
일반 모듈 응집력은 7가지 유형으로 구분됩니다.
1) 동시 응집(accidental cohesion): 독립적인 기능을 명확하게 나타내지 않는 동일한 프로그램 코드 세그먼트를 여러 모듈에서 분리한 모듈을 동시 응집 모듈이라고 합니다.
2) 논리적 응집력: 논리적으로 관련된 일련의 작업을 완료하는 모듈을 말합니다. 모듈이 호출되면 모듈에 전달된 제어 매개변수에 따라 모듈이 수행해야 하는 기능이 결정됩니다.
3) 시간 수렴: 모듈의 모든 작업이 동일한 시간 내에 실행되어야 함을 의미합니다. 예: 초기화 모듈 및 종료 모듈
4) 프로세스 응집력: 여러 작업을 완료하는 모듈을 말하며, 이러한 작업은 지정된 절차(절차적)에 따라 실행되어야 합니다.
5) 통신 응집력: 모듈의 모든 처리 요소가 특정 데이터 구조의 영역에 집중되어 있음을 의미합니다.
6) 순차 응집력(Sequential Cohesion): 여러 기능을 완성하는 모듈을 말하며, 이러한 기능은 순차적으로 실행되어야 합니다.
7) 기능적 응집력: 모듈의 모든 부분이 함께 작동하여 특정 기능을 완성하고 밀접하게 관련되어 있으며 분할할 수 없다는 사실을 말합니다.
결합은 모듈 간의 상대적 독립성을 측정하는 것입니다(서로 얼마나 밀접하게 연결되어 있는지).
일반적으로 모듈 간 결합 방법에는 7가지 유형이 있습니다.
1) 콘텐츠 결합: 하나의 모듈이 다른 모듈의 내부 데이터에 직접 액세스하거나, 하나의 모듈이 일반 입구를 통해 다른 모듈로 이동하지 않거나, 두 모듈이 일부 프로그램 코드를 중복하거나, 하나의 모듈이 여러 개일 경우 그런 다음 두 모듈 간에 콘텐츠 결합이 발생합니다.
2) 공개 결합: 모듈 그룹이 모두 동일한 공통 데이터 환경에 액세스하는 경우 이들 간의 결합을 공개 결합이라고 합니다. 공공 데이터 환경은 글로벌 데이터 구조, 공유 통신 영역, 메모리의 공개 적용 영역 등이 될 수 있습니다.
3) 외부 결합: 모듈이 소프트웨어 외부 환경(예: 특정 장치, 형식 또는 통신 프로토콜에 모듈을 결합하는 I/O 등)을 통해 연결되는 경우를 외부 결합이라고 합니다.
4) 제어 결합: 한 모듈에서 다른 모듈로 전송되는 매개변수에 제어 정보가 포함되어 있고, 제어 정보가 수신 모듈의 실행 로직을 제어하는 데 사용되는 경우 이를 제어 결합이라고 합니다.
5) 태그 결합: 데이터 구조의 일부(예: 특정 데이터 구조의 하위 구조)가 매개변수 테이블을 통해 두 모듈 간에 전달되는데, 이것이 태그 결합입니다.
6) 데이터 커플링: 매개변수 테이블을 통해 두 모듈 간에 단순 데이터만 전송되는데, 이를 데이터 커플링이라고 합니다.
7) 간접 결합: 두 모듈 사이에 직접적인 관계가 없는 경우, 즉 어느 하나가 다른 모듈에 종속되지 않고 독립적으로 작동할 수 있는 경우 이러한 결합을 간접 결합이라고 합니다.
모듈 간의 연결이 촘촘할수록 연결 수가 많아지고 결합도가 높아지며 기능적 독립성이 약해집니다.
모듈 내 다양한 요소 간의 연결이 가까울수록 응집력은 높아집니다.
기능적 독립성이 강한 모듈은 응집력은 높고 결합도는 낮은 모듈이어야 합니다.
소프트웨어 아키텍처 설계
소프트웨어 아키텍처는 소프트웨어 구성 요소, 이러한 구성 요소의 외부적으로 표시되는 속성 및 이들 간의 관계를 포함하여 하나 이상의 시스템 구조에 중점을 둡니다.
Bass는 아키텍처가 중요한 세 가지 주요 이유를 제안합니다.
① 이해관계자 커뮤니케이션 활성화
②시스템 설계 초기 의사결정에 도움
③전송 가능한 시스템 수준 추상화
아키텍처 개발 프로세스
공통 소프트웨어 아키텍처
단일 호스트 구조k
C/S(클라이언트/서버) 구조
B/S(브라우저/서버) 구조
소프트웨어 아키텍처 스타일
대다수는 비교적 소수의 건축 스타일 중 하나로 분류될 수 있습니다.
각 스타일은 다음을 포함하는 시스템 범주를 설명합니다.
① 시스템이 요구하는 기능을 구현하는 일부 구성요소(데이터베이스, 컴퓨팅 모듈 등)
②"소통, 조정, 협력"을 위한 구성 요소를 연결하는 데 사용되는 "커넥터" 세트
③ 구성 요소 통합 방법에 대한 시스템 제약 사항을 정의합니다.
④ 설계자가 전체 시스템의 속성을 이해하고 알려진 속성을 분석할 수 있는 의미론적 모델
데이터 중심 아키텍처
일부 데이터(예: 파일 또는 데이터베이스)는 구조의 중앙에 저장되며 다른 구성 요소에 의해 자주 사용, 추가, 삭제 또는 수정됩니다.
데이터 흐름 스타일 아키텍처
이 구조는 일련의 계산 또는 처리 구성요소에 의해 입력 데이터가 출력 데이터로 변환되는 데 적합합니다.
호출 및 반환 스타일 아키텍처
이 스타일을 사용하면 소프트웨어 디자이너는 수정 및 확장이 매우 쉬운 아키텍처를 설계할 수 있습니다.
포함: 메인 프로그램/서브 프로그램 스타일 아키텍처 및 원격 프로시저 호출 스타일 아키텍처
여기서 이해해야 할 몇 가지 개념이 있습니다.
프로그램 구조의 깊이: 프로그램 구조의 수준 수를 구조의 깊이라고 합니다. 구조의 깊이는 프로그램 구조의 크기와 복잡성을 어느 정도 반영합니다.
프로그램 구조의 너비: 계층 구조에서 동일한 수준에 있는 최대 모듈 수를 구조의 너비라고 합니다.
모듈 팬인 및 팬아웃: 팬아웃은 모듈이 직접 호출(또는 제어)하는 다른 모듈의 수를 나타냅니다. 팬인(Fan-in)은 특정 모듈을 호출(또는 제어)하는 모듈의 수로 정의됩니다. 다중 팬아웃은 많은 하위 모듈을 제어하고 조정해야 함을 의미합니다. 다중 팬인 모듈은 일반적으로 공용 모듈입니다.
객체 지향 스타일 아키텍처
시스템 구성 요소가 데이터를 캡슐화하고 데이터를 조작하는 방법
구성 요소 간의 상호 작용 및 조정은 메시지를 통해 전달됩니다.
계층적 스타일 아키텍처
이 구조에서는 서로 다른 레벨이 정의되며 각 레벨은 외부 레벨보다 기계 명령에 더 가까운 작업을 완료합니다.
대체 아키텍처 평가
동일한 소프트웨어 요구 사항에 대해 다양한 설계 방법의 서로 다른 원칙으로 인해 서로 다른 소프트웨어 구조가 파생됩니다.
동일한 문제에 대한 다른 소프트웨어 구조
ATAM(아키텍처 트레이드오프 분석 방법)
1) 응용 시나리오(시나리오) 정의: 유스 케이스 다이어그램을 통해 사용자 관점에서 시스템을 표현합니다.
2) 요구 사항, 제약 조건 및 환경 설명 도출: 이는 모든 고객 우려 사항이 나열되어 있는지 확인하기 위한 요구 사항 엔지니어링의 일부입니다.
3) 위의 상황과 요구사항을 처리할 수 있는 아키텍처 스타일을 설명하세요.
4) 시스템의 각 성능을 개별적으로 평가합니다. 아키텍처 설계 성능에는 신뢰성, 성능, 보안, 유지 관리 가능성, 유연성, 테스트 가능성, 이식성, 재사용성 및 상호 운용성 등이 포함됩니다.
5) 다양한 건축 형태에 대해 4단계에서 언급한 성능의 민감도를 평가합니다. 전체 아키텍처에 약간의 변화를 주고, 어필 성능에 민감한 변화가 있는지 분석하고 판단하는 방식으로 평가할 수 있습니다. 아키텍처 변경에 의해 크게 영향을 받는 성능을 민감한 지점이라고 합니다.
6) 5단계의 민감도 분석을 통해 3단계에서 제안된 아키텍처를 평가합니다. SEI에서 설명하는 방법은 다음과 같습니다. 아키텍처의 민감한 지점이 결정되면 시스템에서 가장 많은 trade-off 지점(trade-off points)이 필요한 요소를 찾아야 합니다. 절충 요소는 아키텍처에서 이 내용을 변경하면 시스템 성능에 민감한 변화가 발생한다는 것을 의미합니다. 예를 들어, 클라이언트-서버 구조를 갖는 시스템의 성능은 시스템의 서버 수와 밀접한 관련이 있습니다(예를 들어 서버 수를 늘리면 시스템 성능이 어느 정도 향상됩니다)... 에 이 경우 서버 수는 아키텍처의 균형점입니다.
소프트웨어 아키텍처를 설계할 때 다음 규칙을 참조할 수 있습니다.
(1) 소프트웨어 구조 개선 및 모듈 독립성 향상
(2) 모듈의 적절한 깊이, 너비, 팬아웃 및 팬인
(3) 모듈의 판단 범위는 제어 범위 내에 있어야 합니다.
(4) 모듈 인터페이스의 복잡성을 줄이기 위해 노력하십시오.
(5) 출입구가 1개인 모듈을 설계한다.
(6) 모듈 기능은 예측 가능해야 하며 모듈 크기는 적당해야 합니다.
(7) 일반적으로 모듈에는 30~50개 정도의 명령문이 포함되는 것이 좋습니다.
(8) 잘 설계된 소프트웨어 구조는 일반적으로 최상위 계층에서 팬아웃이 더 높고, 중간 계층에서 팬아웃이 적으며, 최하위 계층에서 팬인이 높습니다.
컴포넌트 레벨 설계 기술
구조적 분석 및 설계 방법에서는 구성 요소를 모듈이라고 부르기도 합니다.
객체 지향 분석 및 설계에서는 구성 요소를 클래스라고 합니다. 구성 요소 기반 개발 방법에서는 구성 요소를 구성 요소라고 합니다.
구성 요소 수준 설계 단계에서는 주로 다음 작업이 완료됩니다.
각 구성 요소에 사용되는 알고리즘을 결정하고, 알고리즘 프로세스를 표현하는 데 적합한 도구를 선택하고, 구성 요소에 대한 자세한 절차 설명을 작성합니다.
각 구성 요소에서 내부적으로 사용되는 데이터 구조를 결정합니다.
컴포넌트 레벨 설계가 끝나면 위의 결과를 컴포넌트 레벨 설계 사양에 기록하고 검토를 거쳐 정식 문서로 작성해야 하며, 이는 다음 단계(코딩 단계)의 기초가 됩니다.
구조화된 프로그래밍 방법
더 대중적인 정의는 다음과 같습니다. "프로그램의 코드 블록이 시퀀스, 선택 및 루프의 세 가지 기본 제어 구조를 통해서만 연결되고 각 코드 블록에 하나의 항목과 하나의 종료만 있는 경우 프로그램은 구조화되었다고 합니다. . 의"
객체지향, 소프트웨어 재사용 등 새로운 소프트웨어 개발 방식과 기술이 발전함에 따라, 하향식 방식과 상향식 방식을 유기적으로 결합하는 것이 보다 현실적이고 효과적인 개발 접근 방식이 될 수 있습니다.
그래픽 표현
프로그램 흐름도
프로그램 흐름도는 프로그래밍 언어와 독립적이며 비교적 직관적이고 명확하며 배우고 익히기가 쉽습니다.
구조화된 프로그램을 설명하기 위해 순서도를 사용하려면 순서도를 5개의 기본 제어 구조로만 제한해야 합니다.
N-S 다이어그램
Nassi와 Shneiderman은 N-S 다이어그램이라고도 불리는 박스 다이어그램이라고 불리는 구조화된 프로그래밍의 원리를 따르는 그래픽 설명 도구를 제안했습니다.
5가지 기본 제어 구조
인주
PAD는 프로그램 흐름도에서 발전된 문제 분석 다이어그램(Problem Analysis Diagram)의 약어입니다.
5가지 기본 제어 구조
결정 테이블
알고리즘에 여러 중첩 조건 선택이 포함되어 있으면 프로그램 흐름도, N-S 다이어그램 또는 PAD를 사용하여 명확하게 설명하기가 어렵습니다.
그러나 의사결정 테이블은 조건의 복잡한 조합과 취해야 하는 조치 사이의 일치성을 명확하게 표현할 수 있습니다.
의사결정 테이블의 장점은 모든 처리 규칙을 간결하고 명확하게 설명할 수 있다는 것입니다.
그러나 의사결정 테이블은 특정 조건 값의 조합에서 가능한 결과인 정적 논리를 나타냅니다. 이는 처리 순서를 표현할 수 없고 루프 구조를 표현할 수도 없습니다.
디자인 언어 PDL
PDL(Program Design Language)은 알고리즘 설계와 기능적 구성 요소의 처리 세부 사항을 기술하는 데 사용되는 언어로, 설계 언어라고 합니다.
일종의 의사코드이다. 일반적으로 의사 코드의 문법 규칙은 "외부 문법"과 "내부 문법"으로 구분됩니다.
외국어 구문은 일반 프로그래밍 언어에서 일반적으로 사용되는 문의 문법 규칙을 따라야 합니다.
내부 문법은 프로그램이 수행해야 하는 기능을 설명하기 위해 영어로 된 몇 가지 간단한 문장, 구 및 일반적인 수학 기호를 사용할 수 있습니다.
PDL 사용 예
PDL 기능
1. 모든 구조화된 제어 구조, 데이터 설명 및 구성 요소 기능을 제공하는 고정된 키워드 외부 구문이 있습니다. 외국문법에 속하는 키워드는 PDL 텍스트를 구조적으로 분할하여 이해하기 쉽게 할 수 있는 제한된 어휘집합이다. 키워드를 구별하기 위해서는 키워드는 대문자로, 나머지 단어는 소문자로 표기하도록 규정하고 있습니다.
2. 내부 문법은 자연어를 사용하여 처리 특성을 설명합니다. 내부 구문은 상대적으로 유연합니다. 명확하게 작성되기만 하면 문법 오류에 대해 걱정할 필요가 없으므로 사람들은 알고리즘 논리를 설명하는 데 집중할 수 있습니다.
3. 간단한(예: 스칼라 및 배열) 데이터 구조와 복잡한(예: 연결된 목록 및 계층 구조) 데이터 구조를 포함하는 데이터 설명 메커니즘이 있습니다.
4. 인터페이스 설명을 다양한 방식으로 표현하기 위한 서브루틴 정의 및 호출 메커니즘이 있습니다.
디자인 사양 및 디자인 검토
디자인 사양
디자인 리뷰
소프트웨어 설계의 궁극적인 목표는 최상의 솔루션을 얻는 것입니다.
"Best"는 모든 후보 솔루션 중에서 개발 비용 절감, 리소스 소비 감소, 개발 시간 단축이라는 조건에 따라 더 높은 생산성, 더 높은 신뢰성 및 유지 관리성을 달성할 수 있는 솔루션을 선택하는 것을 의미합니다.
디자인 리뷰 내용
추적성: 즉, 소프트웨어 설계가 식별된 모든 소프트웨어 요구 사항을 포괄하는지 여부와 소프트웨어의 각 구성 요소가 특정 요구 사항을 추적할 수 있는지 확인하기 위해 소프트웨어의 시스템 구조와 하위 시스템 구조를 분석합니다.
인터페이스: 소프트웨어의 다양한 부분 간의 연결을 분석하고 소프트웨어의 내부 인터페이스와 외부 인터페이스가 명확하게 정의되었는지 확인합니다. 구성요소가 높은 응집력과 낮은 결합도 요구 사항을 충족하는지 여부. 구성요소의 범위가 제어 범위 내에 있는지 여부입니다.
위험: 기존 기술 조건과 예산 내에서 소프트웨어 설계를 적시에 구현할 수 있는지 확인합니다.
실용성: 소프트웨어 설계가 요구 사항에 대한 솔루션에 실용적인지 확인
기술적 명확성(Technical Clarity): 소프트웨어 설계가 코드로 쉽게 변환될 수 있는 형태로 표현되었는지 확인
유지 관리성: 소프트웨어 유지 관리 관점에서 소프트웨어 설계가 향후 유지 관리의 편의성을 고려하는지 확인합니다.
품질: 소프트웨어 설계가 좋은 품질 특성을 나타내는지 확인합니다.
다양한 옵션: 다른 옵션을 고려했는지 확인하고 다양한 옵션을 비교하는 기준은 무엇입니까?
제한 사항: 소프트웨어의 제한 사항이 현실적이고 요구 사항과 일치하는지 평가합니다.
기타 구체적인 질문: 문서화 평가, 테스트 가능성, 설계 프로세스 등
검토에는 공식 검토와 비공식 검토의 두 가지 유형이 있습니다.
소프트웨어 개발자 외에도 공식 검토에는 일반적으로 방어의 형태로 사용자 대표 및 도메인 전문가가 참여하도록 초대됩니다.
비공식 리뷰는 본질적으로 P2P 방식이며 시간이나 형식에 제한이 없습니다.