Requirements recommendations

Requirements management practices address the problem of creeping requirements, a situation in which the client requests additional changes to the product that are beyond the scope of what was originally planned. To guard against this common occurrence, requirements management employs such strategies as documentation of requirements, sign-offs, and methodologies, such as the use case:

  • Whenever possible, document the list of requirements that will be implemented in the solution. The requirements may be in the form of user stories with acceptance criteria.
  • Be prepared for and plan for requirements changes. Usually, because the flexibility and rapid development offered by the  platform, the initial requirements will change over the life cycle of the solution development.
  • Reserve time to review and elaborate on user stories.
  • Ensure that user stories have acceptance criteria.
  • If possible, employ a quality assurance (QA) resource to verify that acceptance criteria are indeed met.
  • Evolve QA test cases with the evolution of the requirements.

This topic includes the following recommendations for designing workflows:

Design workflows with low coupling and high cohesion

Coupling is a measure of how the components are interrelated and cohesion is the degree to which the functions performed by a workflow belong together. To achieve low coupling, ensure that changes to any component of a workflow do not affect the other components in that workflow. For example, isolate  adapter functions from compute or translation functions in the workflow. This ensures that a change to the type or functionality of the  adapter would not affect the rest of the workflow. To achieve high cohesion, ensure that a workflow is designed to perform only one function or many similar functions. This helps in isolating errors and making the workflow modular.

Build reusable code

By default, having loose coupling and high cohesion results in reusable workflow code, which is code that is not tied to one specific data source or that contains functions that are not related. Additionally, produce workflow components that perform only one specific function that can be reused at several different points in the workflow.

Use incremental development

The development of workflows in incremental stages helps maintain a focus on manageable tasks and ensures that earlier stages are successful before you attempt developing the later stages.

Employ quality control

Use quality control practices as a strategy that defines objective measures for assessing quality throughout the development process in terms of the solution's functionality, reliability, and performance.

Employ change control

Employ a change control strategy that closely monitors changes throughout the iterative process to ensure that records are intact for changes that have been made and that unacceptable changes are not undertaken. This strategy guards against catastrophic failures of the development environment or the need to roll back changes in requirements that turned out to be unnecessary or the result of flawed logic.

Define well-thought-out interfaces

Workflows in a solution usually interact with many different external systems. Well-defined interfaces promote loose coupling, making your workflows easier to change and maintain. Following are the goals of a good design interface:

  • If possible, add an index field for auditing and identification.
  • If the access type is asynchronous, pass only the essential data required to access additional data synchronously.
  • Use meaningful field names.
  • Standardize or simplify data before passing.
  • Simplify data structures whenever possible.
  • Add metadata for validation whenever possible.

Use a test-driven development approach

The following steps are an adaptation of Test Driven Development (TDD) methodology, which are presented as a sequence of steps that make up the development method.

  1. Add a test.
  2. Run all tests and see if the new one fails.
  3. Write some code.
  4. Run the automated tests and verify their success.
  5. Refactor the code.
  6. Repeat.

Stress test early and often

Make it a practice to perform continuous stress testing. Continuous stress testing ensures that you are aware of how your solution would perform under various levels of load.  is an excellent platform for orchestrating the actions of many independent application systems through the use of its library of call adapters.  uses incoming events and messages or outgoing instructions and commands. Stress testing exposes many race conditions and situations where messages might be delayed or dropped because the receiving or sending workflow component cannot respond in a timely manner.

Was this page helpful? Yes No Submitting... Thank you

Comments