ru diagram { /* line-style: sloppy 0.3; */ } controlflow { dash-style: 0; } Wallenc 1. Прецеденты 2. Анализ Предметной области 3. Архитектурный Дизайн Мобильное приложение uc Прецеденты Анализируйте функциональные требования, определив роли пользователей – акторов – и связав их с их прецедентами. (1.0, 0.0, 0.0, 1.0, 93.76953125, 79.1953125) (0.0, 0.0) 258.0 93.0 act Сценарии Прецедентов Моделируйте реализацию абстрактного прецедента, создав диаграммы деятельности, визуализирующие потоки действий для основных и второстепенных прецедентов. (1.0, 0.0, 0.0, 1.0, 58.0, 79.0) (0.0, 0.0) 364.0 95.0 cls Сущности Домена Выполняйте анализ предметной области путём моделирования доменных объектов и их связей с помощью упрощённой диаграммы классов. Эта диаграмма будет служить визуальным словарём понятий. Это также станет отправной точкой для модели данных уровня проектирования. (1.0, 0.0, 0.0, 1.0, 0.0, 58.30000000000007) (0.0, 0.0) 400.0 110.0 pkg Зависимости Пакета sd Взаимодействия Подготовьте диаграмму зависимостей пакетов, чтобы соответствующим образом сгруппировать классы реализации. Это поможет поддерживать хорошо структурированный код и избегать недостатков проектирования, таких как циклические зависимости или зависимости от нестабильных частей. (1.0, 0.0, 0.0, 1.0, 106.71484375, 51.49999999999997) (0.0, 0.0) 271.5703125 212.0 Model component interactions for use case scenarios in order to find out new methods in existing classes or even new classes with specific responsibilities. (1.0, 0.0, 0.0, 1.0, 43.0, 73.0) (0.0, 0.0) 322.0 93.0 cls Взаимосвязь пакетов (1.0, 0.0, 0.0, 1.0, 100.0, 100.0) (0.0, 0.0) 85.0 70.0 Domain cls Domain Диаграмма классов Data cls Data Диаграмма Классов (1.0, 0.0, 0.0, 1.0, -166.66017150878906, 7.74609375) (0.0, 0.0) 226.0 173.4 (1.0, 0.0, 0.0, 1.0, 171.25390625, 4.573046875000017) (-9.948932077648351, 0.0) 171.94893207764835 179.74609374999997 IStorage (1.0, 0.0, 0.0, 1.0, 590.5, 986.0) (0.0, 0.0) 374.0 244.0 0 1 + size: StateFlow<Integer[0..1]> 1 numberOfFiles StateFlow<Integer> IMetaInfo (1.0, 0.0, 0.0, 1.0, 560.95, 0.0) (0.0, 0.0) 297.09999999999997 168.0 0 0 1 size Integer 1 isDeleted Boolean 1 isHidden Boolean 1 lastModified DateTime 1 name StateFlow<String> IVault Хранилище, управляющее зашифрованными кошельками. Можеть быть как локальным, так и удалённым. (1.0, 0.0, 0.0, 1.0, 59.5, 1340.0) (0.0, 0.0) 506.0 210.0 0 0 1 uuid String createStorage in name String in key EncryptKey removeStorage Деятельность IStorageExplorer (1.0, 0.0, 0.0, 1.0, 583.5, 1340.0) (0.0, 0.0) 388.0 210.0 0 1 currentPath StateFlow<Uri> + getFilesStream(): Flow<DataPackage<IFile>> IFile (1.0, 0.0, 0.0, 1.0, 461.0, 286.5) (0.0, 0.0) 257.0 108.0 0 1 metaInfo IMetaInfo IDirectory (1.0, 0.0, 0.0, 1.0, 736.5, 278.0) (0.0, 0.0) 322.0 125.0 0 1 0 0 elementsCount Integer 1 1 1 metaInfo IMetaInfo + getDirsStream(): Flow<DataPackage<IDirectory>> 0 0 0 (1.0, 0.0, 0.0, 1.0, 1545.0190727547713, 182.35724811729017) [(-668.5590727547713, 220.64275188270983), (-705.8590727547713, 330.64275188270983)] changeDir in path Uri goUp goToRoot 1 path Uri IStorageAccessor (1.0, 0.0, 0.0, 1.0, 559.0, 513.0) (0.0, 0.0) 437.0 363.0 0 1 name String getAllFiles getAllDirs rename in newName String touchFile in path Uri touchDir in path Uri delete in path Uri openWrite return Stream in path Uri openRead return Stream in path Uri moveToTrash in path Uri 1 accessor IStorageAccessor 1 storage IStorage private in storage IStorage return IReadOnlyList<IFile> return IReadOnlyList<IDirectory> getFiles return IReadOnlyList<IFile> in path Uri getDirs return IReadOnlyList<IDirectory> in path Uri 1 isAvailable StateFlow<Boolean> 1 + filesUpdates: SharedFlow<DataPackage<IFile>> 1 + dirsUpdates: SharedFlow<DataPackage<IDirectory>> 0 0 0 (1.0, 0.0, 0.0, 1.0, 243.16039962225034, 245.31631894795726) [(374.8896003777496, 149.18368105204274), (437.8796003777496, 267.68368105204274)] 0 0 (1.0, 0.0, 0.0, 1.0, 797.1546434276883, 342.4519561875513) [(-19.654643427688256, 533.5480438124487), (-19.654643427688256, 643.5480438124487)] 1 1 composite 0 0 (1.0, 0.0, 0.0, 1.0, 203.10890581080406, 345.69270684881207) [(567.9510941891958, -177.69270684881207), (648.801094189196, -67.69270684881207)] shared 0 0 (1.0, 0.0, 0.0, 1.0, 138.30896896823918, 350.69522175455927) [(531.9010310317608, -182.69522175455927), (476.41103103176084, -64.19522175455927)] shared createStorage in name String in key EncryptKey in uuid UUID VaultType (1.0, 0.0, 0.0, 1.0, 225.5, 644.5) (0.0, 0.0) 174.0 100.0 0 0 Local Yandex 0 0 (1.0, 0.0, 0.0, 1.0, -109.95392950161418, 1061.2568399683112) [(422.4539295016142, -316.75683996831117), (422.4539295016142, -20.25683996831117)] IVaultsManager (1.0, 0.0, 0.0, 1.0, 87.5, 1660.0) (0.0, 0.0) 450.0 125.0 0 addYandexVault in email String in token String DataPage<List<T>> (1.0, 0.0, 0.0, 1.0, 1076.5, 282.0) (0.0, 0.0) 278.0 117.0 0 1 pageLength Integer 0 0 (1.0, 0.0, 0.0, 1.0, 810.8769280866725, 1115.1125252125555) [(-201.90692808667245, 114.88747478744449), (-353.4369280866725, 224.8874747874445)] composite 0 0 * * + getFilesStream(in path: Uri): Flow<DataPackage<IFile>> + getDirsStream(in path): Flow<DataPackage<IDirectory>> 1 isAvailable StateFlow<Boolean> localVault IVault 1 + remoteVaults: StateFlow<IReadOnlyList<IVault>> DataPackage<T> (1.0, 0.0, 0.0, 1.0, 1070.5, 17.0) (0.0, 0.0) 290.0 134.0 0 0 0 (1.0, 0.0, 0.0, 1.0, 1254.0690161527355, -112.28501339841085) [(-38.56901615273546, 394.28501339841085), (-38.56901615273546, 263.28501339841085)] 1 data T 1 pageNumber Integer 1 0 0 isLoading Boolean 1 1 1 0 0 isError Boolean 1 1 0 0 (1.0, 0.0, 0.0, 1.0, 956.5727755485931, 1132.134334488268) [(-179.07277554859309, 97.865665511732), (-179.07277554859309, 207.865665511732)] createStorage return IStorage in name String return IStorage return IStorage 1 isEncrypted Boolean IStorageUnlockManager - uuid to opened storage (1.0, 0.0, 0.0, 1.0, 990.0, 1382.5) (0.0, 0.0) 409.0 125.0 0 0 0 (1.0, 0.0, 0.0, 1.0, -159.4625174399573, 1222.4829062905674) [(1088.1025174399574, 7.517093709432629), (1276.9625174399573, 160.01709370943263)] GetAllRawStoragesUseCase (1.0, 0.0, 0.0, 1.0, 0.0, 1895.0) (0.0, 0.0) 295.0 66.0 0 0 0 0 (1.0, 0.0, 0.0, 1.0, 552.0090583921045, 1954.4598112542567) [(-289.6890583921045, -169.4598112542567), (-378.2590583921045, -59.45981125425669)] 0 0 (1.0, 0.0, 0.0, 1.0, 1328.1356031213516, 1393.2212077158106) [(-1015.6356031213516, 156.77879228418942), (-1015.6356031213516, 266.7787922841894)] EncryptKey (1.0, 0.0, 0.0, 1.0, 1379.0, 38.5) (0.0, 0.0) 109.0 91.0 0 Key String Close return Boolean in uuid String Open return 0 0 IStorage 1 1 in uuid String in key EncryptKey + OpenedStorages: StateFlow<Map<String, IStorage>> 0 0 0 (1.0, 0.0, 0.0, 1.0, 76.1644392789674, 1603.616666567455) [(286.5155607210326, 181.383333432545), (375.0855607210326, 291.383333432545)] (1.0, 0.0, 0.0, 1.0, 313.5, 1895.0) (0.0, 0.0) 328.0 66.0 0 GetLocalVaultUseCase storages: StateFlow<List<IStorage>> 1 localVault StateFlow<IVault> IVaultInfo (1.0, 0.0, 0.0, 1.0, 135.0, 1041.0) (0.0, 0.0) 355.0 168.0 0 0 0 0 (1.0, 0.0, 0.0, 1.0, 29.099681659149553, 1343.3520695479824) [(283.40031834085045, -3.35206954798241), (283.40031834085045, -134.3520695479824)] 1 type VaultType 1 uuid String 1 + storages: StateFlow<List<IStorage>> 1 isAvailable StateFlow<Boolean> 0 0 hasNext Boolean 1 1 + totalSpace: StateFlow<Integer[0..1]> + availableSpace: StateFlow<Integer[0..1]>