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, 724.0, 986.0) (0.0, 0.0) 374.0 227.0 0 1 size StateFlow<Integer> 1 numberOfFiles StateFlow<Integer> IMetaInfo (1.0, 0.0, 0.0, 1.0, 762.45, 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> IEncryptedVault Хранилище, управляющее зашифрованными кошельками. Можеть быть как локальным, так и удалённым. (1.0, 0.0, 0.0, 1.0, 156.5, 1331.5) (0.0, 0.0) 439.0 193.0 0 1 uuid String EncryptKey (1.0, 0.0, 0.0, 1.0, 192.5, 1045.5) (0.0, 0.0) 417.0 108.0 EncryptKey in hashedKey String EncryptKey in password String in numOfHashes Integer 1 hashedKey String createStorage in name String in key EncryptKey 0 0 (1.0, 0.0, 0.0, 1.0, -133.3514760558922, 694.9345509958349) [(530.2814760558922, 458.5654490041651), (516.6814760558922, 636.5654490041651)] removeStorage IUseCase (1.0, 0.0, 0.0, 1.0, 613.5, 1391.0) (0.0, 0.0) 157.0 74.0 0 0 0 ManageLocalStoragesUseCase (1.0, 0.0, 0.0, 1.0, 349.5, 1878.0) (0.0, 0.0) 349.0 108.0 0 0 0 (1.0, 0.0, 0.0, 1.0, 1237.7376951267042, -136.8144539826019) [(-554.3376951267043, 1601.814453982602), (-587.7376951267042, 1742.814453982602), (-587.7376951267042, 1941.814453982602), (-660.2976951267042, 2014.814453982602)] Деятельность getAll return List<IStorage> createStorage in name String in key EncryptKey removeStorage in storage IStorage IStorageExplorer (1.0, 0.0, 0.0, 1.0, 789.0, 1323.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, 628.5, 286.5) (0.0, 0.0) 257.0 108.0 0 1 metaInfo IMetaInfo IDirectory (1.0, 0.0, 0.0, 1.0, 904.0, 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) [(-507.0190727547713, 220.64275188270983), (-554.8890727547713, 330.64275188270983)] changeDir in path Uri goUp goToRoot 1 path Uri IStorageAccessor (1.0, 0.0, 0.0, 1.0, 692.5, 513.0) (0.0, 0.0) 437.0 363.0 0 1 name String getAllFiles getAllDirs 1 + totalSpace: StateFlow<Integer[0..1]> rename in newName String 1 + availableSpace: StateFlow<Integer[0..1]> touchFile in path Uri touchDir in path Uri delete in path Uri getFileInfo in path Uri getDirInfo 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) [(537.2296003777496, 149.18368105204274), (588.8196003777497, 267.68368105204274)] 0 0 (1.0, 0.0, 0.0, 1.0, 797.1546434276883, 342.4519561875513) [(113.84535657231174, 533.5480438124487), (113.84535657231174, 643.5480438124487)] 0 0 (1.0, 0.0, 0.0, 1.0, 203.10890581080406, 345.69270684881207) [(758.321094189196, -177.69270684881207), (824.5910941891959, -67.69270684881207)] shared 0 0 (1.0, 0.0, 0.0, 1.0, 138.30896896823918, 350.69522175455927) [(722.2610310317609, -182.69522175455927), (651.0510310317609, -64.19522175455927)] shared createStorage in name String in key EncryptKey in uuid String VaultType (1.0, 0.0, 0.0, 1.0, 0.0, 1049.5) (0.0, 0.0) 174.0 100.0 0 0 Local YandexRestApi 1 type VaultType 0 0 (1.0, 0.0, 0.0, 1.0, -109.95392950161418, 1061.2568399683112) [(239.0639295016142, 88.24316003168883), (292.9539295016142, 151.74316003168883), (399.6139295016142, 270.24316003168883)] IVaultManager (1.0, 0.0, 0.0, 1.0, 169.0, 1643.0) (0.0, 0.0) 450.0 125.0 0 addYandexVault in email String in token String 0 0 (1.0, 0.0, 0.0, 1.0, -3.937961831953544, 1265.191054009214) [(386.2079618319535, 259.308945990786), (393.91796183195356, 377.808945990786)] 0 0 (1.0, 0.0, 0.0, 1.0, 76.1644392789674, 1603.616666567455) [(353.7055607210326, 164.383333432545), (416.93556072103263, 274.383333432545)] ExploreStorageUseCase (1.0, 0.0, 0.0, 1.0, 746.0, 1668.5) (0.0, 0.0) 338.0 74.0 invoke return IStorageExplorer in storage IStorage 0 0 (1.0, 0.0, 0.0, 1.0, 170.73279888914223, 1639.1926984920697) [(550.6472011108577, -174.19269849206967), (714.8172011108577, 29.307301507930333)] 0 0 (1.0, 0.0, 0.0, 1.0, 167.51053522145116, 1885.7765431223293) [(789.7794647785488, -352.77654312232926), (756.4394647785489, -217.27654312232926)] DataPage<List<T>> (1.0, 0.0, 0.0, 1.0, 1244.0, 290.5) (0.0, 0.0) 278.0 100.0 0 1 pageLength Integer 0 0 (1.0, 0.0, 0.0, 1.0, 810.8769280866725, 1115.1125252125555) [(-84.74692808667248, 97.88747478744449), (-277.5869280866725, 216.3874747874445)] composite 0 0 * * 1 uuid String + getFilesStream(in path: Uri): Flow<DataPackage<IFile>> + getDirsStream(in path): Flow<DataPackage<IDirectory>> 1 storages: StateFlow<List<IStorage>> 1 isAvailable StateFlow<Boolean> 1 isAvailable StateFlow<Boolean> localVault StateFlow<IEncryptedVault> remoteVaults: StateFlow<IReadOnlyList<IEncryptedVault>> DataPackage<T> (1.0, 0.0, 0.0, 1.0, 1238.0, 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) [(128.93098384726454, 402.78501339841085), (128.93098384726454, 263.28501339841085)] 1 data T 1 0 0 hasNext Boolean 1 1 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, 959.5327755485932, 1132.134334488268) [(-23.65277554859324, 80.865665511732), (0.45722445140677337, 190.865665511732)]