Форум Сообщества Аналитиков

×


Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - [прилетело НЛО и...]

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 »
1
По личным причинам я покидаю здешнее сообщество. Пребывание здесь было... не однозначным. Получен уникальный опыт, как принято говорить.
Если можете, то простите.

2
Выпущен VP 17.2
https://www.visual-paradigm.com/whats-new/
обещают, что прокачали диаграммы деятельности, последовательности, размещения, состояний, компонентов и пакетов.
Будем посмотреть.

3
Мастера игры в Plantuml живут на Stackoverflow. Советы, которые размещены там:
- пробовать замену "вертикальных" связей (с одинарным "-" в начертании) на "горизонтальные" (с двойным "--"). Например A <|- B vs A <|-- B
- пробовать менять местами правую и левую части. Например A <|- B vs B -|> A
- переупорядочивать строки или фрагменты в Plantuml-описании
- добавлять невидимые связи ради желаемого расположения элементов, которые ими связаны
- добавлять невидимые промежуточные пункты ради желаемого расположения сегментов связей (связь становится как бы цепью из звеньев)

Где-то там живет такая ссылка с продвинутыми магическими пассами: https://isgb.otago.ac.nz/infosci/mark.george/Wiki/wiki/PlantUML%20GraphViz%20Layout

4
Обычно, обсуждая диаграммы, рассматривают языковые (uml-ьные) конструкции, а не "бантики" -- что слева, что справа.
Я эту рисовалку увидело и попробовало сегодня. С Вашей подачи.

Добавляете свои директивы для стиля и получаете орто-линии + слева-направные классы.

[Обще]Принято, что суперкласс слева от своих потомков. Или сверху над своими потомками.
===
@startuml
skinparam linetype ortho
left to right direction
class BaseViewModel {
  + event PropertyChangedEventHandler PropertyChanged
  # OnPropertyChanged([CallerMemberName] string PropertyName = null):void {abstract}
  # Set<T>(ref T field, T value, [CallerMemberName] string PropertyName = null):bool {abstract}
}

class MainViewModel {
  + MainViewModel()
}

class Entity1ViewModel {
  + Main(args: string[]): void
}

class Entity2ViewModel {
  + Main(args: string[]): void
}

class Entity3ViewModel {
  + Main(args: string[]): void
}


 BaseViewModel <|-- MainViewModel
 BaseViewModel <|-- Entity1ViewModel
 BaseViewModel <|-- Entity2ViewModel
 BaseViewModel <|-- Entity3ViewModel

 Entity1ViewModel "_entity1ViewModel" <-- MainViewModel
 Entity2ViewModel "_entity2ViewModel" <-- MainViewModel
 Entity3ViewModel "_entity3ViewModel" <-- MainViewModel
@enduml
===

5
===
@startuml
[-> ParserWorker : Worker()
loop for i in parserSettings.StartPoint..parserSettings.EndPoint
  break isActive
  note over ParserWorker: выход из цикла
  end
  ParserWorker -> loader : GetSourceByPageId(i)
  loader --> ParserWorker : source
  create HtmlParser
  ParserWorker --> HtmlParser : new
  ParserWorker -> HtmlParser : ParseAsync(source)
  HtmlParser --> ParserWorker : document
  ParserWorker -> parser : Parse(document)
  parser --> ParserWorker : result
  opt OnNewData != NULL
   ParserWorker -> OnNewData : Invoke(this, result)
  end
end
opt OnCompleted != NULL
   ParserWorker -> OnCompleted : Invoke(this)
end
ParserWorker -> ParserWorker : isActive = FALSE
[<-- ParserWorker:return
@enduml
===

6
===
@startuml
class Program {
   {static}  + Main(args: string[]): void
}

class MoneyBack {
    + GetCardType(): string
    + GetCreditLimit(): int
    + GetAnnualCharge(): int
}


interface ICreditCard {
  + GetCardType(): string
  + GetCreditLimit(): int
  + GetAnnualCharge(): int
}

ICreditCard "cardDetails" <-- Program
ICreditCard <|.. MoneyBack
Program ..> MoneyBack
@enduml
===


7
Вопрос, вероятно, по стилю оформления диаграммы.
Что если...

===
@startuml
class BaseViewModel {
  + event PropertyChangedEventHandler PropertyChanged
  # OnPropertyChanged([CallerMemberName] string PropertyName = null):void {abstract}
  # Set<T>(ref T field, T value, [CallerMemberName] string PropertyName = null):bool {abstract}
}

class MainViewModel {
  + MainViewModel()
}

class Entity1ViewModel {
  + Main(args: string[]): void
}

class Entity2ViewModel {
  + Main(args: string[]): void
}

class Entity3ViewModel {
  + Main(args: string[]): void
}


 BaseViewModel <|-- MainViewModel
 BaseViewModel <|-- Entity1ViewModel
 BaseViewModel <|-- Entity2ViewModel
 BaseViewModel <|-- Entity3ViewModel

 Entity1ViewModel "_entity1ViewModel" <-- MainViewModel
 Entity2ViewModel "_entity2ViewModel" <-- MainViewModel
 Entity3ViewModel "_entity3ViewModel" <-- MainViewModel
@enduml
===


8
[Очередная попытка некротредить]
Попался материал забугорный, но тоже доставляющий в плане якобы математических обоснований.
http://arxiv.org/pdf/1304.0116
===
 В более общем случае предположим, что цель g может быть достигнута с помощью n объектов проектирования (D1, D2, ... Dn), каждый из которых обладает характеристиками (F1, F2, ... Fn). Тогда множество требований Rg можно определить как пересечение свойств (Rg = F1 ∩ F2 ∩ ... ∩ Fn).

===
Это почти то же самое, что знаменитое практически все люди, страдающие хроническими заболеваниями, ели огурцы. Что если все объекты Di ели огурцы обладают некоторым свойством, которое никакого отношения не имеет к достижению цели g? Будет ли оно требованием? По логике Паула Ральфа, будет.

9

Вот иллюстрация.
Деятельность Trib внутри себя содержит три рекурсивных вызова (3 узла действия вызова деятельности). Моделируется вычисление n-ого числа трибоначчи.

10
Стандарт языка не запрещает одноимённые деятельности.
EA не может строить догадки о том, что Вы моделируете.
PD аллертит из-за нарушения встроенных в него правил.

По [моей] идее, очень мало поводов рисовать именно деятельность на диаграмме деятельности. В описанном Вами случае на диаграмме деятельность одна и она выполняет роль рамки всей диаграммы. Это описываемая процедура.
Вызываемая подпрограмма как деятельность на диаграмме не присутствует. Присутствуют её вызовы -- узлы действия, Action Node.
Написанное выше не является требованием стандарта. Это что-то вроде перевода написанного Вами в термины UML.

11
С первым куском кода не всё ОК. Имя cardDetails используется, но не описано.
На каждой приведённой диаграмме к интерфейсу от класса-реализации должно идти не обобщение (сплошная стрелка с треугольным выколотым наконечником), а реализация (пунктирная стрелка с треугольным выколотым наконечником).
Диаграммы на которых Program соединен с интерфейсом обобщением (сплошной стрелкой с треугольным выколотым наконечником) ошибочны, там должна быть ассоциация.
Статическая операция должна быть подчёркнута.
В UML в сигнатуре операции её имя предшествует типу возвращаемого значения.
Разумно нарисовать зависимость от Program к классу-реализации, т. к. он используется и его имя известно Program.

12
UML SysML и пр. / Re: Шутки и UML
« : 23 Февраля 2024, 03:10:02 »
А что-то ничего не отображается
Это хост временно лёг, на котором картинка лежит.(

13
UML SysML и пр. / Re: Шутки и UML
« : 30 Декабря 2023, 21:10:18 »

С наступающим!
UML-ёлочка вышла немного нестандартная. Это Visual Paradigm разрешает так складывать подарки под неё. В стандарте таким художествам нет места.

14
https://link.springer.com/content/pdf/10.1007/s10270-023-01105-5.pdf
Испанские исследователи натравили ChatGPT на решение учебных задачек по составлению UML-диаграмм. Оказалось, что ИИ часто генерит диаграмму, которую составители задачи не ожидали.
Глядя с Марсу, могу судить, что такое часто происходит даже в тех случаях, когда диаграмму выдумывает неискусственный разум.

15
[глубинного некробурения псто]

Незабвенный Алистер Кокбёрн рисовал подобное -- UCD с единственным UC "Юзать систему" -- и даже разъяснял, в каком случае это имеет смысл. Заводя такой UC, Кокбёрн в его сценарии прописывал, как увязываются между собой UC "уровня моря". Но морские UC всё равно рисовал и увязывал инклюдами и т. п. с облачным UC.

Фраза из условия: "Кроме того ... также процессы настройки и деинсталляции," -- даёт некоторые основания для "декомпозирования" UC или для рисования UCD с UC уровня цели пользователя.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 »