Difference between revisions of "HowTo:Organize UBIK Development"
m (→An Epic for every topic) |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 16: | Line 16: | ||
Tickets can be managed with any Issue Tracking or Project Management system. | Tickets can be managed with any Issue Tracking or Project Management system. | ||
− | ==== An Epic for every | + | ==== An Epic for every work package==== |
− | The project should be segmented into Epics first. An Epic is a large work package corresponding to a topic or an abstract use-case. | + | The project should be segmented into Epics first. An Epic is a large work package corresponding to a topic or an abstract use-case, with a time-limited scope. |
For example, Operator Rounds (using the mobile application to do maintenance in a plant) are a classical use-case that can be managed with {{UBIK}}. | For example, Operator Rounds (using the mobile application to do maintenance in a plant) are a classical use-case that can be managed with {{UBIK}}. | ||
+ | However, for the sake of project management, it makes sense to make sure Epics have a limited temporal scope as well. This means that they should be doable within a short period in time. The benefit of this is that you can collect moments of success more frequently, and you can sell those to the customer, too. | ||
+ | For example, you could divide the Operator Rounds Epic into two stages, Operator Rounds I and Operator Rounds II. | ||
+ | Further, you can try to create elementary work packages that do not have any dependency in the middle, but only as a whole. This way you can avoid an Epic being blocked in the middle of its implementation, making it easier to deal with if it is blocked. Also, this proceeding allows you to model dependencies more clearly and plan accordingly. | ||
+ | |||
+ | [[Category:Best Practices (internal)|Organize UBIK Development]] | ||
+ | [[Category:How-To|Organize UBIK Development]] | ||
+ | [[Category:Resources (internal)|Organize UBIK Development]] | ||
==== A Feature for every requirement ==== | ==== A Feature for every requirement ==== | ||
A use-case consists of multiple Features, i.e., functional parts or requirements for that use-case. | A use-case consists of multiple Features, i.e., functional parts or requirements for that use-case. | ||
In the example of Operator Rounds, one such Feature could be the basic data model, or presentation of {{UBIK}} MRO work packages on the mobile client. | In the example of Operator Rounds, one such Feature could be the basic data model, or presentation of {{UBIK}} MRO work packages on the mobile client. | ||
+ | The main idea of a Feature is to create a work package on a level I can still discuss with the customer, because it is not too technical or detailed. | ||
+ | |||
+ | [[Category:Best Practices (internal)|Organize UBIK Development]] | ||
+ | [[Category:How-To|Organize UBIK Development]] | ||
+ | [[Category:Resources (internal)|Organize UBIK Development]] | ||
==== A User Story for every task group ==== | ==== A User Story for every task group ==== | ||
− | Every Feature consists of one or many User Stories | + | Every Feature consists of one or many User Stories. |
+ | A User Story is a task that can be implemented within one or two weeks (it can be split up in sub-tasks if necessary). | ||
+ | While this is the perfect scope for a project engineer to implement, it might be too technical to discuss with the customer, and that's okay, because we have the Feature for that. | ||
+ | |||
A User Story should be formulated using the following pattern: | A User Story should be formulated using the following pattern: | ||
"As a <user>, I want <requirement>, because <reason>." | "As a <user>, I want <requirement>, because <reason>." | ||
+ | This can be also reflected in the Feature ticket, mostly. | ||
− | + | For most features, we need to do several steps: | |
+ | * Find out the requirements | ||
+ | * Make a functional design (FD) | ||
+ | * Make a technical design (TD) | ||
+ | * Do the implementation and testing | ||
− | + | Hence, for the Feature "Presentation of MRO objects on the client", there could be multiple successive stories like: | |
+ | * Req/FD: MRO on the client | ||
+ | * TD: MRO on the client | ||
+ | * Impl.: ACM and Views for MRO on the client | ||
+ | * Impl.: Client UI customizing for work packages | ||
+ | All of them are rather technical, but all are necessary to implement the Feature. | ||
Every User Story requires a definition-of-done. Those are the acceptance criteria, which can be used to decide whether the Story was done or not. One of these acceptance criteria should always be the peer review, i.e., going over the results with a colleague to check for completeness and optimization on a constructive basis. | Every User Story requires a definition-of-done. Those are the acceptance criteria, which can be used to decide whether the Story was done or not. One of these acceptance criteria should always be the peer review, i.e., going over the results with a colleague to check for completeness and optimization on a constructive basis. | ||
Line 37: | Line 62: | ||
Only after review and acceptance with respect to the definition-of-done / acceptance criteria, should the User Story be considered finished. | Only after review and acceptance with respect to the definition-of-done / acceptance criteria, should the User Story be considered finished. | ||
+ | [[Category:Best Practices (internal)|Organize UBIK Development]] | ||
+ | [[Category:How-To|Organize UBIK Development]] | ||
+ | [[Category:Resources (internal)|Organize UBIK Development]] | ||
= Functional Spec & Effort Estimation = | = Functional Spec & Effort Estimation = | ||
Line 85: | Line 113: | ||
* Use-Cases: Provide an overview about the functional side of the project | * Use-Cases: Provide an overview about the functional side of the project | ||
* Data Model: Provide an overiew of the data model | * Data Model: Provide an overiew of the data model | ||
− | * | + | * Architecture: A big picture of the customizing architecture. |
+ | ** Top-level topology: E.g., are there multiple sites? What products and client applications are used? Are there interfaces to other systems? | ||
+ | ** Custom code: E.g., is there a plugin, and what does it do? Are any meta classes customized, and to do what? | ||
* Infrastructure: Servers, URLs, safe credentials storage (e.g., KeePass), etc. for the respective environment. | * Infrastructure: Servers, URLs, safe credentials storage (e.g., KeePass), etc. for the respective environment. | ||
** Development Environment: Infrastructure details about the dev environment. | ** Development Environment: Infrastructure details about the dev environment. | ||
** Integration Environment: Infrastructure details about the int environment. | ** Integration Environment: Infrastructure details about the int environment. | ||
** Production Environment: Infrastructure details about the prod environment. | ** Production Environment: Infrastructure details about the prod environment. | ||
− | + | ||
+ | |||
+ | |||
+ | |||
+ | |||
= Code Management = | = Code Management = | ||
Line 111: | Line 145: | ||
==See also== | ==See also== | ||
* [[HowTo:Transfer_Meta_Data_between_Environments]] | * [[HowTo:Transfer_Meta_Data_between_Environments]] | ||
+ | * [[HowTo:Design_a_Customizing]] | ||
[[Category:Best Practices (internal)|Organize UBIK Development]] | [[Category:Best Practices (internal)|Organize UBIK Development]] | ||
[[Category:How-To|Organize UBIK Development]] | [[Category:How-To|Organize UBIK Development]] | ||
[[Category:Resources (internal)|Organize UBIK Development]] | [[Category:Resources (internal)|Organize UBIK Development]] |
Latest revision as of 11:16, 13 November 2023
In this article, we aim to provide a guide and best practices for organizing the development of a UBIK® project.
We're going to assume that the customer's requirements were already collected and use-cases have been identified. These definitions are the basis for more detailed concepts to be developed throughout the project.
For customizing UBIK®, we recommend to use the following strategy.