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, 701.5, 986.0)
(0.0, 0.0)
374.0
168.0
0
0
1
+ size: StateFlow<Integer[0..1]>
1
numberOfFiles
StateFlow<Integer>
IMetaInfo
(1.0, 0.0, 0.0, 1.0, 671.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, 179.5, 1264.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, 983.5, 1584.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, 572.0, 286.5)
(0.0, 0.0)
257.0
108.0
0
1
metaInfo
IMetaInfo
IDirectory
(1.0, 0.0, 0.0, 1.0, 847.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)
[(-557.5590727547713, 220.64275188270983), (-594.8590727547713, 330.64275188270983)]
changeDir
in
path
Uri
goUp
goToRoot
1
path
Uri
IStorageAccessor
(1.0, 0.0, 0.0, 1.0, 670.0, 513.0)
(0.0, 0.0)
437.0
363.0
0
1
name
String
getAllFiles
getAllDirs
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
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)
[(485.8896003777496, 149.18368105204274), (548.8796003777496, 267.68368105204274)]
0
0
(1.0, 0.0, 0.0, 1.0, 797.1546434276883, 342.4519561875513)
[(91.34535657231174, 533.5480438124487), (91.34535657231174, 643.5480438124487)]
1
1
composite
0
0
(1.0, 0.0, 0.0, 1.0, 203.10890581080406, 345.69270684881207)
[(678.9510941891958, -177.69270684881207), (759.801094189196, -67.69270684881207)]
shared
0
0
(1.0, 0.0, 0.0, 1.0, 138.30896896823918, 350.69522175455927)
[(642.9010310317608, -182.69522175455927), (587.4110310317608, -64.19522175455927)]
shared
createStorage
in
name
String
in
key
EncryptKey
in
uuid
UUID
VaultType
(1.0, 0.0, 0.0, 1.0, 345.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)
[(542.4539295016142, -316.75683996831117), (542.4539295016142, -75.25683996831117)]
IVaultsManager
(1.0, 0.0, 0.0, 1.0, 87.5, 1626.5)
(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, 1187.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)
[(-50.30692808667243, 38.88747478744449), (-217.9869280866725, 148.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, 1181.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)
[(72.43098384726454, 394.28501339841085), (72.43098384726454, 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)
[(86.62722445140696, 21.865665511732004), (220.92722445140691, 94.865665511732), (220.92722445140691, 378.865665511732), (220.92722445140691, 451.865665511732)]
createStorage
return
IStorage
in
name
String
return
IStorage
return
IStorage
1
isEncrypted
Boolean
IUnlockManager
- uuid to opened storage
(1.0, 0.0, 0.0, 1.0, 556.0, 1626.5)
(0.0, 0.0)
409.0
125.0
0
0
0
(1.0, 0.0, 0.0, 1.0, -154.21251743995725, 1222.4829062905674)
[(966.1925174399573, -68.48290629056737), (904.9625174399573, 4.517093709432629), (904.9625174399573, 288.51709370943263), (909.4625174399573, 404.01709370943263)]
GetAllRawStoragesUseCase
(1.0, 0.0, 0.0, 1.0, 0.0, 1904.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)
[(-280.92905839210454, -202.9598112542567), (-382.7990583921045, -50.45981125425669)]
0
0
(1.0, 0.0, 0.0, 1.0, 1328.1356031213516, 1393.2212077158106)
[(-934.9256031213515, 80.77879228418942), (-992.3756031213516, 233.27879228418942)]
EncryptKey
(1.0, 0.0, 0.0, 1.0, 1490.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)
[(277.7555607210326, 147.883333432545), (379.6255607210326, 300.383333432545)]
(1.0, 0.0, 0.0, 1.0, 313.5, 1904.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, 255.0, 986.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)
[(403.40031834085045, -79.35206954798241), (403.40031834085045, -189.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]>
IStorageAccessorsManager
(1.0, 0.0, 0.0, 1.0, 774.0, 1323.5)
(0.0, 0.0)
375.0
91.0
0
getAccessor
return
IStorageAccessor
in
storage
IStorage
0
0
(1.0, 0.0, 0.0, 1.0, 1121.3345834473034, 1106.9626146481362)
[(-188.20458344730343, 307.5373853518638), (-321.7345834473034, 519.5373853518638)]
0
0
(1.0, 0.0, 0.0, 1.0, 1222.2798748487307, 1189.6352612530745)
[(-313.3498748487308, -35.63526125307453), (-271.8198748487307, 133.86473874692547)]
0
0
(1.0, 0.0, 0.0, 1.0, 1131.3345834473034, 1116.9626146481362)
[(-139.34458344730342, 297.5373853518638), (-24.73458344730352, 467.0373853518638)]