{"id":41,"date":"2018-07-23T07:11:37","date_gmt":"2018-07-23T07:11:37","guid":{"rendered":"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/?post_type=chapter&#038;p=41"},"modified":"2018-08-07T11:52:18","modified_gmt":"2018-08-07T11:52:18","slug":"agile-software-development","status":"publish","type":"chapter","link":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/chapter\/agile-software-development\/","title":{"rendered":"Agile Software Development Part 1"},"content":{"raw":"<p style=\"text-align: center\"><strong>SOFTWARE ENGINEERING <\/strong><\/p>\r\n&nbsp;\r\n\r\n<strong>AGILE SOFTWARE DEVELOPMENT<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Agile software development is a software methodology which comprises of methods and practices based on the values and principles, where solutions are developed by the collaboration between self-organizing teams and cross functional teams by employing appropriate methods and practices for software development.<\/p>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<strong>LEARNING OBJECTIVES<\/strong>\r\n<ul>\r\n \t<li style=\"text-align: justify\">To ensure the delivery of high quality systems.<\/li>\r\n \t<li style=\"text-align: justify\">To provide strong management controls.<\/li>\r\n \t<li style=\"text-align: justify\">To maximize productivity.<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong>AGILE SOFTWARE DEVELOPMENT<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Agile software development is a software methodology which comprises of methods and practices based on the values and principles, where solutions are developed by the collaboration and joint efforts of self-organizing teams and cross functional teams by employing appropriate methods and practices for software development. Agile software development offers a framework that employs continuous planning and feedback for software development. Agile software development unlike traditional approaches, it is dynamic in nature as it employs appropriate methodologies through continuous planning and feedback.<\/p>\r\n<img class=\"aligncenter size-full wp-image-44\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic1.png\" alt=\"\" width=\"400\" height=\"320\" \/>\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em;text-align: justify;text-indent: 1em\">In agile software development, a brainstorming session is conducted by engaging the developers, customers and stakeholders for requirement analysis. The requirements are elicited through the brainstorming session and a design is established. A prototype is developed using the design and the process is documented. In the development phase, the design is implemented and demo of the product is released for feedback using which the product is improvised. Once the product is developed, it is tested to identify errors and the shortcomings in the products are resolved to achieve the quality standards. When the product is tested and achieves the quality standards, the product is deployed and delivered to the client. The product is maintained and if it encounters any shortcomings, it undergoes the development phases iteratively for improvising the product.<\/span><\/p>\r\n\r\n<div>\r\n\r\n&nbsp;\r\n\r\n<strong>AGILITY<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Agility is the ability to create and respond to change. It maintains a balance between flexibility and structure. John Wooden puts agility as \u201cBe quick, but don\u2019t hurry\u201d. In many traditional practices, the customers are not majorly involved in the development cycle which leads to misconceptions in the product development. When agility is incorporated into the practices, it allows dynamic changes, flexibility and provides an ability to respond to changes.<\/p>\r\n&nbsp;\r\n\r\n<strong>AGILE PRACTICES<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Every project is unique. So the trick is to customize an existing agile method to your project. Every project requires its own practices for effective development of the product. Some of the agile practices that involves <strong>thinking <\/strong>includes pair programming, energized work, informative workspace, Root cause analysis, retrospectives.<\/p>\r\n&nbsp;\r\n\r\n<strong>Pair Programming<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Pair programming comprises of two programmer who share a single workstation where one is called the driver and the other is called the navigator or observer. They switch roles among themselves recurrently. The driver is the programmer who codes and is focused on the semantics, syntax and coding practices while the observer focuses on reviewing the code for effective implementation, the time elapsed, the overall workflow and strategies for improvising the product effectively. Pair programming eliminates the need for code reviews and allows better quality in code, knowledge sharing, team building and increase in productivity.<\/p>\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\n<strong>Energized Work<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The entire team should feel energized as productive work can be achieved only when the team is energized and motivated. The key rule to feel energized is to go home on time. The individuals must take care of themselves and must maintain a good work and personal life balance. They should take care of their physical and mental health. The individual must not dread going to work. The programmer should take a break if they are making more errors than advancement. Energized work doesn\u2019t mean taking long breaks and excuses from work, but providing fair amount of work into the project development.<\/p>\r\n&nbsp;\r\n\r\n<strong>Informative Workspace<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Informative workspace projects big visual charts that project the ideas, notions and goals of the project. The charts and boards should provide information about the project, the progress, important dates and backlogs. The informative workspace is created using storyboards, index cards, concept map, flowcharts, visual charts and whiteboards. The workspace must be constantly updated to provide up to date information about the project and its progress.<\/p>\r\n&nbsp;\r\n\r\n<strong>Root Cause Analysis<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Root cause analysis focuses on finding the shortcomings in the process and not the people. Root cause analysis focuses on fixing the problem at the root level rather than blaming the people. Here, the team members are gathered to determine the cause of the problem and they try to establish a solution to overcome the short comings rather than placing blame on the people.<\/p>\r\n&nbsp;\r\n\r\n<strong>Retrospective<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Retrospective is a gathering of the team members that is conducted at the completion of every development iteration to discuss the ways and methods to improve the product. The team reflects on ways for effective continuous development of the product. The second aspect of agile practices involves <strong>collaboration <\/strong>which encompasses trust, members sitting together to discuss the ways to improve the product, team work, real customer involvement, ubiquitous language, stand up meeting, coding standards, sprint demo, reporting etc.<\/p>\r\n\r\n<\/div>\r\n&nbsp;\r\n<p style=\"text-align: justify\">The third aspect of agile practices involve <strong>releasing <\/strong>which means the development of the project is done and there exists no bugs in the product, where the product is ready for release. It focuses on version control, continuous integration, collective code ownership and documentation.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">The fourth aspect of agile practices involves an effective <strong>planning. <\/strong>An effective planning is done by having a clear vision of the goals that are to be achieved. The plan is then released so that it undergoes several iteration to produce an effective plan that satisfies the customer. Estimation of the plan in terms of costs, resources and time are done to have clear view of the plan and schedule.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">The fifth aspect of agile practice include <strong>developing <\/strong>the product. The customers are given the most importance in agile practices, as customer tests are carried in the development phase. Test driven development is employed which relies on very short development cycle called sprints (iterations). Test driven development focuses on writing automated test cases which is designed to make the desired improvement or incorporate new function and then the developer produces minimum amount of code to pass the test case, which is then refactored to achieve acceptable standards. It focuses on simple design so that it is easily understood by the team members and the customers.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>AGILE MANIFESTO<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">The agile manifesto depicts how the traditional approaches are transformed in agile practices. Agile practices focuses on the individuals and interactions over processes and tool, working software over comprehensive documentation, customer collaboration over contract negotiation and responding to change over following a plan.<\/p>\r\n<img class=\"aligncenter size-full wp-image-45\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic2.png\" alt=\"\" width=\"1016\" height=\"413\" \/>\r\n\r\n<strong style=\"text-align: initial;font-size: 1em\">12 Principles of agile manifesto<\/strong>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nThe 12 principles of agile manifesto include the following:\r\n<ol>\r\n \t<li>The highest priority is to satisfy the customer through early and continuous delivery of valuable software.<\/li>\r\n \t<li>Welcome \u00a0changing \u00a0requirements, \u00a0even \u00a0late \u00a0in \u00a0development. \u00a0Agile \u00a0processes harness change for the customer\u2019s competitive advantage.<\/li>\r\n \t<li>Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.<\/li>\r\n \t<li>Business people and developers must work together daily throughout the project.<\/li>\r\n \t<li>Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.<\/li>\r\n \t<li>The most efficient and effective method of conveying information to and within a development team is face to face conversation.<\/li>\r\n \t<li>Working software is the primary measure of progress.<\/li>\r\n \t<li>Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely.<\/li>\r\n \t<li>Continuous attention to technical excellence and good design enhances agility.<\/li>\r\n \t<li>Simplicity is the art of maximizing the amount of work not done is essential.<\/li>\r\n \t<li>The \u00a0best \u00a0architecture, \u00a0requirements \u00a0and \u00a0designs \u00a0emerge \u00a0from \u00a0self-organizing teams.<\/li>\r\n \t<li>At regular intervals, the team reflects on how to become more effective, then tunes and adjusts the behavior accordingly.<\/li>\r\n<\/ol>\r\n&nbsp;\r\n\r\n<strong style=\"font-size: 1em\">EXTREME PROGRAMMING<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">One of the well know agile methods is extreme programming (XP). It was developed in 1990s. Extreme programming revolve around 4 different practices which include pair programming, test driven development, refactoring and simple design. The next phase includes collective ownership, coding standard, sustainable pace, metaphor and continuous integration. On the upper hand, it includes whole team, game planning, small releases and customer tests.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">The figure shows concentric circle, where each circle focuses on different aspects of software development.<\/span><\/p>\r\n\r\n<\/div>\r\n<img class=\"aligncenter size-full wp-image-46\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic3.png\" alt=\"\" width=\"553\" height=\"360\" \/>\r\n\r\n<strong>Extreme Programming Practice<\/strong>\r\n\r\n&nbsp;\r\n\r\nExtreme programming practices include the following:\r\n<ul>\r\n \t<li style=\"text-align: justify\"><strong>On site customer<\/strong>: Customer is actively involved with development Customer gives \u201cUser Stories\u201d which are short and informal stories describing the features. The stories are conveyed through story boards.<\/li>\r\n \t<li style=\"text-align: justify\">Planning game: In this phase, the developers and customers come together and plan the project. The developers give a cost estimate to \u201cstories\u201d and they provide budget, by employing an abstract accounting mechanism. They later compare the actual cost to improve the estimate over time. The customers prioritize stories to fit within budget.<\/li>\r\n \t<li style=\"text-align: justify\">Metaphor: A metaphor describes how the whole project will fit together It projects the integration aspect, on how the project will fit together like a jigsaw puzzle. It provides a framework for discussing project in a team. Tools and materials often provide good metaphors.<\/li>\r\n<\/ul>\r\n<p class=\"hanging-indent\"><strong>Q<\/strong><strong>u<\/strong><strong>a<\/strong><strong>d<\/strong><strong>r<\/strong><strong>a<\/strong><strong>n<\/strong><strong>t 4 <\/strong><strong>- Learn More\/ Web Resources \/ Supporting Materials<\/strong><\/p>\r\n\r\n<table style=\"height: 365px\" width=\"824\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 809.063px\">\r\n<p style=\"text-align: center\"><strong>We<\/strong><strong>b Links<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 809.063px\"><a href=\"http:\/\/www.tutorialspoint.com\/software_engineering\/software_engineering_overview.htm\"><em>http:\/\/www.tutorialspoint.com\/software_engineering\/software_engineering_overview.htm<\/em><\/a><\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 809.063px\"><a href=\"http:\/\/www.practicalprocess.com\/seyp\/definition.html\"><em>http:\/\/www.practicalprocess.com\/seyp\/definition.html<\/em><\/a><\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 809.063px\"><a href=\"http:\/\/www.softwareengineerinsider.com\/articles\/what-is-software-engineering.html#.V44IRtJ97Dc\"><em>http:\/\/www.softwareengineerinsider.com\/articles\/what-is-software-<\/em><\/a><em> <a href=\"http:\/\/www.softwareengineerinsider.com\/articles\/what-is-software-engineering.html#.V44IRtJ97Dc\">engineering.html#.V44IRtJ97Dc<\/a><\/em><\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 809.063px\"><\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 809.063px\">\r\n<p style=\"text-align: center\"><strong>Supporting &amp; Reference Materials<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 809.063px\">Roger S. Pressman, \u201cSoftware Engineering: A Practitioner\u2019s Approach\u201d, Fifth Edition, McGraw Hill, 2001.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 809.063px\">PankajJalote, \u201cAn Integrated Approach to Software Engineering\u201d, Second Edition, Springer Verlag, 1997.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td style=\"width: 809.063px\">Ian Sommerville, \u201cSoftware Engineering\u201d, Sixth Edition, Addison Wesley, 2000.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p style=\"text-align: center\"><strong>G<\/strong><strong>l<\/strong><strong>o<\/strong><strong>s<\/strong><strong>s<\/strong><strong>a<\/strong><strong>r<\/strong><strong>y<\/strong><\/p>\r\n\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><strong>S<\/strong><strong>tarting char<\/strong><\/td>\r\n<td><strong>T<\/strong><strong>erm<\/strong><\/td>\r\n<td><strong>D<\/strong><strong>efinition<\/strong><\/td>\r\n<td><strong>R<\/strong><strong>e late d Te rm<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>S<\/td>\r\n<td>Software Engineering<\/td>\r\n<td>It is the building of software systems which are so large or so complex that they are built by a team or teams of engineers<\/td>\r\n<td>Software Development<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>C<\/td>\r\n<td>Change Control<\/td>\r\n<td>Change control is a systematic approach to managing all changes made to a product or system<\/td>\r\n<td>Versioning<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>R<\/td>\r\n<td>Reliability<\/td>\r\n<td>It is the probability of failure-free software operation for a specified period of time in a specified environment.<\/td>\r\n<td>QoS, Software Quality<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>C<\/td>\r\n<td>Cost Estimation<\/td>\r\n<td>It is the approximation of the cost of a program, project, or operation.<\/td>\r\n<td>Estimate<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p style=\"text-align: center\"><strong>Points to Ponder<\/strong><\/p>\r\n\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><strong>S<\/strong><strong>.<\/strong><strong>N<\/strong><strong>o<\/strong><\/td>\r\n<td><strong>P<\/strong><strong>o<\/strong><strong>i<\/strong><strong>n<\/strong><strong>t<\/strong><strong>s to Ponder<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>1.<\/td>\r\n<td>Good notations can clarify the relationships and interactions of interest.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>2.<\/td>\r\n<td>The existence of standard practices is one of the distinguishing characteristics of a professional \u00a0discipline.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>3.<\/td>\r\n<td>Team communication, product complexity, facilities and resources, etc are some of the quality and productivity factors.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>4.<\/td>\r\n<td>Functionality, reliability usability, efficiency, maintainability are some of the characteristics of software quality.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>","rendered":"<p style=\"text-align: center\"><strong>SOFTWARE ENGINEERING <\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><strong>AGILE SOFTWARE DEVELOPMENT<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Agile software development is a software methodology which comprises of methods and practices based on the values and principles, where solutions are developed by the collaboration between self-organizing teams and cross functional teams by employing appropriate methods and practices for software development.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>LEARNING OBJECTIVES<\/strong><\/p>\n<ul>\n<li style=\"text-align: justify\">To ensure the delivery of high quality systems.<\/li>\n<li style=\"text-align: justify\">To provide strong management controls.<\/li>\n<li style=\"text-align: justify\">To maximize productivity.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>AGILE SOFTWARE DEVELOPMENT<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Agile software development is a software methodology which comprises of methods and practices based on the values and principles, where solutions are developed by the collaboration and joint efforts of self-organizing teams and cross functional teams by employing appropriate methods and practices for software development. Agile software development offers a framework that employs continuous planning and feedback for software development. Agile software development unlike traditional approaches, it is dynamic in nature as it employs appropriate methodologies through continuous planning and feedback.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-44\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic1.png\" alt=\"\" width=\"400\" height=\"320\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic1.png 400w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic1-300x240.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic1-65x52.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic1-225x180.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic1-350x280.png 350w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em;text-align: justify;text-indent: 1em\">In agile software development, a brainstorming session is conducted by engaging the developers, customers and stakeholders for requirement analysis. The requirements are elicited through the brainstorming session and a design is established. A prototype is developed using the design and the process is documented. In the development phase, the design is implemented and demo of the product is released for feedback using which the product is improvised. Once the product is developed, it is tested to identify errors and the shortcomings in the products are resolved to achieve the quality standards. When the product is tested and achieves the quality standards, the product is deployed and delivered to the client. The product is maintained and if it encounters any shortcomings, it undergoes the development phases iteratively for improvising the product.<\/span><\/p>\n<div>\n<p>&nbsp;<\/p>\n<p><strong>AGILITY<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Agility is the ability to create and respond to change. It maintains a balance between flexibility and structure. John Wooden puts agility as \u201cBe quick, but don\u2019t hurry\u201d. In many traditional practices, the customers are not majorly involved in the development cycle which leads to misconceptions in the product development. When agility is incorporated into the practices, it allows dynamic changes, flexibility and provides an ability to respond to changes.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>AGILE PRACTICES<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Every project is unique. So the trick is to customize an existing agile method to your project. Every project requires its own practices for effective development of the product. Some of the agile practices that involves <strong>thinking <\/strong>includes pair programming, energized work, informative workspace, Root cause analysis, retrospectives.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Pair Programming<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Pair programming comprises of two programmer who share a single workstation where one is called the driver and the other is called the navigator or observer. They switch roles among themselves recurrently. The driver is the programmer who codes and is focused on the semantics, syntax and coding practices while the observer focuses on reviewing the code for effective implementation, the time elapsed, the overall workflow and strategies for improvising the product effectively. Pair programming eliminates the need for code reviews and allows better quality in code, knowledge sharing, team building and increase in productivity.<\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p><strong>Energized Work<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The entire team should feel energized as productive work can be achieved only when the team is energized and motivated. The key rule to feel energized is to go home on time. The individuals must take care of themselves and must maintain a good work and personal life balance. They should take care of their physical and mental health. The individual must not dread going to work. The programmer should take a break if they are making more errors than advancement. Energized work doesn\u2019t mean taking long breaks and excuses from work, but providing fair amount of work into the project development.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Informative Workspace<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Informative workspace projects big visual charts that project the ideas, notions and goals of the project. The charts and boards should provide information about the project, the progress, important dates and backlogs. The informative workspace is created using storyboards, index cards, concept map, flowcharts, visual charts and whiteboards. The workspace must be constantly updated to provide up to date information about the project and its progress.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Root Cause Analysis<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Root cause analysis focuses on finding the shortcomings in the process and not the people. Root cause analysis focuses on fixing the problem at the root level rather than blaming the people. Here, the team members are gathered to determine the cause of the problem and they try to establish a solution to overcome the short comings rather than placing blame on the people.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Retrospective<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Retrospective is a gathering of the team members that is conducted at the completion of every development iteration to discuss the ways and methods to improve the product. The team reflects on ways for effective continuous development of the product. The second aspect of agile practices involves <strong>collaboration <\/strong>which encompasses trust, members sitting together to discuss the ways to improve the product, team work, real customer involvement, ubiquitous language, stand up meeting, coding standards, sprint demo, reporting etc.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The third aspect of agile practices involve <strong>releasing <\/strong>which means the development of the project is done and there exists no bugs in the product, where the product is ready for release. It focuses on version control, continuous integration, collective code ownership and documentation.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The fourth aspect of agile practices involves an effective <strong>planning. <\/strong>An effective planning is done by having a clear vision of the goals that are to be achieved. The plan is then released so that it undergoes several iteration to produce an effective plan that satisfies the customer. Estimation of the plan in terms of costs, resources and time are done to have clear view of the plan and schedule.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The fifth aspect of agile practice include <strong>developing <\/strong>the product. The customers are given the most importance in agile practices, as customer tests are carried in the development phase. Test driven development is employed which relies on very short development cycle called sprints (iterations). Test driven development focuses on writing automated test cases which is designed to make the desired improvement or incorporate new function and then the developer produces minimum amount of code to pass the test case, which is then refactored to achieve acceptable standards. It focuses on simple design so that it is easily understood by the team members and the customers.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>AGILE MANIFESTO<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The agile manifesto depicts how the traditional approaches are transformed in agile practices. Agile practices focuses on the individuals and interactions over processes and tool, working software over comprehensive documentation, customer collaboration over contract negotiation and responding to change over following a plan.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-45\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic2.png\" alt=\"\" width=\"1016\" height=\"413\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic2.png 1016w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic2-300x122.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic2-768x312.png 768w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic2-65x26.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic2-225x91.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic2-350x142.png 350w\" sizes=\"auto, (max-width: 1016px) 100vw, 1016px\" \/><\/p>\n<p><strong style=\"text-align: initial;font-size: 1em\">12 Principles of agile manifesto<\/strong><\/p>\n<div>\n<p>&nbsp;<\/p>\n<p>The 12 principles of agile manifesto include the following:<\/p>\n<ol>\n<li>The highest priority is to satisfy the customer through early and continuous delivery of valuable software.<\/li>\n<li>Welcome \u00a0changing \u00a0requirements, \u00a0even \u00a0late \u00a0in \u00a0development. \u00a0Agile \u00a0processes harness change for the customer\u2019s competitive advantage.<\/li>\n<li>Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.<\/li>\n<li>Business people and developers must work together daily throughout the project.<\/li>\n<li>Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.<\/li>\n<li>The most efficient and effective method of conveying information to and within a development team is face to face conversation.<\/li>\n<li>Working software is the primary measure of progress.<\/li>\n<li>Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely.<\/li>\n<li>Continuous attention to technical excellence and good design enhances agility.<\/li>\n<li>Simplicity is the art of maximizing the amount of work not done is essential.<\/li>\n<li>The \u00a0best \u00a0architecture, \u00a0requirements \u00a0and \u00a0designs \u00a0emerge \u00a0from \u00a0self-organizing teams.<\/li>\n<li>At regular intervals, the team reflects on how to become more effective, then tunes and adjusts the behavior accordingly.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p><strong style=\"font-size: 1em\">EXTREME PROGRAMMING<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">One of the well know agile methods is extreme programming (XP). It was developed in 1990s. Extreme programming revolve around 4 different practices which include pair programming, test driven development, refactoring and simple design. The next phase includes collective ownership, coding standard, sustainable pace, metaphor and continuous integration. On the upper hand, it includes whole team, game planning, small releases and customer tests.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 1em\">The figure shows concentric circle, where each circle focuses on different aspects of software development.<\/span><\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-46\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic3.png\" alt=\"\" width=\"553\" height=\"360\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic3.png 553w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic3-300x195.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic3-65x42.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic3-225x146.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/P08M06Pic3-350x228.png 350w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" \/><\/p>\n<p><strong>Extreme Programming Practice<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Extreme programming practices include the following:<\/p>\n<ul>\n<li style=\"text-align: justify\"><strong>On site customer<\/strong>: Customer is actively involved with development Customer gives \u201cUser Stories\u201d which are short and informal stories describing the features. The stories are conveyed through story boards.<\/li>\n<li style=\"text-align: justify\">Planning game: In this phase, the developers and customers come together and plan the project. The developers give a cost estimate to \u201cstories\u201d and they provide budget, by employing an abstract accounting mechanism. They later compare the actual cost to improve the estimate over time. The customers prioritize stories to fit within budget.<\/li>\n<li style=\"text-align: justify\">Metaphor: A metaphor describes how the whole project will fit together It projects the integration aspect, on how the project will fit together like a jigsaw puzzle. It provides a framework for discussing project in a team. Tools and materials often provide good metaphors.<\/li>\n<\/ul>\n<p class=\"hanging-indent\"><strong>Q<\/strong><strong>u<\/strong><strong>a<\/strong><strong>d<\/strong><strong>r<\/strong><strong>a<\/strong><strong>n<\/strong><strong>t 4 <\/strong><strong>&#8211; Learn More\/ Web Resources \/ Supporting Materials<\/strong><\/p>\n<table style=\"height: 365px; width: 824px;\">\n<tbody>\n<tr>\n<td style=\"width: 809.063px\">\n<p style=\"text-align: center\"><strong>We<\/strong><strong>b Links<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 809.063px\"><a href=\"http:\/\/www.tutorialspoint.com\/software_engineering\/software_engineering_overview.htm\"><em>http:\/\/www.tutorialspoint.com\/software_engineering\/software_engineering_overview.htm<\/em><\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 809.063px\"><a href=\"http:\/\/www.practicalprocess.com\/seyp\/definition.html\"><em>http:\/\/www.practicalprocess.com\/seyp\/definition.html<\/em><\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 809.063px\"><a href=\"http:\/\/www.softwareengineerinsider.com\/articles\/what-is-software-engineering.html#.V44IRtJ97Dc\"><em>http:\/\/www.softwareengineerinsider.com\/articles\/what-is-software-<\/em><\/a><em> <a href=\"http:\/\/www.softwareengineerinsider.com\/articles\/what-is-software-engineering.html#.V44IRtJ97Dc\">engineering.html#.V44IRtJ97Dc<\/a><\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 809.063px\"><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 809.063px\">\n<p style=\"text-align: center\"><strong>Supporting &amp; Reference Materials<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 809.063px\">Roger S. Pressman, \u201cSoftware Engineering: A Practitioner\u2019s Approach\u201d, Fifth Edition, McGraw Hill, 2001.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 809.063px\">PankajJalote, \u201cAn Integrated Approach to Software Engineering\u201d, Second Edition, Springer Verlag, 1997.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 809.063px\">Ian Sommerville, \u201cSoftware Engineering\u201d, Sixth Edition, Addison Wesley, 2000.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center\"><strong>G<\/strong><strong>l<\/strong><strong>o<\/strong><strong>s<\/strong><strong>s<\/strong><strong>a<\/strong><strong>r<\/strong><strong>y<\/strong><\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>S<\/strong><strong>tarting char<\/strong><\/td>\n<td><strong>T<\/strong><strong>erm<\/strong><\/td>\n<td><strong>D<\/strong><strong>efinition<\/strong><\/td>\n<td><strong>R<\/strong><strong>e late d Te rm<\/strong><\/td>\n<\/tr>\n<tr>\n<td>S<\/td>\n<td>Software Engineering<\/td>\n<td>It is the building of software systems which are so large or so complex that they are built by a team or teams of engineers<\/td>\n<td>Software Development<\/td>\n<\/tr>\n<tr>\n<td>C<\/td>\n<td>Change Control<\/td>\n<td>Change control is a systematic approach to managing all changes made to a product or system<\/td>\n<td>Versioning<\/td>\n<\/tr>\n<tr>\n<td>R<\/td>\n<td>Reliability<\/td>\n<td>It is the probability of failure-free software operation for a specified period of time in a specified environment.<\/td>\n<td>QoS, Software Quality<\/td>\n<\/tr>\n<tr>\n<td>C<\/td>\n<td>Cost Estimation<\/td>\n<td>It is the approximation of the cost of a program, project, or operation.<\/td>\n<td>Estimate<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center\"><strong>Points to Ponder<\/strong><\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>S<\/strong><strong>.<\/strong><strong>N<\/strong><strong>o<\/strong><\/td>\n<td><strong>P<\/strong><strong>o<\/strong><strong>i<\/strong><strong>n<\/strong><strong>t<\/strong><strong>s to Ponder<\/strong><\/td>\n<\/tr>\n<tr>\n<td>1.<\/td>\n<td>Good notations can clarify the relationships and interactions of interest.<\/td>\n<\/tr>\n<tr>\n<td>2.<\/td>\n<td>The existence of standard practices is one of the distinguishing characteristics of a professional \u00a0discipline.<\/td>\n<\/tr>\n<tr>\n<td>3.<\/td>\n<td>Team communication, product complexity, facilities and resources, etc are some of the quality and productivity factors.<\/td>\n<\/tr>\n<tr>\n<td>4.<\/td>\n<td>Functionality, reliability usability, efficiency, maintainability are some of the characteristics of software quality.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"author":4,"menu_order":5,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":["dr-r-baskaran"],"pb_section_license":""},"chapter-type":[],"contributor":[58],"license":[],"class_list":["post-41","chapter","type-chapter","status-publish","hentry","contributor-dr-r-baskaran"],"part":3,"_links":{"self":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/41","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/users\/4"}],"version-history":[{"count":10,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/41\/revisions"}],"predecessor-version":[{"id":377,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/41\/revisions\/377"}],"part":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/41\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/media?parent=41"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapter-type?post=41"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/contributor?post=41"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/license?post=41"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}