{"id":2411,"date":"2021-09-03T17:07:40","date_gmt":"2021-09-03T14:07:40","guid":{"rendered":"https:\/\/besoftwares.com\/en\/?p=2411"},"modified":"2024-01-24T18:10:33","modified_gmt":"2024-01-24T15:10:33","slug":"building-software-a-construction-process","status":"publish","type":"post","link":"https:\/\/besoftwares.com\/en\/building-software-a-construction-process\/","title":{"rendered":"Building Software: A Construction Process"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2411\" class=\"elementor elementor-2411\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0b0b926 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0b0b926\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07493f8\" data-id=\"07493f8\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-49c0c88 elementor-widget elementor-widget-wp-widget-text\" data-id=\"49c0c88\" data-element_type=\"widget\" data-widget_type=\"wp-widget-text.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t<div class=\"textwidget\"><h1><strong>Building Software: A Construction Process<\/strong><\/h1>\n<p>Creating software is straightforward. Whether it&#8217;s a website or a mobile application, the key is in how it&#8217;s constructed. Similar to building a house or a laptop, software is a product that needs to meet certain construction techniques. Developing a web page or a mobile application involves several steps, leading to a technically and design-wise correct product without compromising client needs.<\/p>\n<h1><strong>1. Initial Mandatory Requirements:<\/strong><\/h1>\n<h2><strong>A. Product Owner and Stakeholders<\/strong><\/h2>\n<ul>\n<li>Create the &#8220;As is&#8221; process map;<\/li>\n<li>Map the flow\/process to observe, understand, and eliminate wasted time (e.g., waiting time for approval, reporting, for security reasons);<\/li>\n<li>Review and adjust the &#8220;As is&#8221; process map based on changes and process standardization;<\/li>\n<li>Create the &#8220;To be&#8221; process map.<\/li>\n<\/ul>\n<h1><strong>B. Planning<\/strong><\/h1>\n<h2><strong>B.1. Project Kick-off &amp; Sprint 0<\/strong><\/h2>\n<p>(Scrum Master, Product Owner, stakeholders, and\/or end-users)<\/p>\n<ul>\n<li>Provide a project summary and create a project breakdown;<\/li>\n<li>Define technologies and non-functional tasks;<\/li>\n<li>Define the development process, elaborate on functional parts (MVP), and prioritize them.<\/li>\n<\/ul>\n<h2><strong>B.2. Product Owner, Stakeholders, and\/or End-User<\/strong><\/h2>\n<ul>\n<li>Create a list of requirements based on the &#8220;To be&#8221; process map;<\/li>\n<li>Ensure each requirement meets INVEST criteria;<\/li>\n<li>Define a &#8220;Done&#8221; definition for each requirement;<\/li>\n<li>Create the product backlog;<\/li>\n<li>Allocate points to each requirement to prioritize them (from high value to low value);<\/li>\n<li>Use the template &#8220;As a (user) I want (feature) so that (business benefits)&#8221; to have enough details to convert each requirement into a User Story;<\/li>\n<li>Based on priorities, create the project details map (Backbones, Walking Skeletons, and the user stories list using the MoSCoW approach).<\/li>\n<\/ul>\n<h1><strong>2. Development and Testing (at Sprint Level)<\/strong><\/h1>\n<h2><strong>A. Product Owner and Development Team &#8211; Sprint Planning<\/strong><\/h2>\n<ul>\n<li>Based on project details, prioritize user specifications to be included in the first Sprints &#8211; considering high-value and high-risk user stories;<\/li>\n<li>Product owner should have all details about user specifications to be included in the next Sprint (step-by-step workflow &#8211; work instructions &#8211; with screenshots and all relevant details) to support the development team;<\/li>\n<li>Before each Sprint Planning session, the Product Owner (and Scrum Master) fine-tune the Backlog.<\/li>\n<\/ul>\n<h2><strong>B. Scrum Master and Development Team &#8211; Daily Scrum<\/strong><\/h2>\n<ul>\n<li>Discuss progress, encountered impediments, and what will be done\/next steps.<\/li>\n<\/ul>\n<h2><strong>C. Product Owner, Development Team, Stakeholders, and\/or End-User &#8211; Sprint Review<\/strong><\/h2>\n<ul>\n<li>Demonstrate\/Test the product\/MVP developed during the sprint;<\/li>\n<li>Use the feedback received from stakeholders and\/or end-users to reprioritize the backlog (optional);<\/li>\n<li>Confirm the increase &#8211; if user deposits made during the sprint can be considered &#8220;Done&#8221;.<\/li>\n<\/ul>\n<h2><strong>D. Development Team and Scrum Master &#8211; Sprint Retrospective<\/strong><\/h2>\n<ul>\n<li>Discuss gained experiences and improvement areas.<\/li>\n<\/ul>\n<p><strong>Note:<\/strong><\/p>\n<ul>\n<li>After 3 Sprints, the cadence and WIP can be defined so the Scrum Master can estimate, based on the team&#8217;s velocity chart, the deadline for completing the product;<\/li>\n<li>Create a cumulative flow diagram to monitor work time vs. cycle time (as an improvement area);<\/li>\n<li>The Product Owner can cancel a Sprint only if necessary &#8211; in this case, the Sprint goal is modified;<\/li>\n<li>The Product Owner should always have all the project details from the current Sprint. Otherwise, a face-to-face discussion between the Product Owner or developer and the end-user will take place to understand project details;<\/li>\n<li>The Product Owner ensures that the product backlog is updated correctly.<\/li>\n<\/ul>\n<h1><strong>3. Integration<\/strong><\/h1>\n<p><strong>A. Development Team<\/strong><\/p>\n<ul>\n<li>Test project details integration and fix errors.<\/li>\n<\/ul>\n<h1><strong>4. UAT \u2013 User Acceptance Test<\/strong><\/h1>\n<h2><strong>A. Product Owner, End-User, and Development Team<\/strong><\/h2>\n<p>The end-user and\/or Product Owner evaluate project details, test the product, and send confirmation to the development team.<\/p>\n<h1><strong>5. Implementation<\/strong><\/h1>\n<h2><strong>A. Product Owner, End-User, and Development Team<\/strong><\/h2>\n<p>Instructions about the project sent to the client.<\/p>\n<p><strong>Note:<\/strong><\/p>\n<ul>\n<li>Project details: &#8220;Done&#8221; means developed, documented, and tested;<\/li>\n<li>Releases: &#8220;Done&#8221; means no major defects or change requests remain;<\/li>\n<li>Final project deliverables: prioritized features implemented (equivalent to two sprints without errors, meeting the end-user satisfaction score).<\/li>\n<\/ul>\n<p><strong>Legend:<\/strong><\/p>\n<p>As is = moment T0<br \/>\nTo be = moment T1<br \/>\nDone = completed<br \/>\nBacklog<br \/>\nWork time = measures the time from when the client requests the project until they receive the deliverable<br \/>\nCycle time = measures the time the development team works to fulfill what the client requested<\/p>\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e4ce58b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e4ce58b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9f4e789\" data-id=\"9f4e789\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5a96ae4 elementor-widget elementor-widget-image\" data-id=\"5a96ae4\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"878\" src=\"https:\/\/besoftwares.com\/en\/wp-content\/uploads\/2021\/09\/Agile-Map-1024x878.png\" class=\"attachment-large size-large wp-image-2404\" alt=\"\" srcset=\"https:\/\/besoftwares.com\/en\/wp-content\/uploads\/2021\/09\/Agile-Map-1024x878.png 1024w, https:\/\/besoftwares.com\/en\/wp-content\/uploads\/2021\/09\/Agile-Map-300x257.png 300w, https:\/\/besoftwares.com\/en\/wp-content\/uploads\/2021\/09\/Agile-Map-768x658.png 768w, https:\/\/besoftwares.com\/en\/wp-content\/uploads\/2021\/09\/Agile-Map-1536x1317.png 1536w, https:\/\/besoftwares.com\/en\/wp-content\/uploads\/2021\/09\/Agile-Map-2048x1756.png 2048w, https:\/\/besoftwares.com\/en\/wp-content\/uploads\/2021\/09\/Agile-Map-857x735.png 857w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":2422,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[24,38,36,43,25],"class_list":["post-2411","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-agile-methodology","tag-mobile-development","tag-scrum","tag-software","tag-web-dev"],"_links":{"self":[{"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/posts\/2411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/comments?post=2411"}],"version-history":[{"count":32,"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/posts\/2411\/revisions"}],"predecessor-version":[{"id":4317,"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/posts\/2411\/revisions\/4317"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/media\/2422"}],"wp:attachment":[{"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/media?parent=2411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/categories?post=2411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/besoftwares.com\/en\/wp-json\/wp\/v2\/tags?post=2411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}