Software Development Process https://tigosoftware.com/ en How to Use Value Stream Mapping to Improve Your Software Development Process https://tigosoftware.com/how-use-value-stream-mapping-improve-your-software-development-process <span class="field field--name-title field--type-string field--label-hidden">How to Use Value Stream Mapping to Improve Your Software Development Process</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">admin</a></span> <span class="field field--name-created field--type-created field--label-hidden">Fri, 12/16/2022 - 23:54</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h2 id="what-is-value-stream-mapping">What Is Value Stream Mapping?</h2> <p><a data-wpel-link="external" href="https://www.atlassian.com/continuous-delivery/principles/value-stream-mapping" rel="noreferrer noopener nofollow" target="_blank">Atlassian</a> provides the following value stream mapping definition:</p> <figure><blockquote> <p>“VSM is a lean manufacturing technique to analyze, design, and manage the flow of materials and information required to bring a product to a customer.”</p> </blockquote> </figure><p><strong>Let’s break down this definition a bit further by looking at its key components.</strong></p> <ul><li><strong>Value</strong>: both an objective and subjective assessment of an output that the customers receive from your software product.</li> <li><strong>Waste</strong>: anything that doesn’t add value to the final product.</li> <li><strong>A value stream</strong> is a series of steps towards delivering value to the end customer. In software development, that’s the cumulative path from idea to the final product.</li> </ul><p>Although initially developed for manufacturing, VSM can be easily adapted to the product flow in software development. In case with the latter, VSM you can use VSM to optimize the process of delivering the final product to the customer. It structures the development process life cycle starting with information input (ideas from customers, support, competitor analysis) and moving to product output (end customer). At that, the customer’s value needs are the motivation that guides the process.</p> <p>Adhering to this life cycle, the central idea of VSM is to optimize the whole development process. So that it utilizes the least amount of resources (cost, time, and human) to satisfy the customer’s value needs. The goal is to deliver a high-quality product to the customer. VSM enables the company to reach this goal as fast as possible. Jayne Groll, CEO of DevOps Institute for Deloitte, says that VSM is an excellent tool for determining how long will it take to deliver value and what the quality, associated with value creation would be.</p> <h2 id="how-to-optimize-software-development-using-vsm"><strong>How to Optimize Software Development Using VSM</strong></h2> <p>As we mentioned earlier, VSM is a great means for identifying bottlenecks and locating improvement opportunities within the software development life cycle. Also, it helps improve cross-team communications by reducing the levels of confusion, happening when the task passes through different development stages.</p> <p>So how do you make all of the above happen? By following the next 5 steps of value stream mapping.</p> <h3 id="step-1-learn-first"><strong>Step 1. Learn First</strong></h3> <p>When creating a value stream map, the first task is to understand the value stream mapping symbols. Just like iconography in web design, they condense complex information into easy-to-understand pictograms.</p> <figure><img alt="VSM Step 1" data-entity-type="file" data-entity-uuid="8b3422d0-28be-472c-916b-6200709add41" src="/sites/default/files/inline-images/VSM_step1.jpg" /></figure><p>VSM symbols are standart. But you don’t need to use every symbol available, but rather repurpose them for your specific objectives.</p> <h3 id="step-2-create-a-current-state-map"><strong>Step 2. Create a Current State Map</strong></h3> <p>Your next step is to create a current state map, which will define how the work is being done at the moment. The current state map visualizes each step and identifies the time necessary to complete it, as well as the time between the steps. This way, you can determine which steps add value, plus locate and eliminate those resulting in waste.</p> <p>Here is a quick value stream mapping template. There are three major areas that provide the most important information:</p> <ol><li>The upper third of the map is dedicated to <strong>Information Flow</strong>. It explains the communication and transmission of the information from the supplier (i.e. project stakeholder that provides information input) to your team and, by the end of the development life cycle, to the customer (product output).</li> <li>The middle part showcases <strong>Product Flow</strong>, which recreates the step-by-step software development life cycle from generating an idea of releasing it to the end customer.</li> <li>Finally, the <strong>Time Ladder</strong> provides a visual representation of production (added value) vs waiting (added waste) time.</li> </ol><figure><img alt="Step 2. Create a Current State Map" data-entity-type="file" data-entity-uuid="9dffdfda-2c1a-45fa-a69e-53a25308c30d" src="/sites/default/files/inline-images/VSM_step2.jpg" /></figure><p>Value stream mapping helps you optimize and save time, which is your most valuable asset. The following software metrics will help:</p> <ul><li>Cycle time (C/T) represents the amount of time needed to complete a task.</li> <li>Setup Time (S/T) is the necessary preparation time for an operation or process.</li> <li>Uptime (%) is the percentage of time a process or system is active.</li> <li>Lead Time sets the completion time for the entire operation/process.</li> </ul><p>The current state value stream map is a great visualization tool to see which steps add value to the final product – timewise. For a software enterprise, development is usually the most value-adding step of the process. QA/QC also adds value even though indirectly: it increases the final product’s quality. On the other hand, funding approval is sometimes considered wasteful and can be shortened to improve the time flow of the entire process.</p> <h3 id="step-3-make-room-for-kaizen-bursts"><strong>Step 3. Make Room for Kaizen Bursts</strong></h3> <p>Managers often use VSM to resolve bottleneck issues. When there is an unresolved challenge, Kaizen Bursts are implemented to find a realistic solution. Kaizen Bursts are one-time team-focused activities, planned as a part of the improvement strategy. Their goal is to deal with a single pressing task. While building a current stream map is about planning, the idea behind Kaizen Bursts is to let the team focus on finding a solution during a short period of time (usually 3-5 days).</p> <p>A typical Kaizen Burst includes a series of standard activities. You should start with the current state, clearly identify the problem area, brainstorm for opportunities to improve, then implement and refine them, and, finally, train all the employees who will be affected by the changes.</p> <h3 id="step-4-identify-and-eliminate-waste-areas"><strong>Step 4. Identify and Eliminate Waste Areas</strong></h3> <p>Once your current stream map is ready, you can start looking into the waste areas. The goal is to make your software development more effective by reducing or completely eliminating the steps that add waste to the process.</p> <figure><img alt="Step 4. Identify and Eliminate Waste Areas" data-entity-type="file" data-entity-uuid="4bed8c00-c27c-4db0-aa2a-d6caadc35201" src="/sites/default/files/inline-images/Wastesjpg.jpg" /></figure><p>There are seven major waste areas that lean value stream mapping can help optimize:</p> <ul><li>Partially completed work happens due to insufficient specification or automated testing, resulting in the need to complete updates and fill in gaps.</li> <li>Extra features that the customers did not ask for and will not see or use are a common result of speculation.</li> <li>Relearning is the result of lacking documentation on previously resolved issues. Unfamiliar, unnecessary tech for the established workflow is another case of wasting time on relearning.</li> <li>Handoffs happen when roles change. For example, when the project owners change, a new team member appears without the proper context knowledge, etc. Most miscommunication happens among the team due to poor management or changing priorities.</li> <li>Delays are longer wait times due to project dependencies when upstream decision-making restrains downstream execution.</li> <li>Task switching can disrupt efficient workflow through emails and meetings that do not add value to the final product.</li> <li>Defects in software are usually found by customers after the release, resulting in updates.</li> </ul><p>Every step of the development process is prone to losing time and productivity due to poor or insufficient automation. Focus on improving that first!</p> <h3 id="step-5-design-a-future-value-stream-map"><strong>Step 5. Design a Future Value Stream Map</strong></h3> <p>In contrast to creating a current state map, the future stream value map visualizes how the software development process <em>should </em>look. You design the ideal development process that uses the available resources optimally and prevents waste. A future value stream map is your reference guide to further action. It’s an ever-evolving document that should be regularly revised as your priorities change.</p> <h2 id="summary"><strong>Summary</strong></h2> <p>Value stream mapping is aimed at optimizing the entire development process, not just a single step. It visualizes the development life cycle in the form of a map that helps you find the areas of waste and understand how to reduce them. VSM also reduces miscommunication between distributed teams, where a lot of resources are wasted on waiting, delays, handoffs, task switching, etc. So that you can ensure high team performance and gain faster time-to-market for new software products.</p> </div> <div class="field field--name-field-blog-category field--type-entity-reference field--label-inline clearfix"> <div class="field__label">Category</div> <div class="field__item"><a href="/category/kinh-doanh-va-cong-nghe" hreflang="en">Business Technology</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <h3 class="field__label inline">Tags</h3> <ul class="links field__items"> <li><a href="/taxonomy/term/181" hreflang="en">Software Development Best Practices</a></li> <li><a href="/taxonomy/term/212" hreflang="en">Software Development Process</a></li> </ul> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> <div class="field field--name-field-via field--type-link field--label-inline clearfix"> <div class="field__label">Via</div> <div class="field__item"><a href="https://www.edvantis.com/blog/vsm-definition/" target="_blank">edvantis</a></div> </div> Fri, 16 Dec 2022 16:54:48 +0000 admin 1550 at https://tigosoftware.com What is Capability Maturity Model (CMM)? https://tigosoftware.com/what-capability-maturity-model-cmm <span class="field field--name-title field--type-string field--label-hidden"> What is Capability Maturity Model (CMM)?</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">admin</a></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 05/18/2022 - 17:27</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h2><strong>What is Capability Maturity Model(CMM)?</strong></h2> <p>The Capability Maturity Model (CMM) is a cross-discipline and technical paradigm for facilitating and refining software development processes and system improvement. This methodology is at the heart of most management systems that aim to improve the quality of all product and service development and delivery.</p> <h2><strong>What are Capability Maturity Model(CMM) levels?</strong></h2> <p>Following are the five Capability Maturity Model Levels:</p> <ul><li><strong>Initial:</strong> The first step is to create an unstable process environment. The software development process is considered haphazard and even chaotic at times. There are few methods that have been specified, and success is based on individual effort and heroism.</li> <li><strong>Repeatable:</strong> Work is planned and monitored, making it repeatable. To track cost, schedule, and functionality, basic project management techniques are implemented.</li> <li><strong>Defined: </strong>This level encompasses written and defined standards that evolve over time and support consistent performance. The work is well defined at this point.</li> <li><strong>Managed: </strong>Extensive data on the software development process and product quality are gathered. Both the software development process and the end products are quantified and managed.</li> <li><strong>Optimized:</strong> Work is based on continuous improvement (optimization). The focus on continuously improving process performance is a significant feature of this level.</li> </ul><p><img src="https://d3n0h9tb65y8q.cloudfront.net/public_assets/assets/000/003/005/original/Capability_Maturity_Model.png?1648218885" /></p> <header><h2 itemprop="headline"><strong>Difference Between CMM and CMMI</strong></h2> </header><p>It’s the 21st century, and every company is trying to become the superior one among its competitors, but in this technological era, only product attributes are not sufficient to stand out in the crowd. Organizations need to take the help of hardware and software services to face the competition.  </p> <p>To assist the organizations in developing software strategies, certain behavior models are used which measure the success and growth graph of these services. CMM and CMMI are two of such tools engaged in guiding organizations in the field of software maturity and other processes.    </p> <p><b>CMMI is the successor to CMM</b> and combines a number of maturity models into one integrated capability maturity model. Developed by the Software Engineering Institute of Carnegie Mellon University, CMMI can be used to guide process improvement across a project, a division, or an entire organisation.</p> <p>The main difference between CMM and CMMI is that the former focuses on evaluating whether an organization completes specific tasks related to the process or not, while the latter focuses on building an architecture for the whole development process.   </p> <p id="comparison-table-between-cmm-and-cmmi"><strong>Comparison Table Between CMM and CMMI </strong></p> <table><thead><tr><th><strong>Parameters of Comparison</strong> </th> <th><strong>CMM</strong> </th> <th><strong>CMMI</strong> </th> </tr></thead><tbody><tr><td>Definition </td> <td>CMM stands for Capability Maturity Model. </td> <td>CMMI stands for Capability Maturity Model Integration. </td> </tr><tr><td>Meaning </td> <td>It is a behavior model developed to measure an organization’s software development process. </td> <td>It is a successor of the CMM model and is more effective and task-oriented. </td> </tr><tr><td>Developed in </td> <td>The year 1990 </td> <td>The year 2006 </td> </tr><tr><td>Purpose </td> <td>To evaluate the process maturity levels in software. </td> <td>To combine many software models into one and to overcome the drawbacks of CMM. </td> </tr><tr><td>Stages </td> <td>This model has five stages: Initial Repeat Defined Managed Optimized. </td> <td>This model has five stages, too: Initial Managed Defined Quantitively managed Optimized. </td> </tr><tr><td>Efficiency </td> <td>Less effective one </td> <td>More effective one </td> </tr></tbody></table></div> <div class="field field--name-field-blog-category field--type-entity-reference field--label-inline clearfix"> <div class="field__label">Category</div> <div class="field__item"><a href="/taxonomy/term/47" hreflang="en">IT Consulting</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <h3 class="field__label inline">Tags</h3> <ul class="links field__items"> <li><a href="/taxonomy/term/202" hreflang="en">Software Development Consulting</a></li> <li><a href="/taxonomy/term/212" hreflang="en">Software Development Process</a></li> </ul> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Wed, 18 May 2022 10:27:50 +0000 admin 1195 at https://tigosoftware.com https://tigosoftware.com/what-capability-maturity-model-cmm#comments User Story vs Use Case https://tigosoftware.com/user-story-vs-use-case <span class="field field--name-title field--type-string field--label-hidden">User Story vs Use Case</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">admin</a></span> <span class="field field--name-created field--type-created field--label-hidden">Fri, 04/08/2022 - 23:49</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><section data-magellan-target="user-story-vs-use-case" id="user-story-vs-use-case"><p><strong>"Is a User Story the same thing as a Use Case?"</strong> People often ask this question and the dispute on whether an agile team should practice Use Stories vs Use Cases has been around the field for years. Are User Story and Use Case the same thing? If not, which is better? Which one should you use? Or could use both?</p> <p>Although there are some similarities between User Stories and Use Cases, User Stories and Use Cases are <strong>not interchangeable</strong>; both User Stories and Use Cases identify users and they both describe goal, but they serve different purposes.</p> <p>User Stories are centered on the result and the benefit of the thing you're describing, whereas Use Cases can be more granular, and describe how your system will act. Is there a place for Use Cases in Agile, or can they be used in conjunction with each other?</p> <p>This article will tell you the difference between User Stories and Use Cases.</p> </section><h1>Agile Software for Scrum Teams</h1> <p>Need an agile software solution for product backlog management? Visual Paradigm supports a powerful agile toolset that covers user story mapping, affinity estimation, sprint management, etc. It's powerful but yet easy-to-use, intuitive and, most important, AGILE.</p> <section data-magellan-target="user-stories-vs-use-cases" id="user-stories-vs-use-cases"><h2>User Stories vs Use Cases</h2> <p>User Stories often start out the same way as Use Cases, in that each describes one way to use the system, is centered around a goal, is written from the perspective of a user, uses the natural language of the business, and - on its own - does not tell the whole story.</p> </section><section data-magellan-target="similarity" id="similarity"><h3>User Stories vs Use Cases - The Similarity</h3> <p>If we consider the key component in both approaches:</p> <ul><li>User Stories contain, with user role, goal and acceptance criteria.</li> <li>Use Cases contain equivalent elements: an actor, flow of events and post conditions respectively (a detailed Use Case template may contain many more other elements).</li> </ul></section><section data-magellan-target="difference" id="difference"><h3>User Stories vs Use Cases - The Difference</h3> <ul><li>The details of a User Story may not be documented to the same extreme as a Use Case.</li> <li>User Stories deliberately leave out a lot of important details. User Stories are meant to elicit conversations by asking questions during scrum meetings.</li> <li>Small increments for getting feedback more frequently, rather than having more detailed up-front requirement specification as in Use Cases.</li> </ul></section><section data-magellan-target="what-is-a-user-story" id="what-is-a-user-story"><h2>What is a User Story?</h2> <p>A User Story is a note that captures what a user does or needs to do as part of her work. Each User Story consists of a short description written from user's point of view, with natural language. Unlike the traditional requirement capturing, User Story focuses on what the user needs instead of what the system should deliver. This leaves room for further discussion of solutions and the result of a system that can really fit into the customers' business workflow, solving their operational problems and most importantly adding value to the organization.</p> </section><section data-magellan-target="concept-of-3cs" id="concept-of-3cs"><h3>Concept of 3C's</h3> <p>The 3C's refer to the three critical aspects of good user stories. The concept was suggested by <a href="https://ronjeffries.com/xprog/articles/expcardconversationconfirmation/" target="_blank">Ron Jeffries</a>, the co-inventor of the user stories practice. Nowadays, when we talk about User Stories, we usually are referring to the kind of User Stories that are composed of these three aspects.</p> <h4>Card</h4> <p>User Stories are written as cards. Each User Story card has a short sentence with just-enough text to remind everyone of what the story is about.</p> <img src="https://i.imgur.com/dXZPJ1L.png" /><h4>Conversation</h4> <p>Requirements are found and re-fined through a continuous conversations between customers and development team throughout the whole software project. Important ideas and decisions would be discovered and recorded during the stakeholder meetings.</p> <img src="https://i.imgur.com/6V3vUnr.png" /><h4>Confirmation</h4> <p>Confirmation is also known as the acceptance criteria of the User Story. During the discussion of requirements, the customers tells the analyst not only what he/she wants, but also confirming under what conditions and criteria the working software would be accepted or rejected. The cases defined are written as confirmation. Note that confirmation focuses on verifying the correctness of work of the corresponding User Story. It is not an integration testing.</p> <img src="https://i.imgur.com/B7yDvd0.png" /></section><section data-magellan-target="what-is-use-cases" id="what-is-use-cases"><h2>What is Use Cases?</h2> <p>Use Cases, introduced by <a href="https://en.wikipedia.org/wiki/Ivar_Jacobson" target="_blank">Ivar Jacobson</a> more than 20 years ago, are used to capture user (actor) point of view while describing functional requirements of the system. They describe the step by step process a user goes through to complete that goal using a software system.</p> <img src="https://i.imgur.com/tOpW7wX.png" /><p>A Use Case is a description of all the ways an end-user wants to "use" a system. Use Cases capture all the possible ways the user and system can interact that result in the user achieving the goal. They also capture all the things that can go wrong along the way that prevent the user from achieving the goal.</p> <p>A Use-Case model consists of a number of model elements. The most important model elements are:</p> <ul><li>Use Cases,</li> <li>Actors</li> <li>and the relationships between them.</li> </ul></section><section data-magellan-target="use-case-specification" id="use-case-specification"><h2>Detailed Use Case Specification</h2> <p>A Use Case Specification is a textual description of the functionality provided by the system. It captures actor-system interaction. That is, it specifies how a user interacts with a system and how the system responds to the user actions. It is often phrased in the form of a dialog between the actor and the system. The Use Case Specification is represented in the Use Case Diagram by an oval, and is what most people think of when they hear the term Use Case.</p> <img src="https://i.imgur.com/f6EGC0Z.png" /></section><section data-magellan-target="why-need-use-cases" id="why-need-use-cases"><h2>Why We Still Need Use Cases?</h2> <p><a href="http://alistair.cockburn.us/" target="_blank">Alistair Cockburn</a> explains that he sees (with companies he consults to) three main problems with User Stories:</p> <ol><li>Lack of context (what's the largest goal)</li> <li>Sense of completeness that you covered all bases relating to a goal.</li> <li>No mechanism for looking ahead at upcoming work.</li> </ol></section><section data-magellan-target="integrate-use-case-user-story-and-story-map" id="integrate-use-case-user-story-and-story-map"><h2>Integrate Use Case, User Story and Story Mapping techniques</h2> <p><a href="https://www.visual-paradigm.com/">Visual Paradigm</a> provides a complete agile environment that integrates Use Case, User Story, story mapping, affinity estimation, and Kanban into a completely seamless and automated end-to-end process. This process can address the shortcoming of what Alistair mentioned above with the User Story technique by supplementing Use Case and story mapping tools. The other useful agile tools are also incorporated for all the needs to manage your agile projects faster, better and smarter.</p> <p>The concept map below gives an overview of the agile tools supported by Visual Paradigm.</p> <ol><li>Send requirements from visual model as product backlog item (for use in story map construction)</li> <li>User activities in story map, which represents a large system context as a whole</li> <li>Vertical structuring of activities, tasks and stories - Completeness of backlog</li> <li>Release management</li> <li>Estimate user stories based on their development effort and risk</li> <li>Manage development activities with sprint</li> <li>Track progress with sprint task board</li> </ol><p>Point 1 to 3 are tools for supplementing the short coming of user stories. The other user agile tools are listed in Point 4 to 7.</p> <img alt="Visual Paradigm Agile Tools" src="https://cdn-images.visual-paradigm.com/guide/agile/user-story-vs-use-case/07-visual-paradigm-agile-tools.png" /></section></div> <div class="field field--name-field-blog-category field--type-entity-reference field--label-inline clearfix"> <div class="field__label">Category</div> <div class="field__item"><a href="/taxonomy/term/5" hreflang="en">Methodology</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <h3 class="field__label inline">Tags</h3> <ul class="links field__items"> <li><a href="/taxonomy/term/457" hreflang="en">User Case</a></li> <li><a href="/taxonomy/term/98" hreflang="en">Project Management</a></li> <li><a href="/taxonomy/term/458" hreflang="en">User Story</a></li> <li><a href="/taxonomy/term/82" hreflang="en">Scrum</a></li> <li><a href="/taxonomy/term/212" hreflang="en">Software Development Process</a></li> </ul> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> <div class="field field--name-field-via field--type-link field--label-inline clearfix"> <div class="field__label">Via</div> <div class="field__item"><a href="https://www.visual-paradigm.com/guide/agile-software-development/user-story-vs-use-case/" target="_blank">www.visual-paradigm.com</a></div> </div> Fri, 08 Apr 2022 16:49:32 +0000 admin 1147 at https://tigosoftware.com https://tigosoftware.com/user-story-vs-use-case#comments