Skip to content
jensjager edited this page Oct 21, 2024 · 13 revisions

Iteration 1: Requirements Engineering and DSL Design (2 weeks, total hours estimate: 50h)

Goal:

The goal of this iteration is to gather and refine all necessary functional and non-functional requirements and start creating the Domain-Specific Language (DSL) for BPMN semantics.

Activities:

  1. Requirement Elicitation:

    • Conduct meetings and discussions with the client to gather both functional and non-functional requirements for BPMN DSL.
    • Review existing solutions and documentation.
  2. Documenting Functional Requirements:

    • Document functional requirements as user stories, which include creating, managing, and representing BPMN elements in a human-readable format (start/end events, tasks, gateways, etc.).
    • Group these requirements under the general feature of BPMN diagram management.
  3. Non-Functional Requirements:

    • Document performance, scalability, and error-handling requirements.
    • Define memory, processing time, and output format requirements for handling diagrams with large node counts.
  4. DSL Design:

    • Define the syntax and semantics for representing BPMN elements in a text-based DSL.elements).
    • Ensure the DSL is human-readable and captures all the necessary BPMN elements for the upcoming parser implementation.
  5. Scope and Prioritization:

    • Prioritize the functional requirements based on importance and technical feasibility.
    • Finalize the scope of features to be implemented in iterations 2.

Deliverables:

  • Functional requirements document (user stories and detailed use cases).
  • Non-functional requirements document.
  • Scope and prioritization document.

Iteration 2: Complete Use Case Specification, Implementation of Core Features (3 weeks, total time)

Goal:

The main goals of this iteration are (i) to implement the core functionality for creating and managing BPMN diagrams, and (ii) to complete the use case specifications.

User Stories / Use Cases to Implement:

  1. Support defining BPMN elements using a human-readable language
  2. Diagram Generation from Parsed Input

Tasks (based on the use case specifications of the two aforementioned use cases):

  1. Implement Parser as a No-Std Rust Crate and Compile to WebAssembly

    • This is crucial as it sets up the environment and ensures that the parser can run in a web browser, which is foundational for the project.
  2. Handle Invalid or Malicious Input Without Crashing

    • Ensuring robustness against invalid input is essential to create a reliable parser that doesn't crash during unexpected conditions.
  3. Ensure Compatibility with BPMN 2.0 and External Tools

    • Compatibility with BPMN 2.0 is critical to ensure that the parser can accurately interpret existing BPMN diagrams and integrate well with other tools.
  4. Export BPMN Diagrams in XML Format

    • Being able to export BPMN diagrams is a core functionality that many users will expect, and it lays the groundwork for further features like import and visualization.
  5. Implement Data Objects and Data Stores

    • This feature is important for representing data in BPMN diagrams, which enhances the richness of the modeling capabilities of the parser.

Testing:

  • Conduct unit and integration testing for both Create and View BPMN Diagram functionality.

Deliverables:

  • Test reports for both functionalities.

Iteration 3: Implementation of Most of the Functionality (3 weeks)

Goal:

Implement the core modification and parsing functionalities for BPMN diagrams.

User Stories / Use Cases to Implement:

  • Modify BPMN Diagrams: Implement the ability to modify BPMN diagrams after creation.
  • Implement new DSL: Support defining BPMN elements using a human-readable language.

Tasks:

  • Implement task, event, and gateway parsing as part of the core DSL parser.
  • Refine parsing rules to handle nested structures and complex flows.
  • Add error handling for invalid BPMN syntax in DSL definitions.
  • Validate parsed BPMN definitions against BPMN 2.0 rules.
  • Conduct unit testing for all parser functionalities.

Testing:

  • Conduct unit and integration testing for parsing BPMN diagrams, tasks, events, and gateways.

Deliverables:

  • Parser functionality for tasks, events, and exclusive gateways.
  • Unit test results for the core parser functions.

Iteration 4: Final Features and Cleanup (3 weeks)

Goal:

Finalize all remaining BPMN features, clean up code, and prepare for final testing and documentation.

User Stories / Use Cases to Implement:

  • Complex BPMN Parsing: Implement support for complex BPMN elements, including subprocesses, nested tasks, and multi-instance tasks.
  • BPMN XML Generation: Finalize the BPMN XML generation from the intermediate representation.
  • Error Handling: Improve error feedback for invalid BPMN flows and provide clear user feedback.

Tasks:

  • Finalize the parser for complex BPMN elements (subprocesses, multi-instance tasks).
  • Implement final error handling improvements.
  • Finalize BPMN XML generation and ensure it conforms to BPMN 2.0 standards.
  • Prepare final documentation for developers and users.

Testing:

  • Conduct final integration tests across all BPMN elements and flows.
  • Validate BPMN XML generation and ensure compatibility with BPMN standards.

Deliverables:

  • Complete BPMN parser with support for all essential elements.
  • Generated BPMN XML output with layout annotations.
  • Final project documentation and user guide.

Clone this wiki locally