Software Development Model for Product feature delivery

Dynamic and iterative approach to delivering product features in a rapid and flexible manner

<size:24>All components and relationships</size> <size:24>Every component across all focus areas</size>All components and relationshipsEvery component across all focus areasSoftware Development Model for Product feature delivery[system]Software Architecture and Domain-Driven Design[container]Extreme Programming[container]Lean Product Development[container]Align and Understand Product Requirements[container]Behavior-Driven Development[container]StrategicArchitecture[Core Domain Charts, ContextMaps, etc] Decompose a large problemdomain into cohesivemodules, so that we canidentify strategicallysignificant parts of thedomainSoftware Design[Bounded Context Canvas,Aggregate Design Canvas, C4model, etc] Document BoundedContexts, from naming toresponsibilities alongside itspublic interface anddependenciesCode the DomainModel[Services, Repositories, Events,etc] Code the Domain Modelapplying Tactical Patterns -a set of building blocks tostructure theimplementation of themodelPair Programming[Ensemble, Mob Programming] Developers work together inpairs and as a group,reviewing the code inreal-time and improving thedesign continuouslyTest-DrivenDevelopment[JUnit, etc] Lower-level examples of thebehavior of internal systemcomponentsContinuousIntegration[Jenkins, Github Actions, etc] Automated build scripts areused to run tests andprovide immediatefeedback to developersabout the status of theircode changesInformativeWorkspaces[Scrum and Kanban boards,DORA/SAFE metrics etc] Project progress andpotential issues are visibleto all team members withinformative workspacesShort Iterations[one to two week developmentcycles] Short development cyclesdeliver incremental valueand enable continuouslearning about the productKnowledge Base[Google Drive, Confluence,Javadoc] Centralized repository ofinformation and bestpractices that the team canrefer to for guidance,problem-solving, andknowledge sharingCustomer Feedback[customer satisfaction surveys,gather customer insights, etc] Continuously collectcustomer feedback and useit to refine and enhance thedesign of products andfeaturesProduct Brief[Opportunity Canvas, Slideck,etc] Short product or featurebrief to frame and constrainthe projectDomain Discovery[User Story Map, EventStorming, etc] Map the Big Picture bydescribing the User journeythrough the Product tellinga story from the perspectiveof the end userProduct Backlog[Jira, Trello, etc] Prioritised list of UserStories that need to becompleted or addressedduring the projectSpecificationWorkshop[Example Mapping] Concrete rules andexamples help us explorethe problem domain toclarify and confirm theacceptance criteriaFeatures[Gherkin] Group of related scenariosthat demostrates how afeature worksAcceptance Tests[Cucumber] Executable specificationsthat verify the behavior ofthe system against itsrequirementsDomain Expert Product Team member whoowns and drives theproduct visionSoftware Engineer Development Teammember deliveringhigh-quality softwareefficiently and iterativelypresents ProductFeatureobtains domainknowledgespread domainknowledgecreatescollaborativerequirementspecificationproblemdecompositionformulateautomateguides codeimplementationcollaborativemodellingapply tacticalpatternsguides codeimplementationwrite just enoughcodepush code to versioncontroldeliver productincrementvisualize progress onupdatesgathers
All components and relationships
Every component across all focus areas