SRS added

malte.horst 2021-11-04 17:53:17 +01:00
parent f1ad5748ae
commit 7913b736ce
3 changed files with 67 additions and 400 deletions

@ -49,453 +49,120 @@ For the file extraction it should be possible to choose between the versions 2.1
_Figure 1 UC Diagram_
## 2.1. <UC.001> Create new device <a name="UC1"/>
## 2.1. <UC.001> Create new device <a name="UC1"/>
|Use Cases Objective:|Creating a device by inserting the data manually into the user interface|
|System Boundary:|Modelling Wizard for Devices|
|Precondition:|The user needs to have the minimal required data for the device|
|Postcondition on success:|The relevant data is displayed completely and correctly|
|Involved Users:|Every user of the application|
|Triggering Event:|When the user has the need to add a device|
|Use Case's Objective:|User wants to create a device by inserting the data manually into the user interface of the application|
|---|---|
|System Boundary:|The application itself|
|Precondition:|The user needs to have the minimal required data for the device on hand.
The program needs to be installed on the user system and opened.|
|Postcondition on success:|The entered data is displayed completely and correctly|
|Involved Users:|Every end-user of the application|
|Triggering Event:|When the user opens the application and uses the 'New device' function to create a new device|
## 2.2. <UC.002> “Create interface or load interface from Library” <a name="UC3"/>
## 2.2. <UC.002> Create interface or load interface from Library <a name="UC3"/>
|Use Cases Objective:|Creating a device interface by inserting the data manually into the user interface. Or to add an interface from one of the existing libraries|
|System Boundary:|Modelling Wizard for Devices|
|Precondition:|The user needs to have the specific data for the device|
|Use Case's Objective:|Creating a device interface by inserting the data manually into the user interface. Or to add an interface from one of the existing libraries|
|---|---|
|System Boundary:|The application itself|
|Precondition:|The user needs to have the minimal required data for the device or interface to be added|
|Postcondition on success:|The user has submitted the specific data completely and correctly|
|Involved Users:|Each user of the AutomationML-Editor-Application with the Modelling Wizard for Devices Plugin|
|Triggering Event:|When the user has the need to add a device interface|
|Involved Users:|Every end-user of the application|
|Triggering Event:|When the user has the need to add/create a device interface|
## 2.3. <UC.003> View device data and device interface data <a name="UC4"/>
## 2.3. <UC.003> View device data and device interface data <a name="UC4"/>
|Use Cases Objective:|After at least one device was successfully added, the device data should be visible and editable on the user interface|
|System Boundary:|Modelling Wizard for Devices Plugin|
|Precondition:|The user added a device|
|Use Case's Objective:|After at least one device was successfully added, the device data should be visible and editable on the user interface|
|---|---|
|System Boundary:|The application itself|
|Precondition:|The user added or loaded a device|
|Postcondition on success:|The user added at least one device successfully|
|Involved Users:|Each user of the AutomationML-Editor-Application with the Modelling Wizard for Devices Plugin|
|Involved Users:|Every end-user of the application|
|Triggering Event:|When the user has the need to view device data and device interface data|
## 2.4. <UC.004> “Reloading and editing an AML device description” <a name="UC5"/>
|Use Cases Objective:|Reloading a device to display and edit the device data on the user interface|
|System Boundary:|Modelling Wizard for Devices Plugin|
|Precondition:|There is an AMLX-package to reload|
|Postcondition on success:|The AMLX-package is correct and complete and not damaged in any way|
|Involved Users:|Each user of the AutomationML-Editor-Application with the Modelling Wizard for Devices Plugin|
|Triggering Event:|When the user has the need to edit an AML device description|
## 2.5. <UC.005> “Add Attachments for the Device” <a name="UC6"/>
## 2.4. <UC.004> Add Attachments for the Device <a name="UC6"/>
|Use Cases Objective:|It is possible to add an Attachment to the object, such as a Manufacture Icon|
|System Boundary:|Modelling Wizard for Devices Plugin|
|Use Case's Objective:|It is possible to add an attachment to the object, such as a manufacturer's icon|
|---|---|
|System Boundary:|The application itself|
|Precondition:|The user has loaded or added a device|
|Postcondition on success:|The user has loaded or added at least one device successfully|
|Involved Users:|Each user of the AutomationML-Editor-Application with the Modelling Wizard for Devices Plugin|
|Triggering Event:|When the user has the need to add an Attach-ment on the Device|
|Involved Users:|Every end-user of the application|
|Triggering Event:|When the user has the need to edit device data and add attachments such as icons.|
## 2.6. <UC.006> “Format output as CAEX version 3.0” <a name="UC7"/>
## 2.5. <UC.005> Format output as CAEX version 2.15/3.0 <a name="UC7"/>
|Use Cases Objective:|It is possible to output the file in CAEX 3.0|
|System Boundary:|Modelling Wizard for Devices Plugin|
|Use Case's Objective:|Make the export to CAEX formats possible for devices|
|---|---|
|System Boundary:|The application itself|
|Precondition:|The user has loaded or added a device|
|Postcondition on success:|The user has loaded or added at least one device successfully|
|Involved Users:|Each user of the AutomationML-Editor-Application with the Modelling Wizard for Devices Plugin|
|Triggering Event:|When the user has the need to output the file in a newer or older version of CAEX|
|Involved Users:|Every end-user of the application|
|Triggering Event:|When the user wants to save a device in the CAEX format|
# 3. Non-functional Requirements <a name="NF"/>
In this chapter, the non-functional requirements are described and illustrated with figures.
# 3. Features <a name="LF"/>
In this chapter, the definable features are described and illustrated with figures.
## 3.1. /NF10/ Overview <a name="NF1"/>
The entire space should be used to display the work area more clearly.
As shown in Figure 2, the area highlighted with a red cross should also be used.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97447737-26805000-1930-11eb-8432-53e111255cac.png"/>
## 3.1. /LF10/ Import <a name="LF1"/>
_Figure 2 NF10_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117690300-fc4efb00-b1ba-11eb-9397-56b48221e2c7.png"/>
The application should be able to import a file by the absolute path to the file
_Figure 3 NF10_2_ </td>
</tr>
</tbody>
</table>
## 3.2 /LF20/ File validation <a name="LF2"/>
## 3.2. /NF20/ Load Attributes <a name="NF2"/>
When a file is loaded the attributes of the element should be displayed directly.
As you can see in Figure 4, the attributes are not displayed directly and you would have to press 2 clicks to display them.
The system shall be able to detect wrongly formatted imported files and throw an error to the user.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97448183-a9090f80-1930-11eb-8324-a3ad96ee80aa.png"/>
_Figure 4 NF20_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117690023-aa0dda00-b1ba-11eb-85be-7696fd4dcf6a.png"/>
## 3.3 /LF30/ Error handling <a name="LF3"/>
_Figure 5 NF20_2_ </td>
</tr>
</tbody>
</table>
The system shall be able to handle errors (unexpected shut down, wrongly formatted files, ...)
and throw an error to the user.
## 3.4 /LF40/ GUI <a name="LF4"/>
## 3.3. /NF30/ Application Load Toolbar <a name="NF3"/>
When you open the application for the first time, the right toolbar should not be on the right side as shown in Figure 4. It should be directly visible in the interface.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97448497-000ee480-1931-11eb-9a9b-ca0a2596a89c.png"/>
The system should display a graphical user interface after startup. The user will interact with this GUI for every other functionality of the application.
_Figure 6 NF30_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117690300-fc4efb00-b1ba-11eb-9397-56b48221e2c7.png"/>
_Figure 7 NF30_2_ </td>
</tr>
</tbody>
</table>
## 3.5 /LF50/ Display device in a readable way <a name="LF5"/>
## 3.4. /NF40/Application Load Window Sizing <a name="NF4"/>
When you start the application for the first time, it will be displayed very small, see Figure 8, but it should be displayed in full screen mode.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97448911-6e53a700-1931-11eb-86e4-b5e664c82480.png"/>
When a device is loaded or created the attributes of the element should be displayed directly and easily readable for the user.
_Figure 8 NF40_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117690300-fc4efb00-b1ba-11eb-9397-56b48221e2c7.png"/>
_Figure 9 NF40_2_ </td>
</tr>
</tbody>
</table>
## 3.6 /LF60/ Edit device <a name="LF6"/>
## 3.5. /NF50/Rename Documents <a name="NF5"/>
The tab Documents from Figure 10 should be renamed to Attachments for better understanding.
When the attributes of a loaded device are displayed to the user, the user should be able to edit every attribute he wants to change.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97450103-a4ddf180-1932-11eb-9121-b59f4bf12890.png"/>
_Figure 10 NF50_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117691541-4e445080-b1bc-11eb-9220-a90adf9a7610.png"/>
## 3.7 /LF70/ Create device <a name="LF7"/>
_Figure 11 NF50_2_ </td>
</tr>
</tbody>
</table>
When the application is started, the user should be able to create a new and empty device model.
## 3.6. /NF60/Resizable Rows <a name="NF6"/>
The size of the fields can be adjusted in height, which is unnecessary because line breaks are not possible.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97450803-67c62f00-1933-11eb-9071-42f998c19975.png" alt="imageNF50_1"/>
## 3.8 /LF80/ Export device <a name="LF8"/>
_Figure 12 NF60_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117629695-b6724280-b17a-11eb-88fd-75c7695d4f1c.png" alt="imageNF50_2"/>
When the user has edited a device, he should be able to save the device to a file.
_Figure 13 NF60_2_ </td>
</tr>
</tbody>
</table>
# 4. Product data <a name="LD"/>
## 4.1 /LD10/ AML-DD <a name="LD1"/>
## 3.7. /NF70/Header Overview <a name="NF7"/>
An unnecessary grey field is displayed in the Header tab. This should be removed.
The system shall create a valid AML-DD with all the necessary information the original file contained. Including an AML root file complete with versioning header, a "SystemUnitClass" with logical description, identification and configuration parameters as well as a reference to the original file and pictures if there are any.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97452349-eec7d700-1934-11eb-9220-adef4c45c89c.png" alt="imageNF50_1"/>
## 4.1 /LD20/ Save and load files <a name="LD2"/>
_Figure 14 NF70_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117691960-c9a60200-b1bc-11eb-9704-17eec8fdb0ac.png" alt="imageNF50_2"/>
_Figure 15 NF70_2_ </td>
</tr>
</tbody>
</table>
## 3.8. /NF80/Design of the Buttons <a name="NF8"/>
In general, buttons are very difficult to recognize as such and do not have a uniform style.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97452448-0b640f00-1935-11eb-8938-0fa6bc727e8c.png" alt="imageNF50_1"/>
<img src="https://user-images.githubusercontent.com/72601495/97452429-069f5b00-1935-11eb-85e2-5954cc6d3364.png" alt="imageNF50_1"/>
_Figure 16 NF80_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117692596-76807f00-b1bd-11eb-989a-2687afe372e7.png" alt="imageNF50_2"/>
<img src="https://user-images.githubusercontent.com/72601495/117692680-8dbf6c80-b1bd-11eb-8a6b-5055f95b2823.png" alt="imageNF50_2"/>
_Figure 17 NF80_2_ </td>
</tr>
</tbody>
</table>
## 3.9. /NF90/Design of the Tabs <a name="NF9"/>
As shown in Figure 18, tabs are displayed differently and are not delimited by edges. This should be made uniform.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97452607-34849f80-1935-11eb-9b35-88aa0de7552b.png" alt="imageNF50_1"/>
_Figure 18 NF90_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117693349-3cfc4380-b1be-11eb-9227-4c693d774c16.png" alt="imageNF50_2"/>
_Figure 19 NF90_2_ </td>
</tr>
</tbody>
</table>
## 3.10. /NF100/Code Quality <a name="NF10"/>
The code quality of the previous project should be improved.[[1](#1)]
# 4. Functional Requirements <a name="F"/>
In this chapter, the functional requirements are described and illustrated with figures.
## 4.1. /F10/ Link to Manual <a name="F1"/>
The link under help/manual must be placed on a page that can be reached.
![image](https://user-images.githubusercontent.com/72601495/97452845-73b2f080-1935-11eb-9852-1de361b872ec.png)
_Figure 20 F10_
New Manual can be found [here](https://github.com/DekaAthlos/TINF19C-ModellingWizard/wiki/6.-User-Manual)
## 4.2. /F20/ Add Button at Interfaces <a name="F2"/>
The Add button, as in Figure 21 for the interface view, is not necessary. Interfaces should always be added to the AML file by default.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97452959-92b18280-1935-11eb-99d3-397917755ed5.png" alt="imageNF50_1"/>
_Figure 21 F20_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117694602-9f097880-b1bf-11eb-96cc-557fc0abca35.png" alt="imageNF50_2"/>
_Figure 22 F20_2_ </td>
</tr>
</tbody>
</table>
## 4.3. /F30/Mechanical and Hydraulic Interfaces <a name="F3"/>
For the interfaces, not only electrical interfaces, but also the other connectors and interfaces of AutomationMLComponentStandardRCL and AutomationML-ComponentBaseICL should be available, e.g. mechanical and hydraulic interfaces.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97453069-ad83f700-1935-11eb-96e2-66f6c15269f6.png"/>
_Figure 23 F30_1_
<img src="https://user-images.githubusercontent.com/72601495/97714866-fa94d400-1ac1-11eb-9a56-8aba7ee370f8.png" width="350" height="350"/>
<img src="https://user-images.githubusercontent.com/72601495/97714766-dafdab80-1ac1-11eb-9633-d439861f656f.png" width="350" height="350"/>
_Figure 24 F30_2_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117695155-38d12580-b1c0-11eb-86bc-fe8d91c0e255.png" width="350" height="350"/>
<img src="https://user-images.githubusercontent.com/72601495/117695246-530b0380-b1c0-11eb-971c-f397d5862942.png" width="350" height="350"/>
_Figure 25 F30_3_ </td>
</tr>
</tbody>
</table>
## 4.4. /F40/CAEX 3.0 Output <a name="F5"/>
The output format CAEX 3.0 should be implemented.
## 4.5. /F50/Parameter Requirements <a name="F6"/>
As shown in Figure 26, other mandatory attributes should be highlighted in red. These are those required by the minimum rules for AML-DDs.
The following attributes are mandatory:
Manufacturer,
ManufacturerURI,
Model,
DeviceClass,
ProductCode
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97453561-27b47b80-1936-11eb-898e-177d127d86fb.png" alt="imageNF50_1"/>
_Figure 26 F50_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117695998-1ee41280-b1c1-11eb-9169-344f5b5dbcc7.png" alt="imageNF50_2"/>
_Figure 27 F50_2_ </td>
</tr>
</tbody>
</table>
## 4.6. /F60/Delete Empty Fields <a name="F7"/>
Newly added empty fields remain even though they are empty and can be collected. This should be prevented.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97453641-38fd8800-1936-11eb-9825-4019033c5f43.png" alt="imageNF50_1"/>
_Figure 28 F60_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117696515-ad589400-b1c1-11eb-971e-51db95ebca75.png" alt="imageNF50_2"/>
_Figure 29 F60_2_ </td>
</tr>
</tbody>
</table>
## 4.7. /F70/Delete Button <a name="F8"/>
The "Delete" button under Generic Data and Interfaces is currently not working. The function to remove elements should be implemented.
<table>
<tbody>
<tr>
<td>Old Version</td>
<td>
<img src="https://user-images.githubusercontent.com/72601495/97453741-516da280-1936-11eb-9e01-a09a6ec24a39.png" alt="imageNF50_1"/>
_Figure 30 F70_1_ </td>
</tr>
<tr>
<td>New Version</td>
<td><img src="https://user-images.githubusercontent.com/72601495/117696515-ad589400-b1c1-11eb-971e-51db95ebca75.png" alt="imageNF50_2"/>
_Figure 31 F70_2_ </td>
</tr>
</tbody>
</table>
## 4.8. /F80/ Testability of AML device <a name="F9"/>
A created AML device should be validated by the AML Component Checker.[[2](#2)]
# 5. Bug Fixes <a name="B"/>
[/BUG10/Generic Information Exception](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/5) <a name="B1"/>
[/BUG20/Electrical Interfaces Exception](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/6) <a name="B2"/>
[/BUG30/Generic Information Table Exception](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/7) <a name="B3"/>
[/BUG40/Nonfunctional Requirement NF20](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/14) <a name="B4"/>
[/BUG50/Vendor Name replaced with path](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/28) <a name="B5"/>
[/BUG60/Mandatory attributes are checked to late](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/30) <a name="B6"/>
[/BUG70/Open new file clears to early](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/31) <a name="B7"/>
[/BUG80/Changes names on old files](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/34) <a name="B8"/>
[/BUG90/Explorer opening is not consistent](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/35) <a name="B9"/>
[/BUG100/Loading libraries deletes to early](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/36) <a name="B10"/>
[/BUG110/Saves empty files](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/44) <a name="B11"/>
[/BUG120/Deletes all non amlx files](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/43) <a name="B12"/>
[/BUG130/Saving clears added "Role Class Libaries"](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/46) <a name="B13"/>
# 6. Enhancements <a name ="Enhancements"/>
[/EH10/Error message when file does not load](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/42) <a name="EH10"/>
[/EH20/Open attributes as default](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/41) <a name="EH20"/>
[/EH30/Import/Open foreign files](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/45) <a name="EH30"/>
[/EH40/Only show libraries when they can be used](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/40) <a name="EH40"/>
[/EH50/Standard library position change](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/39) <a name="EH50"/>
[/EH60/"Save" or "Save and Close File" Button](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/38) <a name="EH60"/>
[/EH70/Check for valid URL in ManufacturerURL field](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/37) <a name="EH70"/>
[/EH80/Dropdown buttons](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/33) <a name="EH80"/>
[/EH90/New version number](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/32) <a name="EH90"/>
[/EH100/Redundant save buttons](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/29) <a name="EH100"/>
[/EH110/Re-design AMLX File Structure](https://github.com/DekaAthlos/TINF19C-ModellingWizard/issues/63) <a name="EH110"/>
The system shall make a device description editable. For this, the user can load existing or create new devices within the interface of the application. After editing them, these descriptions can be saved to a location selected by the user.
# 7. References <a name="Ref"/>
[1] https://github.com/Rajkumarpulaparthi/ModellingWizard <a name="1"/>
[2] https://amlcc.tarakos.de/Identity/Account/Login?ReturnUrl=%2F <a name="2"/>
[here] https://github.com/DekaAthlos/TINF19C-ModellingWizard/wiki/6.-User-Manual <a name="here"/>
Author: Timo Zaoral
# 8. Glossary <a name="gloss"/>
__AML__ Automation Markup Language is an open standard data format for storing and exchanging plant planning data
__AML DD__ AML Device Description
__AMLX__ AML Package
__CAEX__ Computer-Aided Engineering Exchange
__CLI__ Command Line Interface
__GUI__ Graphical User Interface
__IODD__ Input/Output Device Description