---
# System prepended metadata

title: DRAFT Aquicore Software Engineering Architectural Process

---

# DRAFT Aquicore Software Engineering Architectural Process

## Purpose
  Inside an epic, some stories may have many points because of complexity and lack of supporting patterns to complete the task.
  
  The purpose here is to detail how to introduce new software engineering patterns into Aquicore. 
  
## Steps

1. Check with leads to see if this architectural process should be followed.
2. Propose the technical problem
    * Detail why new pattern is needed.
        * Context
            * How did this problem come to be
        * Define the problem
            * Why should this problem be solved?
            * What time constraints exist
    * Create requirements for the design
        * e.g. 
            * Observable
            * Managable complexity
            * Scalable
            * Who does this problem affect
    * Invite engineering lead and SME to triad to review the proposal.
        * Any concerns of the problem context should be aired
            * What happens if the problem is not addressed
        * With majority concensus, proposal can proceed to Design
    * Proposal Documented
        * Context and Problem detailed in a Jira Spike
3. Design
    * SME should also be involved with the design.
    * Detail diagram(s) of new pattern
        * Relevant contracts or data structures between systems
        * Process flow for normal use case
        * Any synchronization cases supported
    * Detail challenges and opportunities
        * What are the benefits to this new pattern?
        * Are there any known drawbacks to this new pattern?
    * Review and get acceptance on design
        * What drawbacks or tech debt will this accrue?
        * What reference documentation is available?
            * Vendor or Open source technical documents
            * Other successful implementations of pattern
        * Is this something that can easily be reused?
            * What is the emphasis on reuse?
    * Design Review
        * Any concerns of the design should be aired
        * With Engineering Leadership approval, proposal can proceed to Implementation
4. Finalize
    * (optional) create reference implementation or Proof of Concept
    * Hold triad to review implementation
    * Store details into git



references:
https://www.mitre.org/publications/systems-engineering-guide/se-lifecycle-building-blocks/system-architecture/architectural-patterns
