UML 다이어그램을 그리는 도구입니다. UML로 모델링. 일반 다이어그램 UML 언어로 된 다이어그램의 예

UML은 OO 시스템을 설명, 시각화, 디자인 및 문서화하기 위한 통합 그래픽 모델링 언어입니다. UML은 OO 접근 방식을 기반으로 소프트웨어 모델링 프로세스를 지원하고, 개념과 프로그램 개념의 관계를 구성하고, 복잡한 시스템의 확장 문제를 반영하도록 설계되었습니다. UML 모델은 비즈니스 분석부터 시스템 유지 관리까지 소프트웨어 수명 주기의 모든 단계에서 사용됩니다. 다양한 조직에서는 문제 영역과 사용하는 기술에 따라 적합하다고 판단되는 대로 UML을 사용할 수 있습니다.

UML의 간략한 역사

90년대 중반까지 다양한 저자가 수십 개의 OO 모델링 방법을 제안했는데, 각 방법은 자체 그래픽 표기법을 사용했습니다. 게다가 이 방법들에는 각각 고유한 특성이 있었습니다. 강점, 하지만 충분히 빌드할 수 없었습니다. 풀 모델추신, "모든 측면에서", 즉 필요한 모든 투영을 보여줍니다(1항 참조). 또한 OO 모델링 표준이 부족하여 개발자가 가장 적합한 방법을 선택하기 어려워 소프트웨어 개발에 OO 접근 방식이 널리 채택되지 못했습니다.

객체 기술 및 데이터베이스 분야의 표준 채택을 담당하는 조직인 객체 관리 그룹(OMG)의 요청에 따라 가장 널리 사용되는 세 가지 OO 방법인 G의 저자가 통일 및 표준화의 시급한 문제를 해결했습니다. Butch, D. Rambo 및 A. Jacobson이 함께 노력하여 1997년 OMG에서 표준으로 승인한 버전 UML 1.1을 만들었습니다.

UML은 언어이다

모든 언어는 의미 있는 구성을 만들기 위해 단어를 결합하는 어휘와 규칙으로 구성됩니다. 특히 UML과 같은 프로그래밍 언어의 구조가 그렇습니다. 그 특징은 언어사전이 그래픽 요소로 구성되어 있다는 점이다. 각 그래픽 기호에는 특정 의미가 있으므로 한 개발자가 만든 모델을 다른 개발자가 명확하게 이해할 수 있습니다. 소프트웨어, UML을 해석합니다. 특히 여기에서 UML로 제시된 소프트웨어 모델은 자동으로 OO 프로그래밍 언어(예: Java, C++, VisualBasic)로 변환될 수 있습니다. 즉, UML을 지원하는 좋은 시각적 모델링 도구가 있는 경우 모델을 구축하면 이 모델에 해당하는 샘플 프로그램 코드도 받게 됩니다.

UML은 방법이 아니라 언어라는 점을 강조해야 합니다. 모델을 생성하는 데 필요한 요소와 이를 읽는 방법을 설명하지만, 어떤 모델을 개발해야 하는지, 어떤 경우에 개발해야 하는지에 대해서는 언급하지 않습니다. UML 기반의 방법론을 만들기 위해서는 소프트웨어 개발 과정에 대한 설명을 보완해야 한다. 이러한 프로세스의 예로는 Rational Unified Process가 있으며 이에 대해서는 후속 기사에서 설명합니다.

UML 사전

모델은 엔터티와 엔터티 간의 관계 형태로 표현되며 다이어그램으로 표시됩니다.

엔터티모델의 주요 요소인 추상화입니다. 엔터티에는 구조적(클래스, 인터페이스, 구성 요소, 사용 사례, 협업, 노드), 동작(상호 작용, 상태), 그룹화(패키지) 및 주석(설명)의 네 가지 유형이 있습니다. 각 엔터티 유형에는 고유한 그래픽 표현이 있습니다. 엔터티는 다이어그램을 연구할 때 자세히 논의됩니다.

관계엔터티 간의 다양한 연결을 보여줍니다. UML은 다음과 같은 관계 유형을 정의합니다.

  • 탐닉두 엔터티 중 하나(독립)의 변경이 다른 엔터티(종속)의 의미에 영향을 미칠 수 있는 경우 두 엔터티 간의 이러한 연결을 보여줍니다. 종속성은 종속 엔터티에서 독립 엔터티로 향하는 점선 화살표로 표시됩니다.
  • 협회한 개체의 개체가 다른 개체의 개체와 관련되어 있음을 보여주는 구조적 관계입니다. 그래픽적으로 연관은 연관된 엔터티를 연결하는 선으로 표시됩니다. 연관은 개체 간을 탐색하는 역할을 합니다. 예를 들어, "주문"과 "제품" 클래스 간의 연결을 사용하여 특정 주문에 지정된 모든 제품을 찾거나 다음과 같은 모든 주문을 찾을 수 있습니다. 이 제품, - 다른 사람과. 해당 프로그램이 그러한 탐색을 제공하는 메커니즘을 구현해야 한다는 것은 분명합니다. 한 방향으로만 탐색이 필요한 경우 연결 끝에 화살표로 표시됩니다. 연관의 특별한 경우는 집합, 즉 "전체" - "부분" 형식의 관계입니다. 그래픽적으로는 에센스 전체 근처 끝에 다이아몬드로 강조 표시되어 있습니다.
  • 일반화상위 엔터티와 하위 엔터티 간의 관계입니다. 기본적으로 이 관계는 클래스와 객체의 상속 속성을 반영합니다. 일반화는 상위 엔터티를 향한 삼각형으로 끝나는 선으로 표시됩니다. 자식은 부모의 구조(속성)와 동작(메서드)을 상속하지만 동시에 새로운 구조 요소와 새로운 메서드를 가질 수 있습니다. UML은 엔터티가 둘 이상의 상위 엔터티와 관련된 다중 상속을 허용합니다.
  • 구현– 동작 사양(인터페이스)을 정의하는 엔터티와 이 동작의 구현을 정의하는 엔터티(클래스, 구성 요소) 간의 관계. 이 관계는 구성요소를 모델링할 때 일반적으로 사용되며 후속 기사에서 더 자세히 설명됩니다.

다이어그램. UML은 다음 다이어그램을 제공합니다.

  • 시스템 동작을 설명하는 다이어그램:
    • 상태 다이어그램
    • 활동 다이어그램,
    • 객체 다이어그램,
    • 시퀀스 다이어그램,
    • 협업 다이어그램
  • 시스템의 물리적 구현을 ​​설명하는 다이어그램:
    • 구성요소 다이어그램
    • 배포 다이어그램.

모델 제어 뷰. 패키지.

인간이 모델을 잘 이해하려면 모델을 계층적으로 구성하고 계층의 각 수준에 소수의 엔터티를 남겨두는 것이 필요하다고 이미 말했습니다. UML에는 모델(패키지)의 계층적 표현을 구성하는 수단이 포함되어 있습니다. 모든 모델은 클래스, 사용 사례, 기타 엔터티 및 다이어그램을 포함할 수 있는 패키지 세트로 구성됩니다. 패키지에는 계층을 생성할 수 있는 다른 패키지가 포함될 수 있습니다. UML은 별도의 패키지 다이어그램을 제공하지 않지만 다른 다이어그램에 나타날 수 있습니다. 패키지는 책갈피가 있는 직사각형으로 표시됩니다.

UML이 제공하는 것.

  • 패키지를 식별하여 복잡한 시스템을 계층적으로 설명합니다.
  • 유스 케이스 장치를 사용하여 시스템에 대한 기능 요구 사항을 공식화합니다.
  • 활동 다이어그램 및 시나리오를 구성하여 시스템 요구 사항을 자세히 설명합니다.
  • 데이터 클래스를 식별하고 클래스 다이어그램 형태로 개념적 데이터 모델을 구성합니다.
  • 설명하는 클래스 식별 사용자 인터페이스, 화면 탐색 구성표 생성;
  • 시스템 기능을 수행할 때 개체의 상호 작용 프로세스에 대한 설명
  • 활동 및 상태 다이어그램 형태의 개체 동작 설명
  • 소프트웨어 구성 요소 및 인터페이스를 통한 상호 작용에 대한 설명
  • 시스템의 물리적 아키텍처에 대한 설명입니다.

그리고 마지막으로...

UML의 모든 매력에도 불구하고 시각적 모델링 도구 없이는 실제 소프트웨어 모델링에 사용하기 어려울 것입니다. 이러한 도구를 사용하면 디스플레이 화면에 다이어그램을 신속하게 표시하고 문서화하며 다양한 OO 프로그래밍 언어로 프로그램 코드 템플릿을 생성하고 데이터베이스 스키마를 생성할 수 있습니다. 대부분은 프로그램 코드 리엔지니어링 가능성을 포함합니다. 즉, 프로그램의 소스 코드를 자동으로 분석하여 소프트웨어 모델의 특정 예측을 복원합니다. 이는 모델과 코드 간의 호환성을 보장하고 이전 시스템의 기능을 상속하는 시스템을 설계할 때 매우 중요합니다.

10.4. UML 다이어그램

10.4.1. UML 시각적 다이어그램의 유형

UML을 사용하면 여러 유형의 시각적 다이어그램을 만들 수 있습니다.

사용 사례 다이어그램

시퀀스 다이어그램

협력 차트;

클래스 다이어그램

상태 다이어그램

구성요소 다이어그램

배치 다이어그램.

다이어그램은 시스템의 다양한 측면을 보여줍니다. 예를 들어 협력 다이어그램은 시스템의 일부 기능을 구현하기 위해 객체가 어떻게 상호 작용해야 하는지 보여줍니다. 각 다이어그램에는 고유한 목적이 있습니다.

10.4.2. 사용 사례 다이어그램

유스 케이스 다이어그램은 시스템의 기능을 나타내는 유스 케이스와 정보를 수신하거나 전송하는 사람 또는 시스템을 나타내는 액터 간의 상호 작용을 묘사합니다. 이 시스템. ATM(현금자동입출금기)의 사용 사례 다이어그램이 그림 1에 나와 있습니다. 10.1.

쌀. 10.1.사용 사례 다이어그램

다이어그램은 사용 사례와 행위자 간의 상호 작용을 나타냅니다. 사용자 관점의 시스템 요구사항을 반영합니다. 따라서 유스케이스는 시스템이 수행하는 기능이고 행위자는 생성되는 시스템과 관련된 이해관계자입니다. 다이어그램은 사용 사례를 시작하는 행위자를 보여줍니다. 또한 액터가 사용 사례로부터 정보를 받는 시기도 표시됩니다. 본질적으로 사용 사례 다이어그램은 시스템 요구 사항을 설명할 수 있습니다. 이 예에서 은행 클라이언트는 "계좌에서 돈 인출", "돈 이체", "계좌에 돈 입금", "잔액 표시", "ID 번호 변경", "결제하기" 등 다양한 사용 사례를 시작합니다. 은행 직원은 식별 번호 변경 사용 사례를 시작할 수 있습니다. '결제하기' 사용 사례에는 신용 시스템으로 향하는 화살표가 있습니다. 배우가 될 수 있다 외부 시스템, 이 경우 신용 시스템은 행위자로 정확하게 표시되며 ATM 시스템 외부에 있습니다. 유스 케이스에서 액터를 가리키는 화살표는 유스 케이스가 액터에게 일부 정보를 제공한다는 것을 나타냅니다. 이 경우 결제하기 사용 사례는 신용 카드 결제에 대한 정보를 신용 시스템에 제공합니다.

사용 사례 다이어그램은 시스템에 대한 상당한 양의 정보를 제공할 수 있습니다. 이 유형의 다이어그램은 시스템의 전반적인 기능을 설명합니다. 사용자, 프로젝트 관리자, 분석가, 개발자, 품질 보증 전문가 및 시스템 전체에 관심이 있는 사람은 누구나 사용 사례 다이어그램을 보고 시스템이 수행해야 하는 작업을 이해할 수 있습니다.

10.4.3. 시퀀스 다이어그램

시퀀스 다이어그램은 사용 사례 내에서 발생하는 이벤트의 흐름을 묘사합니다. 예를 들어, "돈 인출" 사용 사례는 돈 인출, 계좌에 돈이 충분하지 않을 때 돈 인출 시도, 잘못된 식별 번호를 사용하여 돈 인출 시도 등 몇 가지 가능한 시퀀스를 제공합니다. 계좌에서 $20를 인출하는 일반적인 시나리오(잘못된 식별 번호 또는 계좌 잔액 부족과 같은 문제가 없는 경우)가 그림 1에 나와 있습니다. 10.2.

그림 10.2. Joe의 고객이 계좌에서 $20를 인출하는 순서 다이어그램

다이어그램 상단에는 돈 인출 사용 사례를 실행하기 위해 시스템에 필요한 모든 행위자와 개체가 표시됩니다. 화살표는 액터와 객체 사이 또는 필요한 기능을 수행하기 위해 객체 사이에 전달되는 메시지에 해당합니다. 또한 시퀀스 다이어그램은 클래스가 아닌 객체를 표시한다는 점에 유의해야 합니다. 클래스는 객체의 유형입니다. 객체는 구체적입니다. 수업 대신 고객시퀀스 다이어그램은 특정 고객인 Joe를 나타냅니다.

사용 사례는 고객이 카드를 판독기에 삽입할 때 시작됩니다. 이 개체는 다이어그램 상단의 직사각형에 표시됩니다. 카드번호를 읽어 Joe Account 객체를 오픈하고 ATM 화면을 초기화 합니다. 화면에서 Joe에게 등록 번호를 묻습니다. 고객은 번호 1234를 입력합니다. 화면에서는 Joe Account 개체와 비교하여 번호를 확인하고 그것이 올바른지 확인합니다. 그런 다음 화면에 선택할 수 있는 메뉴가 Joe에게 표시되고 Joe는 "돈 인출"을 선택합니다. 화면에서는 그가 인출할 금액을 묻고 Joe는 $20를 입력합니다. 화면에 계좌에서 돈이 인출됩니다. 이를 통해 "Joe's account" 개체에 의해 수행되는 일련의 프로세스가 시작됩니다. 동시에 이 계정에 다음이 포함되어 있음이 확인되었습니다. 적어도, $20이며 필요한 금액이 청구서에서 공제됩니다. 그런 다음 금전등록기에는 "수표와 현금 20달러를 발행"하라는 지시가 전달됩니다. 마지막으로 동일한 "Joe's account" 객체는 카드 판독기에 카드를 반환하도록 지시합니다.

그래서, 이 다이어그램시퀀스는 Joe의 고객이 20달러를 인출하는 구체적인 예를 사용하여 "계좌에서 돈 인출" 사용 사례를 구현하는 일련의 작업을 보여줍니다. 이 다이어그램을 보면 사용자는 작업의 세부 사항에 익숙해질 수 있습니다. 분석가는 작업의 순서(흐름)를 보고, 개발자는 생성해야 하는 객체와 해당 작업을 봅니다. 품질 관리 전문가는 프로세스의 세부 사항을 이해하고 이를 검증하기 위한 테스트를 개발할 수 있습니다. 따라서 시퀀스 다이어그램은 프로젝트에 참여하는 모든 사람에게 유용합니다.

10.4.4. 협력 다이어그램

협력 다이어그램은 시퀀스 다이어그램과 동일한 정보를 반영합니다. 그러나 그들은 다른 목표를 가지고 다르게 수행합니다. 그림에 표시됩니다. 10.2 시퀀스 다이어그램은 그림 1에 나와 있습니다. 10.3 협동 다이어그램 형태.

이전과 마찬가지로 객체는 직사각형으로, 문자는 그림으로 표시됩니다. 시퀀스 다이어그램은 시간에 따른 액터와 객체 간의 상호 작용을 보여주는 반면, 협력 다이어그램은 시간에 따른 관계를 보여주지 않습니다. 따라서 카드 리더는 "Joe's account"를 열도록 지시하고, "Joe's account"는 장치가 카드를 소유자에게 반환하도록 하는 것을 볼 수 있습니다. 직접 상호작용하는 객체는 선으로 연결됩니다. 예를 들어 카드 리더기가 ATM 화면과 직접 통신하는 경우 두 화면 사이에 선을 그려야 합니다. 선이 없다는 것은 객체 간의 직접적인 통신이 없다는 것을 의미합니다.

쌀. 10.3.계좌에서 돈을 인출하는 과정을 설명하는 협력 다이어그램

따라서 협력 다이어그램은 시퀀스 다이어그램과 동일한 정보를 표시하지만 다른 목적으로 필요합니다. 품질 보증 전문가와 시스템 설계자는 개체 간 프로세스 배포를 이해할 수 있습니다. 어떤 종류의 협동 다이어그램이 여러 객체가 하나의 중앙 객체와 연관되어 있는 별과 유사하다고 가정해 보겠습니다. 시스템 설계자는 시스템이 중앙 엔터티에 너무 의존적이므로 프로세스를 보다 균등하게 분배하기 위해 재설계해야 한다고 결론을 내릴 수 있습니다. 시퀀스 다이어그램에서는 이러한 유형의 상호 작용을 보기가 어렵습니다.

10.4.5. 클래스 다이어그램

클래스 다이어그램은 시스템의 클래스 간 상호 작용을 반영합니다. 예를 들어 "Joe's account"는 개체입니다. 이러한 객체의 유형은 일반적으로 계정으로 간주될 수 있습니다. 즉, "계정"은 클래스입니다. 클래스에는 데이터와 해당 데이터에 영향을 미치는 동작(작업)이 포함됩니다. 따라서 Account 클래스에는 클라이언트 식별 번호와 이를 확인하는 작업이 포함됩니다. 클래스 다이어그램에서는 시퀀스 다이어그램 또는 협동 다이어그램의 각 개체 유형에 대해 클래스가 생성됩니다. 돈 인출 사용 사례에 대한 클래스 다이어그램은 그림 1에 나와 있습니다. 10.4.

다이어그램은 Withdraw Money 사용 사례를 구현하는 클래스 간의 관계를 보여줍니다. 이 프로세스에는 카드 리더기, 계정, ATM 화면 및 현금 지급기의 네 가지 클래스가 포함됩니다. 클래스 다이어그램의 각 클래스는 세 부분으로 나누어진 직사각형으로 표시됩니다. 첫 번째 부분은 클래스의 이름을 나타내고 두 번째 부분은 해당 클래스의 이름을 나타냅니다. 속성.속성은 클래스를 특징짓는 일부 정보입니다. 예를 들어 Account 클래스에는 Account Number, PIN 및 Balance라는 세 가지 속성이 있습니다. 마지막 부분에는 클래스의 작업이 포함되어 있습니다. 행동(수업에서 수행하는 작업). 클래스를 연결하는 선은 클래스 간의 상호 작용을 보여줍니다.

쌀. 10.4.클래스 다이어그램

개발자는 클래스 다이어그램을 사용하여 실제로 클래스를 생성합니다. Rose와 같은 도구는 프로그래머가 선택한 언어로 세부 정보를 입력하는 핵심 클래스 코드를 생성합니다. 이러한 다이어그램을 사용하여 분석가는 시스템의 세부 정보를 표시할 수 있고 설계자는 시스템 설계를 이해할 수 있습니다. 예를 들어, 클래스가 너무 많은 기능 부하를 전달하는 경우 이는 클래스 다이어그램에 표시되며 설계자는 이를 다른 클래스에 재배포할 수 있습니다. 다이어그램은 통신 클래스 간에 관계가 정의되지 않은 경우를 식별하는 데도 도움이 될 수 있습니다. 각 사용 사례에서 상호 작용하는 클래스를 표시하려면 클래스 다이어그램을 만들어야 합니다. 모든 시스템이나 하위 시스템을 포괄하는 보다 일반적인 다이어그램을 작성할 수도 있습니다.

10.4.6. 상태 다이어그램

상태 다이어그램은 객체가 가질 수 있는 다양한 상태를 모델링하도록 설계되었습니다. 클래스 다이어그램이 클래스와 해당 관계의 정적인 그림을 보여주는 반면, 상태 다이어그램은 시스템 동작의 동적 특성을 설명하는 데 사용됩니다.

상태 다이어그램은 객체의 동작을 표시합니다. 따라서 은행 계좌는 여러 가지 상태를 가질 수 있습니다. 열려 있거나 닫혀 있거나 초과 인출될 수 있습니다. 계정의 동작은 해당 계정이 위치한 상태에 따라 변경됩니다. 상태 다이어그램은 바로 이 정보를 보여줍니다. 그림에서. 그림 10.5는 은행 계좌에 대한 상태 다이어그램의 예를 보여줍니다.

쌀. 10.5. Account 클래스의 상태 다이어그램

이 다이어그램은 계정의 가능한 상태와 계정이 한 상태에서 다른 상태로 전환되는 프로세스를 보여줍니다. 예를 들어, 클라이언트가 열린 계좌 폐쇄를 요청하면 후자는 "Closed" 상태가 됩니다. 클라이언트의 요구사항이 호출됩니다. 이벤트,한 상태에서 다른 상태로의 전환을 유발하는 이벤트입니다.

고객이 열려 있는 계좌에서 돈을 인출하면 해당 계좌는 초과인월 상태가 될 수 있습니다. 이는 계정 잔액이 0보다 작은 경우에만 발생하며 이는 차트의 [마이너스 잔액] 조건에 반영됩니다. 대괄호로 묶음 상태한 상태에서 다른 상태로의 전환이 언제 발생할 수 있는지 또는 발생할 수 없는지를 결정합니다.

다이어그램에는 두 가지 특별한 상태가 있습니다. 초기의그리고 결정적인.초기 상태는 검은색 점으로 강조 표시됩니다. 이는 개체 생성 당시의 개체 상태에 해당합니다. 최종 상태는 흰색 원 안의 검은색 점으로 표시됩니다. 이는 개체가 파괴되기 직전의 상태에 해당합니다. 상태 다이어그램에는 하나의 초기 상태만 있을 수 있습니다. 동시에 최종 상태는 필요한 만큼 많을 수도 있고 전혀 없을 수도 있습니다.

객체가 특정 상태에 있을 때 특정 프로세스가 실행될 수 있습니다. 이 예에서는 크레딧이 초과되면 해당 메시지가 클라이언트에 전송됩니다. 객체가 특정 상태에 있을 때 발생하는 프로세스를 호출합니다. 행위.

상태 차트는 모든 클래스에 대해 생성될 필요가 없으며 매우 복잡한 경우에만 사용됩니다. 클래스의 객체가 여러 상태에 존재할 수 있고 각 상태에서 다르게 동작하는 경우 그러한 다이어그램이 필요할 가능성이 높습니다. 그러나 많은 프로젝트에서는 이를 전혀 사용하지 않습니다. 상태 다이어그램이 구축되면 개발자는 클래스를 생성할 때 이를 사용할 수 있습니다.

상태 차트는 주로 문서화에 필요합니다.

10.4.7. 구성요소 다이어그램

구성 요소 다이어그램은 모델이 어떻게 보이는지 보여줍니다. 신체적 수준. 구성품을 보여줍니다 소프트웨어귀하의 시스템과 그들 사이의 연결. 구성 요소에는 실행 가능한 구성 요소와 코드 라이브러리라는 두 가지 유형이 있습니다.

그림에서. 그림 10.6은 ATM 시스템의 구성 요소 다이어그램 중 하나를 보여줍니다. 이 다이어그램은 ATM 시스템 클라이언트의 구성요소를 보여줍니다. 이 경우 개발팀은 C++ 언어를 사용하여 시스템을 구축하기로 결정했습니다. 각 클래스에는 자체 헤더 파일과 확장 파일이 있습니다. CPP - 각 클래스가 다이어그램에서 자체 구성 요소로 변환됩니다. 선택된 어두운 구성요소는 다음과 같습니다. 패키지 사양 C++의 ATM 클래스 본문 파일(확장자가 .CPP인 파일)에 해당합니다. 선택되지 않은 구성 요소는 패키지 사양이라고도 하지만 C++ 언어 클래스 헤더 파일(확장자가 .H인 파일)에 해당합니다. ATM 구성 요소. EXE는 작업 사양으로 정보 처리 흐름을 나타냅니다. 이 경우 처리 스레드는 실행 가능한 프로그램입니다.

구성요소는 점선으로 연결되어 구성요소 간의 종속성을 나타냅니다. 시스템은 하위 시스템의 수에 따라 여러 구성 요소 다이어그램을 가질 수 있습니다. 실행 파일. 각 하위 시스템은 구성 요소 패키지입니다.

구성 요소 다이어그램은 시스템 컴파일을 담당하는 프로젝트 참가자가 사용합니다. 구성 요소 다이어그램은 구성 요소가 컴파일되어야 하는 순서와 시스템에서 생성되는 실행 가능한 구성 요소에 대한 아이디어를 제공합니다. 다이어그램은 구현된 구성 요소에 대한 클래스 매핑을 보여줍니다. 따라서 코드 생성이 시작되는 곳에 필요합니다.

쌀. 10.6.구성요소 다이어그램

10.4.8. 배치 다이어그램

레이아웃 다이어그램은 네트워크에 있는 다양한 시스템 구성 요소의 물리적 위치를 보여줍니다. 이 예에서 ATM 시스템은 별도의 물리적 장치나 노드에서 실행되는 수많은 하위 시스템으로 구성됩니다. ATM 시스템의 배치 다이어그램은 그림 1에 나와 있습니다. 10.7.

이 다이어그램을 통해 시스템의 물리적 레이아웃에 대해 알아볼 수 있습니다. ATM 클라이언트 프로그램은 여러 사이트의 여러 위치에서 실행됩니다. 클라이언트는 폐쇄된 네트워크를 통해 지역 ATM 서버와 통신합니다. ATM 서버 소프트웨어가 실행됩니다. 차례로, 통해 지역 네트워크 지역 서버 Oracle을 실행하는 은행 데이터베이스 서버와 상호 작용합니다. 마지막으로 프린터가 지역 ATM 서버에 연결됩니다.

따라서 이 다이어그램은 시스템의 물리적 레이아웃을 보여줍니다. 예를 들어 우리 ATM 시스템은 첫 번째 계층에 데이터베이스, 두 번째 계층에 지역 서버, 세 번째 계층에 클라이언트가 있는 3계층 아키텍처를 따릅니다.

10.7. 배치 다이어그램

레이아웃 다이어그램은 프로젝트 관리자, 사용자, 시스템 설계자 및 운영 담당자가 시스템의 물리적 레이아웃과 개별 하위 시스템의 위치를 ​​명확히 하는 데 사용됩니다. 프로젝트 관리자는 완제품이 어떤 모습일지 사용자에게 설명합니다. 운영 담당자는 시스템 설치 작업을 계획할 수 있습니다.

책에서 마이크로 소프트 오피스 작가 레온티예프 비탈리 페트로비치

차트 표의 숫자가 가장 편리한 방식으로 정렬되어 있더라도 항상 완전한 인상을 얻을 수 있는 것은 아닙니다. Microsoft에서 제공하는 기능 사용 엑셀 템플릿다이어그램을 사용하면 테이블의 데이터를 명확하게 파악할 수 있습니다.

Computer for 100 책에서 시작하겠습니다. 윈도우 비스타 저자 조줄리아 유리

차트 차트는 표 형식의 데이터를 표시하는 데 사용됩니다. 그래픽 형태는 정보의 가시성을 크게 향상시킬 수 있으며 다양한 매개변수 간의 관계 또는 변화의 역학을 보여줍니다. Word에 다이어그램을 삽입하려면 도구를 사용하십시오.

책에서 효과적인 사무 작가 프타신스키 블라디미르 세르게예비치

다이어그램 가장 시각적인 것 엑셀 기능계산 결과나 축적된 데이터를 그래프(다이어그램) 형식으로 표현하는 것입니다. 때로는 가장 인상적인 숫자도 간단한 그래픽으로도 설득할 수 없는 방식입니다. 엑셀에는

Excel 통합 문서에서. 멀티미디어 코스 저자 메디노프 올렉

8장 자주 사용되는 다이어그램 엑셀 프로그램다양한 통계 및 분석 보고서를 나타내는 문서를 만드는 데 사용됩니다. 이는 판매 보고서, 기온 측정표, 사회학적 조사 데이터 등이 될 수 있습니다. 숫자가 항상 그런 것은 아닙니다.

Word 2007 책에서. 인기 있는 튜토리얼 저자 크라인스키 1세

차트 작성 첫 번째 예에서는 그림 1에 표시된 테이블을 작성해야 합니다. 8.1. 쌀. 8.1. 온도 측정 테이블 이 테이블의 데이터를 기반으로 온도 변화에 대한 간단한 그래프를 구성하겠습니다.1. 표에서 채워진 범위를 선택합니다.2. 이동

컴퓨터 작업을 위한 자체 사용 설명서 책에서 작가 콜리스니첸코 데니스 니콜라예비치

6.6. 다이어그램 제외 그래픽 파일, V 워드 문서다이어그램을 삽입할 수 있습니다. 다이어그램을 사용하면 숫자 데이터를 시각적으로 표시할 수 있습니다. 예를 들어 데이터 변경 방식을 추적하고 시간에 따른 특정 프로젝트의 발전을 확인할 수 있습니다. 다이어그램이 비슷해짐

C++의 응용 프로그램 예제를 사용한 객체 지향 분석 및 설계 책에서 부치 그래디

14.9. 다이어그램 이제 무미건조한 숫자를 그래픽으로 전환하여 테이블을 더욱 아름답고 유익하게 만들 차례일까요? 이를 위해 다이어그램이 사용됩니다. 무슨 말을 하든 표보다 다이어그램이 더 잘 인식됩니다. 다이어그램을 작성하려면 해당 값을 선택해야 합니다.

프로그래밍 기술 책에서 저자 Kamaev V A

5.2. 클래스 다이어그램 필수: 클래스와 해당 관계 클래스 다이어그램은 클래스와 해당 관계를 보여줌으로써 프로젝트의 논리적 측면을 나타냅니다. 별도의 클래스 다이어그램은 클래스 구조의 특정 보기를 나타냅니다. 분석 단계에서 우리는

BPwin 4.0을 사용한 비즈니스 프로세스 모델링 책에서 발췌 작가 마클라코프 세르게이 블라디미로비치

5.4. 개체 다이어그램 필수: 개체 및 해당 관계 개체 다이어그램은 시스템의 논리적 디자인에 있는 기존 개체 및 해당 관계를 보여줍니다. 즉, 객체 다이어그램은 일부 구성에서 이벤트 흐름의 스냅샷입니다.

OrCAD PSpice 책에서. 분석 전기 회로 작성자: Keown J.

5.7. 프로세스 다이어그램. 필수: 프로세서, 장치 및 연결 프로세스 다이어그램은 물리적 시스템 설계의 프로세서 전반에 걸친 프로세스 분포를 표시하는 데 사용됩니다. 별도의 프로세스 다이어그램은 프로세스 구조의 한 보기를 보여줍니다.

초보자를 위한 VBA 책에서 스티브 커밍스

10.4. UML 다이어그램 10.4.1. 시각적 다이어그램 유형 UMLUML을 사용하면 여러 유형의 시각적 다이어그램을 만들 수 있습니다. 시퀀스 다이어그램; 협력 다이어그램; 클래스 다이어그램; 상태 다이어그램; 다이어그램

Macintosh 작업을 위한 자체 사용 설명서 책에서 저자 소피아 스크릴리나

1.2.6. 그림의 다이어그램 프레임 그림 1.2.26은 다이어그램 프레임이라고 불리는 경계 상자가 있는 분해 다이어그램의 일반적인 예를 보여줍니다. 쌀. 1.2.26. 와이어프레임이 있는 분해 다이어그램의 예 와이어프레임에는 제목( 윗부분프레임) 및 지하실(하부).

작가의 책에서

타이밍 다이어그램 입력 및 출력 전압의 타이밍 다이어그램을 얻으려면 입력 파일을 약간 수정해야 합니다. 이전 예와 마찬가지로 정현파 입력 전압이 사용됩니다. Vi 1 0 sin (0 0. 5V 5kHz) 과도 분석과 함께

작가의 책에서

차트 및 그래프 끝없는 숫자 행 뒤에 숨은 의미는 전문가만이 식별할 수 있지만, 히스토그램이나 원형 차트는 누구나 이해할 수 있습니다(또는 적어도 이해한다고 주장할 수 있습니다). VBA에는 다이어그램을 생성하는 도구가 내장되어 있지 않지만

작가의 책에서

5.1.14. 차트 차트는 테이블의 숫자 데이터를 그래픽으로 표현한 것입니다. Pages는 기둥형, 누적형 기둥, 막대형 차트, 누적형 막대형 차트, 꺾은선형, 영역형, 누적형 영역형 등 여러 유형의 차트를 제공합니다.

작가의 책에서

5.2.8. 차트 차트는 선택한 범위의 데이터를 그래픽으로 표현한 것입니다. 차트를 작성하려면 다음 알고리즘을 따르십시오1. 계산된 값의 테이블을 만듭니다.2. 원하는 범위를 선택합니다(인접하지 않은 직사각형으로 구성될 수도 있음).

어린 시절 누구나 "라는 말을 들어 본 것 같습니다. 7회 측정 컷 1회". 프로그래밍에서도 마찬가지입니다. 실행에 시간을 보내기 전에 항상 구현에 대해 생각하는 것이 좋습니다. 구현할 때 종종 클래스를 만들고 상호 작용을 생각해 내야 합니다. 그리고 종종 이를 시각적으로 표현하는 것이 도움이 될 수 있습니다. 가장 정확한 방법으로 문제를 해결해 보세요. UML.

UML이란 무엇입니까?

속 사진을 보시면 검색 엔진, 그러면 다음이 분명해질 것입니다. UML– 다이어그램, 화살표, 사각형에 관한 것입니다. 중요한 것은 UML이 다음과 같이 번역된다는 것입니다. 통합 모델링 언어. 여기서 통일이라는 단어가 중요합니다. 즉, 우리 그림은 우리뿐만 아니라 UML을 아는 다른 사람들도 이해할 수 있습니다. 이것은 다이어그램을 그리는 데 사용되는 국제 언어인 것으로 밝혀졌습니다.

Wikipedia에 따르면

UML은 소프트웨어 개발, 비즈니스 프로세스 모델링, 시스템 설계 및 조직 구조 표시의 객체 모델링을 위한 그래픽 설명 언어입니다.
모든 사람이 생각하거나 깨닫지 못하는 가장 흥미로운 점은 UML에 사양이 있다는 것입니다. 게다가 UML2 사양도 있습니다. 사양에 대한 자세한 내용은 Object Management Group 웹 사이트에서 확인할 수 있습니다. 실제로 이 그룹에서는 UML 사양을 개발하고 있습니다. UML이 클래스 구조를 설명하는 데만 국한되지 않는다는 점도 흥미롭습니다. UML 다이어그램에는 다양한 유형이 있습니다. UML 다이어그램 유형에 대한 간략한 설명은 동일한 Wikipedia: UML - 다이어그램 또는 Timur Batyrshinov의 비디오에서 볼 수 있습니다. UML 다이어그램 개요. UML은 다양한 프로세스를 설명하는 데도 널리 사용됩니다. 예를 들면 JWT를 사용한 Single Sign-On입니다. UML 클래스 다이어그램의 사용으로 돌아가서 동일한 UML 다이어그램으로 패턴을 설명하는 Head First: Design Patterns라는 책을 주목할 가치가 있습니다. UML이 실제로 사용되고 있는 것으로 밝혀졌습니다. 그리고 그 적용에 대한 지식과 이해는 매우 유용한 기술이라는 것이 밝혀졌습니다.

애플리케이션

IDE에서 동일한 UML을 사용하여 작업할 수 있는 방법을 살펴보겠습니다. IDE로 사용하자 IntelliJ 아이디어. 당신이 사용하는 경우 IntelliJ 아이디어 얼티밋, 그런 다음 "즉시" 플러그인을 설치하게 됩니다. UML 지원". 아름다운 클래스 다이어그램을 자동으로 생성할 수 있습니다. 예를 들어 Ctrl+N 또는 메뉴 항목 "탐색" -> "클래스"를 통해 클래스로 이동합니다. 배열목록. 이제 클래스 이름에 대한 컨텍스트 메뉴를 통해 “다이어그램” -> “다이어그램 팝업 표시”를 선택합니다. 결과적으로 우리는 아름다운 다이어그램을 얻습니다.

하지만 직접 그리고 싶다면, 그렇지 않더라도 어떻게 해야 할까요? 얼티밋 버전아이디어? IntelliJ Idea Community Edition을 사용한다면 다른 선택의 여지가 없습니다. 이렇게 하려면 UML 다이어그램이 어떻게 구성되어 있는지 이해해야 합니다. 먼저 Graphviz를 설치해야 합니다. 그래프를 시각화하기 위한 유틸리티 세트입니다. 이는 우리가 사용할 플러그인에서 사용됩니다. 설치 후 디렉터리를 추가해야 합니다. 큰 상자설치된 디렉토리에서 그래프비즈환경 변수에 . 그런 다음 IntelliJ Idea의 메뉴에서 파일 -> 설정을 선택합니다. "설정" 창에서 "플러그인" 카테고리를 선택하고 "저장소 찾아보기" 버튼을 클릭한 후 PlantUML 통합 플러그인을 설치합니다. 이게 왜 그렇게 좋은가요? 플랜트UML? "라는 그래프 설명 언어를 사용합니다. "이렇게 하면 더 보편적일 수 있습니다. 왜냐하면... 주어진 언어 PlantUML만 사용되는 것은 아닙니다. 게다가 아래에서 수행하는 모든 작업은 IDE뿐만 아니라 IDE에서도 수행할 수 있습니다. 온라인 서비스 planttext.com. PlantUML 플러그인을 설치한 후 “파일” -> “새로 만들기”를 통해 UML 다이어그램을 생성할 수 있습니다. "UML 클래스" 유형의 다이어그램을 만들어 보겠습니다. 이 과정에서 예제가 포함된 템플릿이 자동으로 생성됩니다. 해당 콘텐츠를 삭제하고 Habr: 클래스 관계 - UML에서 코드까지의 기사로 무장한 자체 콘텐츠를 만들어 보겠습니다. 그리고 이것을 텍스트에서 어떻게 묘사하는지 이해하기 위해 PlantUML 매뉴얼인 plantuml 클래스 다이어그램을 살펴보겠습니다. 맨 처음에는 연결을 설명하는 방법을 보여주는 표가 있습니다.

"UML의 클래스 간 관계. 예"에서 연결 자체를 살펴볼 수도 있습니다. 이러한 자료를 바탕으로 UML 다이어그램 만들기를 시작해 보겠습니다. 두 클래스를 설명하는 다음 콘텐츠를 추가해 보겠습니다. @startuml class ArrayList ( ) class LinkedList ( ) @enduml Idea에서 결과를 보려면 "View" -> "를 선택하세요. 도구 창" -> "PlantUML". 간단히 클래스를 나타내는 두 개의 사각형을 얻습니다. 우리가 알고 있듯이 이 두 클래스는 모두 List 인터페이스를 구현합니다. 이 클래스 관계를 구현이라고 합니다. 이러한 관계를 표시하려면 다음과 같은 화살표를 사용하십시오. 점선. 묘사해보자: 인터페이스 목록 목록< | . . ArrayList List < | . . LinkedList List - один из дочерних классов Collection . То есть он наследуется от Collection. Эта связь называется обобщением (generalization). Выглядит как стрелка с обычной непрерывной линией. Изобразим её: interface Collection Collection < | -- List Для следующего типа связи добавим в описание класса ArrayList запись о 패키지 비공개요소 배열: ~ Object elementData 이제 ArrayList에 일부 개체가 포함되어 있음을 보여주고 싶습니다. 이 경우 연결 유형은 - 집합(집합). 이 경우 집계는 ArrayList입니다. 여기에는 다른 개체가 포함되어 있습니다. 목록의 개체는 목록 없이도 존재할 수 있기 때문에 집계를 선택합니다. 목록의 필수 부분은 아닙니다. 그들의 수명은 목록의 수명과 연결되어 있지 않습니다. Aggregate는 라틴어에서 "조립된", 즉 무언가로 구성된 것으로 번역됩니다. 예를 들어, 인생에는 펌프와 모터로 구성된 펌핑 장치가 있습니다. 장치 자체는 분해되어 일부만 남길 수 있습니다. 구성 요소. 예를 들어, 판매하거나 다른 단위에 넣는 것입니다. 목록도 마찬가지다. 그리고 이는 단위 근처의 빈 다이아몬드와 연속된 선의 형태로 표현됩니다. 이를 다음과 같이 묘사해 보겠습니다. class Object ( ) ArrayList o- Object 이제 ArrayList와 달리 LinkedList 클래스에는 저장된 데이터를 참조하는 컨테이너인 Node가 포함되어 있음을 보여주고 싶습니다. 이 경우 노드는 LinkedList 자체의 일부이며 별도로 존재할 수 없습니다. 노드는 콘텐츠를 직접 저장하지 않고 콘텐츠에 대한 링크만 포함합니다. 예를 들어 LinkedList에 행을 추가하면 해당 행에 대한 링크와 이전 및 다음 노드에 대한 링크가 포함된 새 노드를 추가합니다. 이러한 유형의 연결을 호출합니다. 구성(구성). 복합재(부품으로 구성된 복합재)를 표시하려면 연속된 선과 함께 유색 다이아몬드가 그려집니다. 이제 이것을 연결의 텍스트 표시 형식으로 작성해 보겠습니다. class Node ( ) LinkedList * -- Node 이제 다른 항목을 표시하는 방법을 배워야 합니다. 중요한 유형통신 - 탐닉(종속 관계). 한 클래스가 다른 클래스를 사용할 때 사용되며, 해당 클래스는 사용 중인 클래스를 포함하지 않으며 그 하위 클래스도 아닙니다. 예를 들어 LinkedList 및 ArrayList는 ListIterator를 생성할 수 있습니다. 이것을 점선이 있는 화살표로 표시해 보겠습니다. class ListIterator ListIterator< . . . ArrayList : create ListIterator < . . . LinkedList : create Выглядеть после всего это будет следующим образом:

필요한 만큼 자세히 설명할 수 있습니다. 모든 명칭은 "PlantUML - 클래스 다이어그램"에 표시됩니다. 또한 이러한 다이어그램을 그리는 데 초자연적 인 것은 없으며 작업을 수행 할 때 손으로 빠르게 그릴 수 있습니다. 이는 애플리케이션 아키텍처를 통해 사고하는 능력을 개발하고 잘못된 모델을 구현하는 데 하루를 보낸 후가 아니라 조기에 클래스 구조 결함을 식별하는 데 도움이 됩니다. 시도해 볼 만한 좋은 이유라고 생각합니다.)

오토메이션

먹다 다양한 방법 PlantUML 다이어그램 자동 생성. 예를 들어, 아이디어 SketchIT 플러그인이 있지만 제대로 그려지지 않습니다. 예를 들어, 인터페이스 구현이 잘못 그려졌습니다(상속으로 표시됨). 인터넷에 이것을 구축하는 방법에 대한 예도 있습니다. 수명주기프로젝트를 구축하는 중입니다. 에 대해 말하자면 메이븐 uml-java-doclet을 사용하는 예가 있습니다. 이것이 어떻게 수행되는지 보여주기 위해 Maven Archetype을 사용하여 빠른 생성메이븐 프로젝트. 다음 명령을 실행해 보겠습니다: mvn archetype:generate 필터 선택 문제에 대해( 숫자를 선택하거나 필터를 적용하세요) 간단히 Enter를 눌러 기본값을 그대로 두십시오. 앞으로도 그럴 거야" 메이븐-아키타입-빠른 시작". 최신 버전을 선택하세요. 다음으로 질문에 답하고 프로젝트 생성을 완료하세요.

Maven은 이 기사의 초점이 아니므로 Maven 질문에 대한 답변은 Maven 사용자 센터에서 찾을 수 있습니다. 생성된 프로젝트에서 편집할 프로젝트 설명 파일을 열고, pom.xml. uml-java-doclet 설치 설명의 내용을 복사해 보겠습니다. 설명에 사용된 아티팩트를 Maven Central 저장소에서 찾을 수 없습니다. 그러나 그것은 https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0과 함께 나에게 효과적이었습니다. 즉, 해당 설명을 교체하면 됩니다. 그룹 ID와 함께 " info.leadinglight" 에 " com.chfourie"그리고 버전을 설치하세요" 1.0.0 ". 그런 다음 파일이 있는 디렉터리에서 실행할 수 있습니다. pom.xml다음 명령은 mvn clean install 및 mvn javadoc:javadoc 입니다. 이제 생성된 문서(explorer target\site\apidocs\index.html)를 열면 UML 다이어그램이 표시됩니다. 그건 그렇고, 구현은 이미 여기에 올바르게 표시되어 있습니다)

결론

보시다시피 UML을 사용하면 애플리케이션의 구조를 시각화할 수 있습니다. 게다가 UML은 이것에만 국한되지 않습니다. UML을 사용하면 회사 내의 다양한 프로세스를 설명하거나 작성 중인 기능이 작동하는 비즈니스 프로세스를 설명할 수 있습니다. UML이 개인적으로 얼마나 유용한지는 귀하가 결정하는 데 달려 있지만, 시간을 내어 UML을 더 자세히 읽어보는 것은 어떤 경우에도 유용할 것입니다. #Viacheslav 이 게시물의 영어 버전: CodeGym의 UML 다이어그램 Java

주석: 이 과정의 주제는 UML(통합 모델링 언어)입니다. 이전 강의에서는 UML이 무엇인지, UML의 역사, 목적, 언어 사용 방법, 정의 구조, 용어 및 표기법에 대해 이야기했습니다. UML 모델은 다이어그램 세트라는 것이 알려져 있습니다. 이 강의에서 우리는 다음과 같은 질문을 고려할 것입니다: 왜 여러 유형의 다이어그램이 필요한가? 다이어그램 유형; OOP 및 다이어그램 순서

이 강의의 주요 내용을 논의하기 전에 다이어그램을 작성해야 하는 이유에 대해 이야기해 보겠습니다. 모든 시스템(소프트웨어뿐만 아니라)의 모델 개발은 항상 시스템 생성이나 업데이트보다 우선합니다. 이는 적어도 해결되는 문제를 보다 명확하게 상상하기 위해 필요합니다. 잘 고안된 모델은 개발 팀 내 상호 작용과 고객과의 상호 이해 모두에 매우 중요합니다. 궁극적으로 이는 디자인이 코드로 구현되기 전에 "구조적으로 일관성"을 보장합니다.

복잡한 시스템의 모델을 만드는 이유는 시스템을 완전히 설명할 수 없기 때문입니다. "한 눈에 살펴보세요." 따라서 우리는 특정 작업에 필수적인 시스템 속성만 강조하고 이러한 속성을 표시하는 모델을 구축합니다. 객체 지향 분석 방법을 사용하면 실제 복잡한 시스템을 가장 적절한 방식으로 설명할 수 있습니다. 그러나 시스템의 복잡성이 증가함에 따라 우수한 모델링 기술에 대한 필요성이 대두됩니다. 이전 강의에서 이미 말씀드린 것처럼 통일된 모델링 언어(Unified Modeling Language, UML)은 시스템을 지정, 시각화, 설계 및 문서화하기 위한 그래픽 언어입니다. UML을 사용하면 생성되는 시스템의 개념뿐만 아니라 구현의 특정 기능을 반영하여 상세한 시스템 모델을 개발할 수 있습니다. UML 모델 내에서 시스템에 대한 모든 아이디어는 다이어그램이라는 특별한 그래픽 구조의 형태로 기록됩니다.

메모. 우리는 다이어그램 유형 중 일부만 고려할 것입니다. 예를 들어 이번 강의에서는 컴포넌트 다이어그램을 다루지 않습니다. 간략한 개요다이어그램의 종류. 차트 유형 수 특정 모델응용 프로그램은 어떤 식으로든 제한되지 않습니다. 을 위한 간단한 응용예외 없이 모든 유형의 다이어그램을 작성할 필요가 없습니다. 그 중 일부는 단순히 누락되었을 수 있으며 이 사실은 오류로 간주되지 않습니다. 특정 유형의 다이어그램의 가용성은 특정 프로젝트의 세부 사항에 따라 다르다는 점을 이해하는 것이 중요합니다. 다른 유형의 다이어그램(여기에서는 설명하지 않음)에 대한 정보는 UML 표준에서 찾을 수 있습니다.

여러 유형의 다이어그램이 필요한 이유

먼저 용어를 정의해 보겠습니다. 본 강의의 서문에서 우리는 시스템, 모델, 다이어그램의 개념을 반복적으로 사용했습니다. 저자는 우리 각자가 이러한 개념의 의미를 직관적으로 이해하고 있다고 확신하지만, 완전히 명확하게 설명하기 위해 용어집을 다시 살펴보고 다음을 읽어 보겠습니다.

체계- 공통된 작동 목적으로 통합된 상호 연결된 제어 하위 시스템 세트입니다.

예, 별로 유익하지 않습니다. 그러면 하위 시스템이란 무엇입니까? 상황을 명확히하기 위해 고전을 살펴 보겠습니다.

체계특정 목표를 달성하기 위해 구성되고 다양한 관점에서 모델 세트를 사용하여 설명되는 일련의 하위 시스템을 나타냅니다.

글쎄, 당신이 할 수 있는 일은 아무 것도 없습니다. 당신은 하위 시스템의 정의를 찾아야 합니다. 거기에도 이렇게 써있어요 하위 시스템요소 모음으로, 그 중 일부는 다른 요소의 동작을 지정합니다. Ian Sommerville은 이 개념을 다음과 같이 설명합니다.

서브시스템기능이 다른 하위 시스템의 서비스에 의존하지 않는 시스템입니다. 소프트웨어 시스템은 상대적으로 독립적인 하위 시스템의 모음으로 구성됩니다. 하위 시스템 간의 상호 작용도 정의됩니다.

그다지 명확하지는 않지만 더 좋습니다. "인간"의 언어로 말하면 시스템은 상대적으로 자급자족할 수 있는 단순한 개체 집합으로 표현됩니다. 이는 우리가 프로그램을 개발하는 과정에서 어떻게 구축되는지와 비교할 수 있습니다. GUI표준 "큐브"(시각적 구성 요소) 또는 프로그램 텍스트 자체가 기능별로 통합된 서브루틴을 포함하는 모듈로 분할되어 후속 프로그램에서 재사용될 수 있는 방법입니다.

우리는 시스템의 개념을 이해합니다. 설계 과정에서 시스템이 고려됩니다. 다양한 관점에서모델의 도움으로 다양한 표현이 다이어그램 형태로 나타납니다. 다시 말하지만, 독자는 개념의 의미에 대해 질문을 가질 수 있습니다. 모델그리고 다이어그램. 우리는 그것이 아름답다고 생각하지만 매우 명확한 정의는 아닙니다. 시스템의 의미론적으로 닫힌 추상화로서의 모델상황이 명확하게 밝혀질 가능성은 없으므로, "우리의 말로" 설명하도록 노력하겠습니다.

모델- 이것은 특정 작업에 대한 시스템의 가장 중요한 특성만 표시하는 특정(물질적이든 아니든) 개체입니다. 모델은 물질과 무형, 인공과 자연, 장식과 수학적 등 다양합니다.

몇 가지 예를 들어 보겠습니다. 어린 시절 신나게 가지고 놀았던 우리 모두에게 친숙한 플라스틱 장난감 자동차는 다름 아닌, 재료 인공 장식실제 자동차 모델. 물론 이러한 "자동차"에는 엔진이 없으며 탱크에 휘발유를 채우지 않으며 기어 박스가 작동하지 않지만 (실제로 기어 박스가 전혀 없음) 모델로서이 장난감은 기능을 완전히 수행합니다. : 바퀴 4개, 차체, 문, 창문, 운전 능력 등의 특징을 보여주기 때문에 어린이에게 자동차에 대한 아이디어를 제공합니다.

의학 연구에서 동물 실험은 종종 인간 임상 실험보다 우선합니다. 이 경우 동물은 다음과 같은 역할을 합니다. 소재 천연인간 모델.

위에 묘사된 방정식 역시 모델이지만 수학적 모델이며 중력의 영향을 받는 물질 점의 움직임을 설명합니다.

남은 것은 다이어그램이 무엇인지 말하는 것뿐입니다. 도표많은 요소를 그래픽으로 표현한 것입니다. 일반적으로 정점(엔티티)과 가장자리(관계)가 있는 그래프로 표시됩니다. 다이어그램의 예는 많습니다. 이것은 학창 시절 우리 모두에게 친숙한 블록 다이어그램이며, 사용자 매뉴얼에서 볼 수 있는 다양한 장비의 설치 다이어그램, 그리고 실행을 통해 볼 수 있는 디스크의 파일 및 디렉토리 트리입니다. 윈도우 콘솔트리 명령, 그리고 훨씬 더 많은 것. 일상 생활에서 다이어그램은 텍스트보다 그림을 더 쉽게 인식하기 때문에 모든 면에서 우리를 둘러싸고 있습니다.

하지만 소프트웨어 설계(및 그 이상)로 돌아가 보겠습니다. 이 업계에서는 다이어그램을 사용하여 다양한 관점에서 시스템을 시각화할 수 있습니다.. 예를 들어 다이어그램 중 하나는 사용자와 시스템의 상호 작용을 설명할 수 있고, 다른 다이어그램은 작동 중 시스템 상태의 변화를 설명할 수 있으며, 세 번째 다이어그램은 시스템 요소 간의 상호 작용 등을 설명할 수 있습니다. 복잡한 시스템 작고 거의 독립적인 모델 세트(다이어그램)로 표현될 수 있고 표현되어야 하며, 그 중 어느 것도 시스템을 설명하고 완전한 그림을 얻는 데 충분하지 않습니다. 왜냐하면 각각은 시스템 기능의 특정 측면에 초점을 맞추고 표현하기 때문입니다. 다른 추상화 수준. 즉, 각 모델은 설계된 시스템에 대한 특정한 특정 관점에 해당합니다.

이전 단락에서 우리는 모델의 개념을 매우 자유롭게 다루었음에도 불구하고 위 정의의 맥락에서 다음을 이해해야 합니다. 개별 다이어그램은 모델이 아닙니다.. 다이어그램은 모델을 시각화하는 수단일 뿐이며 두 개념은 구별되어야 합니다. 오직 일련의 다이어그램이 시스템 모델을 구성합니다.가장 완벽하게 설명하지만 문맥에서 벗어난 하나의 다이어그램만은 아닙니다.

차트 유형

UML 1.5 정의 12가지 차트 유형, 세 그룹으로 나뉩니다.

  • 네 가지 유형의 다이어그램은 애플리케이션의 정적 구조를 나타냅니다.
  • 5개는 시스템의 행동 측면을 나타냅니다.
  • 세 개는 시스템 작동(구현 다이어그램)의 물리적 측면을 나타냅니다.

UML 2.1의 현재 버전은 크게 변경되지 않았습니다. 다이어그램의 모양이 약간 변경되었으며(프레임 및 기타 시각적 개선 사항이 나타남) 표기법도 약간 개선되었으며 일부 다이어그램에는 새로운 이름이 지정되었습니다.

그러나 정확한 수치는 표준 다이어그램우리에게는 모든 것이 아니라 일부만 고려할 것이기 때문에 그것은 전혀 중요하지 않습니다. 왜냐하면 특정 애플리케이션의 특정 모델에 대한 다이어그램 유형의 수가 엄격하게 고정되어 있지 않기 때문입니다. 간단한 애플리케이션의 경우 모든 단일 다이어그램을 작성할 필요가 없습니다. 예를 들어 로컬 애플리케이션의 경우 배포 다이어그램을 작성할 필요가 없습니다. 다이어그램 목록은 개발 중인 프로젝트의 세부 사항에 따라 달라지며 개발자가 직접 결정한다는 점을 이해하는 것이 중요합니다. 호기심 많은 독자가 여전히 모든 UML 다이어그램에 대해 알고 싶다면 UML 표준(http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML)을 참조하도록 하겠습니다. 이 과정의 목적은 UML의 모든 기능을 절대적으로 설명하는 것이 아니라 이 언어를 소개하고 이 기술에 대한 초기 아이디어를 제공하는 것임을 상기시켜 드리겠습니다.

따라서 다음과 같은 유형의 다이어그램을 간략하게 살펴보겠습니다.

  • 사용 사례 다이어그램;
  • 클래스 다이어그램;
  • 객체 다이어그램;
  • 시퀀스 다이어그램;
  • 상호작용 다이어그램;
  • 상태도;
  • 활동 다이어그램;
  • 배포 다이어그램.

우리는 향후 강의에서 이러한 다이어그램 중 일부에 대해 더 자세히 설명할 것입니다. 지금은 세부 사항에 초점을 맞추지 않고 독자에게 최소한 다이어그램 유형을 시각적으로 구별하고 주요 다이어그램 유형의 목적에 대한 초기 아이디어를 제공하도록 가르치는 목표를 설정하겠습니다. 그럼 시작해 보겠습니다.

사용 사례 다이어그램

모든(소프트웨어 포함) 시스템은 작동 중에 사람이 사용하거나 다른 시스템과 상호 작용한다는 사실을 고려하여 설계되었습니다. 시스템이 작동하는 동안 상호작용하는 엔터티를 호출합니다. 배우, 각 행위자는 시스템이 엄격하게 정의되고 예측 가능한 방식으로 작동할 것으로 기대합니다. 엑터(ector)에 대해 좀 더 엄격한 정의를 내려보겠습니다. 이를 위해 UML용 멋진 시각적 사전을 사용하겠습니다. 지콤멘토:

엑토르(배우)- 선례나 개체(시스템, 하위 시스템 또는 클래스)와 상호 작용할 때 수행되는 논리적으로 관련된 역할 집합입니다. 행위자는 엔터티 외부의 무언가를 나타내는 사람이나 다른 시스템, 하위 시스템 또는 클래스일 수 있습니다.

그래픽으로 엑터는 " 작은 사람", 우리가 어렸을 때 그린 것과 유사하게, 우리 가족을 묘사하거나, 해당 스테레오타입이 있는 클래스 기호, 그림에 표시된 것처럼. 두 가지 표현 형태 모두 동일한 의미를 가지며 다이어그램에 사용될 수 있습니다. "고정형" 형식은 시스템 액터를 나타내거나 액터에 속성이 있고 이를 표시해야 하는 경우에 더 자주 사용됩니다(그림 2.1).

주의 깊은 독자는 즉시 다음과 같이 질문할 수 있습니다. 왜 배우가 아니고 배우인가?? 우리는 "ektor"라는 단어가 러시아 사람들의 귀에 약간 가혹하다는 점에 동의합니다. 우리가 이것을 말하는 이유는 간단합니다. ector는 단어에서 유래되었습니다. 행동, 번역된 의미는 행동. "ector"라는 단어를 문자 그대로 번역하면 다음과 같습니다. 배우- 너무 길어서 사용하기 불편함. 그러므로 우리는 계속 이렇게 말할 것입니다.


쌀. 2.1.

주의 깊은 독자라면 엑터의 정의에 "선례"라는 단어가 번쩍이는 것을 알아차렸을 것입니다. 그것은 무엇입니까? 우리가 지금 이야기하고 있는 것을 기억한다면 이 질문은 우리에게 더욱 흥미로울 것입니다. 사용 사례 다이어그램. 그래서,

사용 사례- 사용자 관점에서 시스템 동작의 별도 측면에 대한 설명(Butch)

정의는 매우 명확하고 포괄적이지만 동일한 정의를 사용하여 더 명확하게 할 수 있습니다. 지콤멘토"옴:

사용 사례- 행위자가 관찰한 결과로 이어지는 시스템에서 수행되는 일련의 순차적 이벤트(옵션 포함)에 대한 설명입니다. 유스 케이스는 행위자와 시스템 간의 상호 작용을 설명하는 엔터티의 동작을 나타냅니다. 유스 케이스는 특정 결과가 "어떻게" 달성되는지 보여주지 않고 "무엇"이 달성되는지만 보여줍니다.

선례는 매우 간단한 방법으로 지정됩니다. 즉, 내부에 이름이 표시된 타원 형태입니다. 사용 사례와 행위자는 선을 사용하여 연결됩니다.. 종종 선의 한쪽 끝에 그림이 그려집니다. 2.3

  • 설계된 시스템의 동작에 대한 일반적인 요구 사항 형성
  • 후속 세부화를 위한 시스템의 개념적 모델 개발;
  • 고객 및 시스템 사용자와의 상호 작용을 위한 문서 준비.
  • 11.1. 통합 모델링 언어의 구조

    통합 모델링 언어 (UML)은 현재 객체 지향 시스템의 설계 및 개발 결과를 설명(문서화)하기 위한 사실상의 표준입니다. UML의 개발은 Rational Software에서 근무했던 Grady Booch와 James Rumbaugh에 의해 1994년에 시작되었습니다. 1995년 가을에 Ivar Jacobson이 합류했고 같은 해 10월에는 통합 방법(Unified Method)의 예비 버전 0.8이 출시되었습니다. 그 이후로 UML 사양의 여러 버전이 출시되었으며 그 중 두 버전은 국제 표준 상태를 갖습니다.

    UML 1.4.2 – "ISO/IEC 19501:2005. 정보 기술. 공개 배포 처리. UML(통합 모델링 언어). 버전 1.4.2"(영어 "정보 기술. 개방형 분산 처리. 통합 모델링 언어(UML). 버전 1.4.2");

    UML 2.4.1 - "ISO/IEC 19505-1:2012. 정보 기술. 객체 관리 그룹 통합 모델링 언어(OMG UML). 1부. 인프라"(eng. "정보 기술 - 객체 관리 그룹 통합 모델링 언어(OMG) UML) - 파트 1: 인프라") 및 "ISO/IEC 19505-2:2012. 정보 기술. 객체 관리 그룹 통합 모델링 언어(OMG UML). 파트 2. 상부 구조"(eng. "정보 기술 - 객체 관리 그룹 통합 모델링 언어(OMG UML) - 2부: 상부 구조').

    최신 공식 언어 사양은 www.omg.org에서 확인할 수 있습니다.

    UML의 일반적인 구조는 다음 그림과 같습니다.

    쌀. 11.1. UML 구조

    11.2. UML 의미론 및 구문

    의미론 - 언어 단위의 의미, 주로 단어와 구를 연구하는 언어학의 한 분야입니다.

    통사론 – 단어와 그 형태를 구와 문장으로 결합하는 방법, 문장을 복잡한 문장으로 결합하는 방법, 텍스트의 일부로 문장을 만드는 방법.

    따라서 UML과 관련하여 의미론과 구문은 기본 개념(모델 요소)과 확장 메커니즘을 표현하기 위해 자연어와 형식 언어를 결합하는 표현 스타일(모델 구축)을 결정합니다.

    11.3. UML 표기법

    표기법은 시각적 표현을 위한 의미론의 그래픽 해석입니다.

    UML은 세 가지를 정의합니다. 엔터티 유형 :

    구조적 - 개념적 또는 물리적 대상을 반영하는 추상화입니다.

    그룹화 – 다이어그램 요소의 의미론적 조합에 사용되는 요소입니다.

    설명(주석) – 다이어그램 요소에 대한 설명입니다.

    다음 표는 간단한 설명그래픽 표기법에 사용되는 주요 엔터티와 이를 표시하는 주요 방법.

    표 11.1. 엔터티

    유형 이름 지정 정의(의미론)
    구조적
    (수업)
    가지고 있는 많은 개체 일반 구조그리고 행동

    (물체)
    개념적 경계, 성격, 상태 및 행동이 명확하게 정의된 실제 또는 상상의 실체를 추상화한 것입니다. UML 관점에서 개체는 클래스의 인스턴스(엔티티의 인스턴스)입니다.

    (배우)

    엔지니어
    경로 서비스
    시스템과 상호작용하고 시스템을 사용하는 시스템 외부의 실체 기능성특정 목표를 달성하거나 특정 문제를 해결하기 위해. 그래서 배우가 외부 소스또는 정보수신자

    (사용 사례)
    행위자에게 중요한 결과를 가져오는 시스템에 의해 수행되는 작업에 대한 설명

    (상태)
    엔터티가 어떤 조건을 충족하거나, 어떤 활동을 수행하거나, 어떤 이벤트가 발생하기를 기다리는 엔터티 수명의 순간에 대한 설명입니다.
    협력
    (협동)
    특정 문제를 해결하는 과정에서 행위자, 개체 및 상호 작용의 일련의 인스턴스에 대한 설명

    (요소)
    일관된 인터페이스 세트의 구현을 제공하는 시스템 모듈을 포함한 시스템(파일)의 물리적 부분

    (상호 작용)

    i계산
    클래스나 구성 요소가 제공하는 서비스(서비스 집합)를 정의하는 작업 집합

    (마디)
    문제 해결을 위한 자원을 제공하는 시스템(컴퓨터, 프린터 등)의 물리적 부분
    그룹화
    (패키지)
    요소를 그룹화하는 일반적인 메커니즘입니다.
    구성 요소와 달리 패키지는 순전히 개념적(추상적) 개념입니다. 패키지의 특별한 경우는 시스템과 모델입니다.

    (파편)
    액터 인스턴스와 객체 간의 특정 상호 작용 영역

    (활동 분할)
    하나의 개체(액터, 객체, 컴포넌트, 노드 등)가 수행하는 작업 그룹(책임 영역)입니다.

    (중단 가능한 활동 영역)
    비정상적인 상황 발생으로 인해 정상적인 실행 순서가 중단될 수 있는 작업 그룹
    설명 메모
    (논평)
    요소에 대한 설명입니다. 점선으로 주석 처리된 요소에 첨부됩니다.

    일부 출처, 특히 [,]도 행동 개체를 식별합니다. 상호 작용그리고 유한 상태 기계, 그러나 논리적인 관점에서는 다이어그램으로 분류되어야 합니다.

    위의 엔터티 중 일부는 이를 암시합니다. 상세 설명분해 다이어그램에. 최상위 다이어그램에는 특별한 아이콘이나 라벨이 표시되어 있습니다.

    다음 표에는 모든 유형에 대한 설명이 나와 있습니다. 처지 다이어그램에서 엔터티 간의 관계를 나타내는 데 사용되는 UML입니다.

    표 11.3. 관계

    이름 지정 정의(의미론)
    협회 관계 설명 의미있는 연결둘 이상의 엔터티 사이. 최대 일반적인 형태관계
    집합 "부분"-"전체" 관계를 설명하는 연관의 하위 유형으로, "부분"이 "전체"와 별도로 존재할 수 있습니다. 마름모는 "전체" 측면에서 표시됩니다. 동일한 유형의 엔터티 간에만 관계가 지정됩니다.
    구성 "부분"이 "전체"와 별도로 존재할 수 없는 집합의 하위 유형입니다. 원칙적으로 "부분"은 "전체"와 동시에 생성되고 파괴됩니다.
    의존 한 엔터티(독립 엔터티)의 변경이 다른 엔터티(종속 엔터티)의 상태나 동작에 영향을 미칠 수 있는 두 엔터티 간의 관계입니다. 화살표 쪽은 독립된 개체를 나타냅니다.
    일반화 일반화된 개체(조상, 부모)와 특수 개체(자손, 딸) 간의 관계입니다. 삼각형은 상위 측에서 표시됩니다. 동일한 유형의 엔터티 간에만 관계가 지정됩니다.
    실현 한 엔터티가 다른 엔터티가 수행하는 작업을 지정하는 엔터티 간의 관계입니다. 관계는 인터페이스와 클래스(또는 구성 요소) 간, 사용 사례와 협업 간의 두 가지 경우에 사용됩니다. 화살표 쪽은 작업(인터페이스 또는 사용 사례)을 정의하는 엔터티를 나타냅니다.

    연결의 경우 집계 및 구성을 지정할 수 있습니다. 다수 (eng. 다중성), 관계에 참여하는 엔터티의 총 인스턴스 수를 특성화합니다. 일반적으로 해당 엔터티 근처의 관계 양쪽에 표시됩니다. 다중도는 다음과 같은 방법으로 표시될 수 있습니다.

    - * – 복사본이 없는 경우를 포함하여 원하는 수의 복사본;

    음수가 아닌 정수 – 다중도는 엄격하게 고정되어 있으며 지정된 숫자와 같습니다(예: 1, 2 또는 5).

    음수가 아닌 정수의 범위 "첫 번째 숫자.. 두 번째 숫자"(예: 1..5, 2..10 또는 0..5)

    특정 초기 값부터 임의의 최종 "첫 번째 숫자.. *"까지의 숫자 범위(예: 1..*, 5..* 또는 0..*)

    음수가 아닌 정수 및 범위를 쉼표로 구분하여 나열합니다(예: 1, 3..5, 10, 15..*).

    다중성을 지정하지 않으면 해당 값은 1로 간주됩니다. 종속성, 일반화 및 구현에 참여하는 엔터티 인스턴스의 다중성은 항상 1로 가정됩니다.

    다음 표에서는 설명을 제공합니다. 확장 메커니즘 , 엔터티와 관계의 의미를 명확히 하는 데 사용됩니다. 일반적으로 확장 메커니즘은 괄호나 따옴표로 묶인 텍스트 문자열입니다.

    표 11.4. 확장 메커니즘

    이름 지정 정의(의미론)
    스테레오
    (스테레오)
    « » 표기법 요소의 의미를 지정하는 지정(예: "include" 스테레오타입이 있는 종속성은 포함 관계로 간주되고 "경계" 스테레오타입이 있는 클래스는 경계 클래스입니다)
    가드 상태
    (가드 조건)
    부울 조건(예: 또는 [식별 완료])
    한정
    (강제)
    { } 모델 요소의 의미를 제한하는 규칙(예: (실행 시간 10ms 미만))
    플래그가 지정된 값
    (태그된 값)
    { } 표기 요소의 새롭거나 명확한 속성(예: (버전 = 3.2))

    따옴표 안에 텍스트 문자열로 표시된 스테레오타입 외에도 그래픽 스테레오타입을 다이어그램에 사용할 수 있습니다. 다음 그림은 표준 및 스테레오타입 디스플레이의 예를 보여줍니다.

    a) 표준 명칭 b) 표준 명칭
    텍스트 고정관념이 있는
    c) 그래픽 고정관념

    쌀. 11.2. 표준적이고 전형적인 수업 표시의 예

    도표 개발된 내용의 일부 측면을 표시하기 위해 표기 요소 그룹을 나타냅니다. 정보 시스템. 다이어그램은 일반적으로 엔터티가 정점이고 관계가 호인 연결된 그래프입니다. 다음 표는 에 대한 간략한 설명 UML 다이어그램.

    표 11.5. 다이어그램

    도표 목적
    물리적 구현 정도에 따라 역학을 표시하여 표시된 측면별

    (사용 사례)
    시스템 기능, 액터와 기능 간의 상호 작용을 표시합니다. 논리적 공전 기능의

    (수업)
    클래스, 인터페이스 및 이들 간의 관계 집합을 표시합니다. 논리적 또는
    물리적
    공전 기능적 및 정보적

    (패키지)
    패키지 세트와 패키지 간의 관계를 표시합니다. 논리적 또는
    물리적
    공전 요소
    행동
    (행동)

    (상태 머신)
    엔터티의 상태와 수명 주기 동안 엔터티 간의 전환을 표시합니다. 논리적 동적 행동

    (활동)
    시스템 내 비즈니스 프로세스 표시(행동 알고리즘 설명)
    상호작용
    (상호 작용)

    (순서)
    객체와 행위자 사이에 전달되는 메시지의 순서를 표시합니다.

    (의사소통)
    시퀀스 다이어그램과 유사하지만 객체 간의 상호 작용 구조에 중점을 둡니다.
    구현
    (구현)

    (요소)
    시스템 구성 요소(프로그램, 라이브러리, 테이블 등) 및 이들 간의 연결을 표시합니다. 물리적 공전 요소

    (전개)
    네트워크 노드의 구성요소 배치와 해당 구성을 표시합니다.

    UML 2.x 표준은 또한 고도로 전문화된 추가 다이어그램을 정의합니다.

    객체 다이어그램 - 유사하지만 클래스 대신 객체가 표시됩니다.

    타이밍 다이어그램 - 시간 경과에 따른 객체의 상태를 설명합니다.

    복합 구조 다이어그램 - 다른 클래스와의 상호 작용을 위한 클래스의 포트(인터페이스 포함)를 설명합니다.

    프로필 다이어그램 - 포함된 클래스에 대한 설명과 유사합니다.

    상호 작용 개요 다이어그램 - 유사하지만 숨겨진 상호 작용 조각(ref 레이블이 붙은 조각)이 있습니다. 별도의 분해 다이어그램에 요소가 지정되는 상황별(개념적) 항목을 나타냅니다.

    시스템의 내부 아키텍처에 대한 개념적 표현을 확장하기 위해 대부분의 구성에서는 소위 말하는 그래픽 고정관념을 사용할 수 있습니다. 이러한 다이어그램을 1이라고 부르지만 UML 표준에서 정의한 다이어그램 목록에는 속하지 않습니다.

    별도의 시스템 모델을 개발할 때 여러 유형의 다이어그램이 작성됩니다. 또한 복잡한 시스템의 모델을 개발할 때 일반적으로 동일한 유형의 여러 다이어그램이 구성됩니다. 동시에 필요하지 않은 경우 별도의 유형의 차트를 만들 필요가 없습니다. 예를 들어 다이어그램은 상호 교환이 가능하며 동작이 복잡한 객체용으로만 만들어졌습니다. 다음 표에서는 시스템 모델에 대한 다이어그램을 개발(명확화)해야 할 필요성에 대한 권장 사항을 제공합니다.

    표 11.6. 모델과 다이어그램의 관계

    아래 표에는 테스트 모델이 나와 있지 않습니다. 왜냐하면 구성의 일부로 다이어그램이 개발되지는 않지만 완전성과 일관성이 확인(테스트)되기 때문입니다.

    구성 후 일부 다이어그램은 다음 모델 개발의 일부로 개발 및 설명이 필요합니다( 기술적 과정). 따라서 예를 들어 개발 중에 이를 명확히 해야 합니다. 모델에서.

    4. 개념 " "을 정의하십시오.