{"id":106,"date":"2009-01-13T12:29:44","date_gmt":"2009-01-13T12:29:44","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2009\/01\/13\/the-symptoms-of-our-software-development-malaise\/"},"modified":"2017-12-25T17:36:41","modified_gmt":"2017-12-25T17:36:41","slug":"the-symptoms-of-our-software-development-malaise","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/the-symptoms-of-our-software-development-malaise\/","title":{"rendered":"The symptoms of our software development malaise"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3967 aligncenter\" src=\"http:\/\/www.scmgalaxy.com\/tutorials\/wp-content\/uploads\/2009\/01\/symptoms-of-our-software-de.png\" alt=\"software-development-malaise\" width=\"600\" height=\"400\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/01\/symptoms-of-our-software-de.png 600w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/01\/symptoms-of-our-software-de-300x200.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Software development has traditionally suffered from producing end products with a definite lack of inherent quality. The symptoms of this quality lack are listed here:<\/span><\/span><\/p>\n<ul style=\"text-align: justify;\">\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Software development projects are often delivered late and over budget.<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Often the delivered product does not meet customer requirements and is never used.<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Software products simply do not work right.<\/span><\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">As we look into the symptoms of our software development malaise, five principal issues related to software development arise.<br \/>\n<\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\"><b>Lack of Visibility <\/b><br \/>\nSoftware is conceptual in nature. Unlike a bridge, a building, or another physical structure, it is not easy to look at software and assess how close it is to completion. Without strong project management, &#8220;software is 90% complete 90% of the time.&#8221; Through the adoption of SCM policy and the definition of the configuration management model of the software under development, all CIs, components, and subcomponents are immediately visible for versions, releases, and product families.<\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\"><br \/>\n<\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\"><b>Lack of Control <\/b><br \/>\nBecause software is inherently intangible, it is also more difficult to control. Without an accurate assessment of progress, schedules slip and budgets are overrun. It is hard to assess what has been accomplished and what remains to be done. SCM provides the mechanism for controlling the project through measuring the amount of effort compared to the project management plan and estimating the future effort based on past work.<br \/>\n<\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\"><b>Lack of Traceability <\/b><br \/>\nA lack of linkage between project events contributes to project failures. The main benefit of SCM is providing the traceability among versions, releases, and product families. The value of this traceability is enormous when a problem arises in one release or product family that impacts other client releases and products. Making one change and promoting that through the entire product software base is an incredible cost savings in time, money, and client good will. A lack of linkage between project events contributes to project failures where solving one problem either exacerbates a problem in another area or fails to fix the same problem elsewhere. A traceability thread allows management to examine the chain of events that caused a project to encounter difficulty as an integral process within the auditing capability of SCM. A project becomes a year late one day at a time unless the effort reported on the schedule maps to the actual work being done and traced within the software configuration management system.<br \/>\n<\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\"><b>Lack of Monitoring <\/b><br \/>\nWithout traceability and visibility, monitoring of software development projects becomes extremely difficult. Management cannot make informed decisions, and thus schedules slip further and costs continue to exceed budget.<br \/>\nThere is no way to monitor a project when the project manager has no tools to look into the actual product development within the project. SCM provides the tools that open up the process to external monitoring. With SCM in place and a policy of traceability and visibility accepted, monitoring of software development projects becomes a simple part of the overall project management task. Management makes informed decisions avoiding schedule slips and budget excesses through the monitoring available with SCM tools and the integral workings of the CCB.<br \/>\n<\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\"><b>Uncontrolled Change <\/b><br \/>\nSoftware is very malleable; it is idea-stuff, and customers constantly have new ideas for it. People would rarely ask a bridge constructor to make the kinds of changes midproject that software customers tend to request. The impact of such changes can be just as great. All SCM tools, along with the CCB, support a mechanism for appropriate change control.<br \/>\n<\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\"><b>SCM Interacts with Verification and Validation<\/b><br \/>\nSCM is most important, and most often neglected, during V&amp;V activities, which include software testing. It is employed in tracking which module versions are included in a particular system build, as well as which tests have been run. The results of the tests are tied directly to the modules or subcomponents being tested. Many times there are &#8220;action items&#8221; resulting from the tests. SCM tracks the action item status, so overall system status can be assessed well before final builds and releases are done.<br \/>\nVerification and validation testing are supported through the four basic SCM processes: identification, control, auditing, and status accounting. Let&#8217;s look at examples of V&amp;V testing in the context of each of these components. <\/span><\/span><\/p>\n<h4 style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">SCM Identification Benefits to V&amp;V<\/span><\/span><\/h4>\n<ul style=\"text-align: justify;\">\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Automatic preparation of release notes<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">List of changed software modules<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Definition of development baseline<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Generation of incident reports<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Definition of operational baseline<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Control of the configuration item identification<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Management of CCB meetings<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Prioritization of test and incident issues<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Establishment of turnover dates<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Approval of audit and test reports<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Approval of incident report resolutions<\/span><\/span><\/li>\n<\/ul>\n<h4 style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">SCM Auditing Benefits to V&amp;V<\/span><\/span><\/h4>\n<ul style=\"text-align: justify;\">\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Comparison of new baseline to previous baseline<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Assurance that standards have been met<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Audit trail of the testing process (verification, validation, and acceptance) of the software system<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Documentation of experience with technical aspects of system engineering or software engineering<\/span><\/span><\/li>\n<\/ul>\n<h4 style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">SCM Status Accounting Benefits to V&amp;V<\/span><\/span><\/h4>\n<ul style=\"text-align: justify;\">\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Logging and tracking of incident reports<\/span><\/span><\/li>\n<li><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">Publication of CCB minutes<\/span><\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><span style=\"font-size: small;\"><span style=\"font-family: verdana,geneva;\">With all of these potential benefits of SCM, project managers must address real-world considerations. Management commitment is the real key to implementing SCM on a specific project in a given organization. By treating the implementation of SCM as a project, the project plan must start at the top to secure commitment to checks and balances. Now is the time to bring out the organization&#8217;s list of project disasters to draw on management experience with their previous software project difficulties. If there are no historic disasters in the organization, or if it is inappropriate to discuss them, refer to literature articles that provide accounts of project disasters (refer to the Web resources at the end of this chapter). Finally, after putting a notional return-on-investment financial argument in place, explain the intangible benefits of SCM.<br \/>\nOne of the major sources intangible benefits is auditing. Auditing can be a heavy consumer of configuration management resources, and management may question the benefit of this kind of expenditure. Auditing pays for itself through the avoidance of larger, unnecessary expenses. Savings of 100:1 (large projects) or 4\u20136:1 (small projects) are obtained by finding and fixing problems early in the life cycle. The auditing process in SCM uncovers the areas where a little more effort or control will result in higher-quality software products and lower overall project costs.<br \/>\nThere can be audit compromises to reduce costs. As a project manager, plan audits based on both the phases of the life cycle and the frequency of builds, versions, releases, and product families. Auditing each baseline in a project while reducing the depth of each audit maintains some traceability with loss of visibility.<br \/>\nEliminating one or more audits (installation baseline, for example) maintains visibility but slightly impacts traceability.<\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p style=\"text-align: justify;\" mce_style=\"text-align: justify;\"><span mce_style=\"font-size: small;\" style=\"font-size: small;\"><span mce_style=\"font-family: verdana,geneva;\" style=\"font-family: verdana,geneva;\">Software development has traditionally suffered from producing end products with a definite lack of inherent quality. The symptoms of this quality lack are listed here:<\/span><\/span><\/p>\n<ul style=\"text-align: justify;\" mce_style=\"text-align: justify;\">\n<li><span mce_style=\"font-size: small;\" style=\"font-size: small;\"><span mce_style=\"font-family: verdana,geneva;\" style=\"font-family: verdana,geneva;\">Software development projects are often delivered late and over budget.<\/span><\/span><\/li>\n<li><span mce_style=\"font-size: small;\" style=\"font-size: small;\"><span mce_style=\"font-family: verdana,geneva;\" style=\"font-family: verdana,geneva;\">Often the delivered product does not meet customer requirements and is never used.<\/span><\/span><\/li>\n<li><span mce_style=\"font-size: small;\" style=\"font-size: small;\"><span mce_style=\"font-family: verdana,geneva;\" style=\"font-family: verdana,geneva;\">Software products simply do not work right.<\/span><\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify;\" mce_style=\"text-align: justify;\"><span mce_style=\"font-size: small;\" style=\"font-size: small;\"><span mce_style=\"font-family: verdana,geneva;\" style=\"font-family: verdana,geneva;\">As we look into the symptoms of our software development malaise, five principal issues related to software development arise.<br \/><\/span><\/span><\/p>\n<p style=\"text-align: justify;\" mce_style=\"text-align: justify;\"><span mce_style=\"font-size: small;\" style=\"font-size: small;\"><span mce_style=\"font-family: verdana,geneva;\" style=\"font-family: verdana,geneva;\"><b>Lack of Visibility <\/b><br \/>Software is conceptual in nature. Unlike a bridge, a building, or another physical structure, it is not easy to look at software and assess how close it is to completion. Without strong project management, &#8220;software is 90% complete 90% of the time.&#8221; Through the adoption of SCM policy and the definition of the configuration management model of the software under development, all CIs, components, and subcomponents are immediately visible for versions, releases, and product families.<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" mce_style=\"text-align: justify;\"><span mce_style=\"font-size: small;\" style=\"font-size: small;\"><span mce_style=\"font-family: verdana,geneva;\" style=\"font-family: verdana,geneva;\"><\/p>\n","protected":false},"author":1,"featured_media":3967,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[1824,585,2918,2915,2913,2916,858,2919,2921,2776,2920,2917,179,2435,1023,2914,2912],"class_list":["post-106","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorised","tag-control","tag-development","tag-indications","tag-lacking","tag-malaise","tag-missing","tag-monitoring","tag-scm-auditing-benefits","tag-scm-identification-benefits","tag-scm-process","tag-scm-status-accounting-benefits","tag-signs","tag-software","tag-software-configuration-management","tag-software-development","tag-software-development-malaise","tag-symptoms"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=106"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/106\/revisions"}],"predecessor-version":[{"id":3968,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/106\/revisions\/3968"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/3967"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}