silver bullet: slaying software werewolves efficiently

9
Silver Silver Silver Silver Bullet: Bullet: Bullet: Bullet: Slaying Slaying Slaying Slaying Software Software Software Software Werewolves Werewolves Werewolves Werewolves Efficiently Efficiently Efficiently Efficiently Jay Xiong NSEsoftware, LLC., USA [email protected], [email protected] Abstract Abstract Abstract Abstract This paper introduces a Silver Bullet for slaying software werewolves efficiently by shifting software engineering foundation from reductionism to complexity science. The Silver Bullet complies with the essential principles of complexity science, including the Nonlinearity Principle, the Holism Principle, the Dynamics Principle, the Self-Organization Principle, the Self-Adaptation Principle, the Openness Principle, and more, so that with the Silver Bullet almost all software engineering tasks are performed nonlinearly, holistically, globally, and quantitatively to bring revolutionary changes to almost all areas of software engineering. The Silver Bullet has been fully implemented and supported by Panorama++ platform. Theoretical comparisons and preliminary applications show that compared with the old-established software engineering paradigm, it is possible for the Silver Bullet to help software development organizations double their productivity and project success rate, halve their cost, improve the quality of their products in several orders of magnitude, and slay software werewolves ("a monster of missed schedules, blown budgets, and flawed products”) efficiently. Keywords: Silver Bullet, software engineering paradigm, modeling, testing, quality assurance, maintenance 1. 1. 1. 1. Introduction Introduction Introduction Introduction Software “Werewolves” is defined by Brooks in his paper "No Silver Bullet: Essence and Accidents of Software Engineering" published in 1984 [1] as that “Of all the monsters who fill nightmares of our folklore, none terrify more than werewolves, because they transform unexpectedly from the familiar into horrors” , “The familiar software project has something of this character (at least as seen by the nontechnical manager), usually innocent and straightforward, but capable of becoming a monster of missed schedules, blown budges, and flawed products.”. “No Silver Bullet” - Brooks also pointed out that “There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.” Here it is clear that, the “werewolves” is a monster of missed schedules, blown budges, and flawed products” – these issues relate to the entire software engineering paradigm, including the process models, the software development methodology, the quality assurance paradigm, the software testing paradigm, the project management paradigm, the software documentation paradigm, the software maintenance paradigm, the self- organization capability, the Capability Maturity of the organization and the team, and more. But the “Silver Bullet” defined by Brooks is a “single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.” – how can a single technology or management technique solve the issues of missed missed missed missed schedules, schedules, schedules, schedules, blown blown blown blown budges, budges, budges, budges, and and and and flawed flawed flawed flawed products products products products which are not only technology or technique issues but strongly related to people (the customers and the developers) and the project management? The answer is that the "Silver Bullet" defined by Brooks can not slay the “werewolves” defined by him: (1) In theory, it is impossible According to complexity science, the whole of a complex system is greater than the sum of its parts, the characteristics and behaviors of the whole of a complex system emerge from the interaction of its components, can not be inferred simply from the behavior of its individual components. It means a single development, in either technology or management technique, the individual characteristics and behaviors can not be inferred simply by the whole of the software engineering paradigm, so that it is impossible for the single development, in either technology or management technique to slay the software monster of missed schedules, blown budges, and flawed products - those problems come from the whole of the old- established software engineering paradigm. (2) From practices, it is impossible After analyzing more than 12,000 software projects, Capers Jones pointed out in his article titled Social and Technical Reasons for Software Project Failuresthat Major software projects have been troubling business activities for more than 50 years. Of any known business activity, software projects have the highest probability of being cancelled or delayed. Once delivered, these projects display excessive error quantities and low levels of reliability. Both technical and social issues are associated with software project failures. Among the social issues that contribute to project failures are the rejections of accurate estimates and the forcing of projects to adhere to schedules that are essentially impossible. Among the technical issues that contribute to project failures are the lack of modern estimating approaches and the failure to plan for requirements growth during development. However, it is not a law of nature that software projects will run late, be cancelled, or be unreliable after deployment. A careful program of risk analysis and risk abatement can lower the probability of a major software disaster.”[2] – it means that the issues of missed schedules, blown budges, and flawed products are not only technology issues, but also social issues, can never be solved by a single development, in either technology or management technique. With the same reasons, CMMI (Capability Maturity Model Integration, focusing on Software Process Improvement and project management improvement only) or SEMAT (Software Engineering Method and Theory, mainly focusing on the improvement of software development methodology) without bringing revolutionary changes to the entire software engineering paradigm will not be able to efficiently slay software “werewolves” too.

Upload: others

Post on 19-Oct-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Silver Bullet: Slaying Software Werewolves Efficiently

SilverSilverSilverSilver Bullet:Bullet:Bullet:Bullet: SlayingSlayingSlayingSlaying SoftwareSoftwareSoftwareSoftwareWerewolvesWerewolvesWerewolvesWerewolves EfficientlyEfficientlyEfficientlyEfficientlyJay Xiong

NSEsoftware, LLC., [email protected], [email protected]

AbstractAbstractAbstractAbstractThis paper introduces a Silver Bullet for slaying software werewolves efficiently by shifting software engineering foundationfrom reductionism to complexity science. The Silver Bullet complies with the essential principles of complexity science,including the Nonlinearity Principle, the Holism Principle, the Dynamics Principle, the Self-Organization Principle,the Self-Adaptation Principle, the Openness Principle, and more, so that with the Silver Bullet almost all softwareengineering tasks are performed nonlinearly, holistically, globally, and quantitatively to bring revolutionary changes to almost allareas of software engineering. The Silver Bullet has been fully implemented and supported by Panorama++ platform. Theoreticalcomparisons and preliminary applications show that compared with the old-established software engineering paradigm, it is possible forthe Silver Bullet to help software development organizations double their productivity and project success rate, halve their cost, improvethe quality of their products in several orders of magnitude, and slay software werewolves ("a monster of missed schedules,blown budgets, and flawed products”) efficiently.

Keywords: Silver Bullet, software engineering paradigm, modeling, testing, quality assurance, maintenance

1.1.1.1. IntroductionIntroductionIntroductionIntroductionSoftware “Werewolves” is defined by Brooks in his paper

"No Silver Bullet: Essence and Accidents of SoftwareEngineering" published in 1984 [1] as that “Of all the monsterswho fill nightmares of our folklore, none terrify more thanwerewolves, because they transform unexpectedly from thefamiliar into horrors” , “The familiar software project hassomething of this character (at least as seen by the nontechnicalmanager), usually innocent and straightforward, but capable ofbecoming a monster of missed schedules, blown budges, andflawed products.”.

“No Silver Bullet” - Brooks also pointed out that “There isno single development, in either technology or managementtechnique, which by itself promises even one order-of-magnitudeimprovement within a decade in productivity, in reliability, insimplicity.”

Here it is clear that, the “werewolves” is a monster of missedschedules, blown budges, and flawed products” – these issuesrelate to the entire software engineering paradigm, including theprocess models, the software development methodology, thequality assurance paradigm, the software testing paradigm, theproject management paradigm, the software documentationparadigm, the software maintenance paradigm, the self-organization capability, the Capability Maturity of theorganization and the team, and more. But the “Silver Bullet”defined by Brooks is a “single development, in either technologyor management technique, which by itself promises even oneorder-of-magnitude improvement within a decade in productivity,in reliability, in simplicity.” – how can a single technology ormanagement technique solve the issues offff missedmissedmissedmissed schedules,schedules,schedules,schedules,blownblownblownblown budges,budges,budges,budges, andandandand flawedflawedflawedflawed productsproductsproductsproducts which are not onlytechnology or technique issues but strongly related to people (thecustomers and the developers) and the project management?

The answer is that the "Silver Bullet" defined by Brooks cannot slay the “werewolves” defined by him:(1) In theory, it is impossibleAccording to complexity science, the whole of a complexsystem is greater than the sum of its parts, the characteristicsand behaviors of the whole of a complex system emergefrom the interaction of its components, can not be inferredsimply from the behavior of its individual components. It means

a single development, in either technology or managementtechnique, the individual characteristics and behaviors can notbe inferred simply by the whole of the software engineeringparadigm, so that it is impossible for the single development, ineither technology or management technique to slay the softwaremonster of missed schedules, blown budges, and flawedproducts - those problems come from the whole of the old-established software engineering paradigm....

(2) From practices, it is impossibleAfter analyzing more than 12,000 software projects, CapersJones pointed out in his article titled ““““Social and TechnicalReasons for Software Project Failures”””” that “Major softwareprojects have been troubling business activities for more than50 years. Of any known business activity, software projectshave the highest probability of being cancelled or delayed.Once delivered, these projects display excessive error quantitiesand low levels of reliability. Both technical and social issuesare associated with software project failures. Among the socialissues that contribute to project failures are the rejections ofaccurate estimates and the forcing of projects to adhere toschedules that are essentially impossible. Among the technicalissues that contribute to project failures are the lack of modernestimating approaches and the failure to plan for requirementsgrowth during development. However, it is not a law of naturethat software projects will run late, be cancelled, or beunreliable after deployment. A careful program of risk analysisand risk abatement can lower the probability of a majorsoftware disaster.”[2] – it means that the issues of missedschedules, blown budges, and flawed products are not onlytechnology issues, but also social issues, can never be solved bya single development, in either technology or managementtechnique.With the same reasons, CMMI (Capability Maturity Model

Integration, focusing on Software Process Improvement andproject management improvement only) or SEMAT (SoftwareEngineering Method and Theory, mainly focusing on theimprovement of software development methodology)without bringing revolutionary changes to the entire softwareengineering paradigm will not be able to efficiently slay software“werewolves” too.

Page 2: Silver Bullet: Slaying Software Werewolves Efficiently

This paper describes Silver Bullet which is, in fact, acomplete revolutionary software engineering paradigm based oncomplexity science.

2.2.2.2. WhatWhatWhatWhat DoesDoesDoesDoes aaaa QualifiedQualifiedQualifiedQualified SilverSilverSilverSilver BulletBulletBulletBullet Mean?Mean?Mean?Mean?

Before answering this question, let us consider what make thesoftware “werewolves” exist:(a) The existing process models (no matter if they are waterfallmodels, incremental development models which is “a series ofWaterfalls””””[[[[3333]]]],,,, or iterative development models on which eachiteration is a waterfall) which are based on reductionism andsuperposition principle that the whole of a complex system isthe sum of its components, so that with them almost all softwareprocess tasks and activities are performed linearly, partially, andlocally without upstream movement at all, making the defectintroduced into a software product in upstream easy to propagatedown to the maintenance phase and the final defect removal costincrease tenfold many times.

(b) The software development methodologies based on linearprocess, reductionism, superposition, and constructive holismprinciple, so that with them almost all software developmenttasks and activities are performed linearly, partially, and locallyfor the components of a software product first, then thecomponents are “assembled” (CMMI) to form the whole of thesoftware product, making the quality of the software productvery hard to ensured, and software maintenance much hard toperform.

(c) The top-down software modeling approaches including MDA,MDD, and MDE based on UML, with which the obtainedmodels/diagrams are not traceable for static defect removal, notexecutable for debugging, and not dynamically testable fordynamic defect removal, so that nobody knows whether they arecomplete, correct, and consistent with each other - t they are notqualified as the road map for project implementation.

(d) The software testing paradigm which ignores the fact that mostcritical software defects are introduced to a software product inthe requirement development phase and the product designphase, can only be dynamically used after coding, so that NIST(National Institute of Standards and Technology) concluded that“Briefly, experience in testing software and systems has shownthat testing to high degrees of security and reliability is from apractical perspective not possible. Thus, one needs to buildsecurity, reliability, and other aspects into the system designitself and perform a security fault analysis on theimplementation of the design.” (("Requiring SoftwareIndependence in VVSG 2007: STS Recommendations for theTGDC," November 2006,,,,http://vote.nist.gov/DraftWhitePaperOnSIinVVSG2007-20061120.pdf....). Even if a defect has been found throughdynamic software testing after coding, the defect removal costwill increase tenfold several times.

(e) The quality assurance paradigm base on inspection andsoftware testing after production, which violates W. EdwardsDeming’s product quality principle that “Cease dependence oninspection to achieve quality. Eliminate the need for inspectionon a mass basis by building quality into the product in the firstplace.” [4], making software quality hard to ensure.

(f) The software visualization paradigm which mainly supportsvisual modeling only, does not make the entire softwaredevelopment and maintenance process and the work productsvisible, so that software engineers and maintainers need to spendmuch more time to understand and maintain a software product.

(g) The software documentation paradigm with which thedocuments are not traceable with the source code, and often do

not consistent with the source code, making a software hard tounderstand and hard to maintain.

(h) The software maintenance paradigm with which theimplementation of requirement changes and code modificationsare performed blindly, partially, and locally, so that fixing adefect has a substantial (20-50 percent) chance of introducinganother[1], making a software product unstable day by day.

(i) The project management paradigm with which software projectmanagement process and the software development process areseparated, the software management documents are nottraceable to the implementation of requirements and the sourcecode, making the schedule is hard to meet, and the budget ishard to control.

(j) The corresponding software development techniques and toolswhich are designed to work with linear process models, hard tobe used to handle a complex software which is nonlinearcomplex system.

(k) The entire software engineering paradigm which is based onreductionism and superposition principle, hard to efficientlyhandle a nonlinear software system where a small change maybring big impact to the entire system - Butterfly-Effects.

It means that almost all parts of the old-established softwareengineering paradigm are making the possibility for the softwarewerewolves to exist.

Now it is the time we can answer the question: only such aSilver Bullet can be used to slay software werewolves:(1) it is based on complexity science, complying with the essentialprinciples of complexity science, particularly the Nonlinearprinciple and the Holism principle, so that with it almost allsoftware development tasks and activities are performedholistically, globally, and quantitatively;

(2) it not only can bring revolutionary changes to the all parts ofthe software engineering paradigm, but also can make therequired characteristics and behaviors of the whole emerge fromthe iteration of its all parts.In fact, aaaa qualifiedqualifiedqualifiedqualified ““““SilverSilverSilverSilver BulletBulletBulletBullet”””” beingbeingbeingbeing ableableableable totototo slayslayslayslay softwaresoftwaresoftwaresoftware

““““werewolveswerewolveswerewolveswerewolves”””” meansmeansmeansmeans aaaa completecompletecompletecomplete revolutionrevolutionrevolutionrevolution inininin softwaresoftwaresoftwaresoftwareengineeringengineeringengineeringengineering throughthroughthroughthrough paradigm-shiftparadigm-shiftparadigm-shiftparadigm-shift fromfromfromfrom thethethethe oldoldoldold oneoneoneone basedbasedbasedbased ononononreductionismreductionismreductionismreductionism andandandand superpositionsuperpositionsuperpositionsuperposition principleprincipleprincipleprinciple totototo aaaa newnewnewnew oneoneoneone basedbasedbasedbasedonononon complexitycomplexitycomplexitycomplexity science.science.science.science.

3.3.3.3. AAAA SilverSilverSilverSilver BulletBulletBulletBullet forforforfor SlayingSlayingSlayingSlaying SoftwareSoftwareSoftwareSoftwarewerewolveswerewolveswerewolveswerewolves EfficientlyEfficientlyEfficientlyEfficiently

A Silver Bullet[5][6] with the support platform, Panorama++,consisting of more than 10,000 function points and one millionlines of source code) for slaying software werewolves efficientlyhas been innovated through the "Five-Dimensional StructureSynthesis Method" (FDS) framework (Fig.1) and implemented byme and my colleagues. Silver Bullet is based on complexityscience by complying with the essential principles of complexityscience, particularly the Nonlinearity principle and the Holismprinciple so that with Silver Bullet almost all software engineeringtasks are performed nonlinearly, holistically, globally, andquantitatively to bring revolutionary changes to almost all areas ofsoftware engineering, including•••• TheTheTheThe foundationfoundationfoundationfoundationFromFromFromFrom: that based on reductionism and superposition principle

that the whole is the sum of its parts, so that nearly allsoftware development tasks/activities are performed linearly,partially, and locally, such as the implementation ofrequirement changes.

Page 3: Silver Bullet: Slaying Software Werewolves Efficiently

ToToToTo: that based on complexity science - to comply with theessential principles of complexity science, particularly theNonlinear Principle and the Holism Principle that the wholeof a complex system is greater than the sum of its parts - thecharacters and the behavior of a complex system is anemergent property of the interactions of its components(agents), so that with Silver Bullet nearly all softwaredevelopment tasks/activities are performed nonlinearly,holistically, and globally to prevent defects in the entiresoftware life-cycle – for instance, if there is a need to changea requirement, with Silver Bullet and the support platformPanorama++ the implementation of the change will beperformed nonlinearly, holistically, and globally throughvarious bidirectional traceabilities: (1) Performs forwardtracing for the requirement change (through the correspondingtest cases) to determine what modules should be modified. (2)Performs backward tracing to check related requirements ofthe modules to be modified for preventing requirementconflicts. (3) Checks what other modules may also need to bechanged with the modification by tracing the modules to findall related modules on the corresponding call graph shown inJ-Chart innovated by me. (4) Checks where the globalvariables and static variables may be affected by themodification. (5) After modification, checks all relatedstatements calling the modified module for preventinginconsistency defects between them using the diagrammedsource code with traceability shown in J-Diagram notationsinnovated by me. (6) Performs efficient regression testingthrough backward tracing from the modified module orstatement to find the related test cases. (7) Performsbackward tracing to find and modify inconsistent documentsafter code modification.

•••• TheTheTheThe processprocessprocessprocess model(s)model(s)model(s)model(s)FromFromFromFrom: linear ones based on reductionism principle and

superposition principle, including the waterfall models, theincremental development models, the iterative developmentmodels, or the incremental and iterative development models,with which there is only one track in one direction - noupstream movement at all, always going forward from theupper phases to the lower phases, so that defects introducedin the upper phases will easily propagate to the lower phasesto make the defect removal cost greatly increase.

ToToToTo: a nonlinear one (the Silver Bullet process model, see Fig. 2and Fig. 3) based on complexity science with this model thereare multiple tracks in two directions through varioustraceabilities to prevent defects and defect propagation, sothat experience and ideas from each downstream part of theconstruction process may leap upstream, sometimes morethan one stage, and affect the upstream activity. With SilverBullet, the software development process and softwaremaintenance process are combined together closely, thesoftware development process and the project managementprocess are also combined together closely so that the projectmanagement documents are traceable with theimplementations of software requirements and the sourcecode. With the Silver Bullet process model, requirementvalidation and verification can be done easily through forwardtraceability in parallel, and code modification can be donewith side-effect prevention through backward traceability inparallel too.

• thethethethe softwaresoftwaresoftwaresoftware developmentdevelopmentdevelopmentdevelopment methodologiesmethodologiesmethodologiesmethodologiesFromFromFromFrom: the software development methods based on Constitutive

holism ---- ““““buildingbuildingbuildingbuilding” a software system with its components –the components are developed first, then the system of asoftware product is built through the integration of the

components developed. From the point of view of qualityassurance, those methodologies are test-driven but thefunctional testing is performed after coding; it is too late.These methodologies handle a software product as a machinerather than a logical product created by human beings. Theyall comply with the reductionism principle and superpositionprinciple.

ToToToTo: the software development method (Silver Bullet softwaredevelopment method, see Fig. 4) based on Generative Holismof complexity science - having the whole executable dummysystem first, then ““““growinggrowinggrowinggrowing upupupup” with its components. Fromthe point of view of quality assurance, it is defect-preventiondriven to ensure the quality of a software product.

• TheTheTheThe softwaresoftwaresoftwaresoftware modelingmodelingmodelingmodeling approachesapproachesapproachesapproachesFrom:From:From:From: that based on reductionism, offering linear, partial, local,

and static modeling approaches, the obtained models/diagramfrom which are not traceable for static defect removal, notexecutable for debugging, and not dynamically testable fordynamic defect removal, so that it is very hard to ensure thequality of the modeling results.

To:To:To:To: that based complexity science, offering nonlinear, holistic,global, and dynamic modeling approach, the obtainedmodels/diagram from which are traceable for static defectremoval, executable for debugging through the correspondingsource code of a stub program using dummy modules orregular programs in reverse engineering, and dynamicallytestable for dynamic defect removal to ensure the quality ofthe obtained modeling results.

• TheTheTheThe softwaresoftwaresoftwaresoftware testingtestingtestingtesting paradigmparadigmparadigmparadigmFrom:From:From:From: that mainly based on functional testing using the Black-

Box testing method being applied after the entire product isproduced, plus structural testing using White-Box testingmethod being applied after each software unit is coded. Bothtesting methods are applied separately without internal logicconnections.

To:To:To:To: that mainly based on the Transparent-box method (Fig.5)innovated by me to combine functional testing and structuraltesting together seamlessly: to each set of inputs, it not onlyverifies whether the output (if any, can be none) is the sameas the expected value, but also helps users check whether theexecution path covers the expected path, with the capability toautomatically establish bidirectional traceability among all ofthe related documents and test cases and the source code forhelping users remove inconsistency defects.

• TheTheTheThe qualityqualityqualityquality assuranceassuranceassuranceassurance paradigmparadigmparadigmparadigmFrom:From:From:From: a test-driven approach, mainly using black-box testing

method plus structural testing method and code inspectionafter coding.

ToToToTo: NSE-SQA – defect prevention-driven approach innovated byme, mainly using the Transparent-box testing method in allphases of a software development life-cycle from the first stepto the end because having an output is no longer a conditionto use the Transparent-box testing method dynamically. Thepriority of NSE-SQA for ensuring the quality of a softwarebeing developed is ordered as (1) defect prevention; (2) defectpropagation prevention; (3) Refactoring applied to highlycomplex modules and module(s) that are performancebottlenecks; (4) Deep and broad testing.

• TheTheTheThe softwaresoftwaresoftwaresoftware visualizationvisualizationvisualizationvisualization paradigmparadigmparadigmparadigmFromFromFromFrom: drawing the diagrams manually or using graphic editorsor using a tool to generate partial charts/diagrams which areneither interactive nor traceable in most cases. Even if somecharts/diagrams for an entire software system can begenerated, they are still not useful because there are too manyconnection lines to make the charts/diagrams hard to view and

Page 4: Silver Bullet: Slaying Software Werewolves Efficiently

hard to understand without a capability to trace an elementwith all the related elements.

To:To:To:To: holistic, interactive, traceable, and virtual softwarevisualization paradigm innovated by me to make an entiresoftware development life-cycle visible. The charts/diagramsare dynamically generated from several Hash tables from thedatabase and the source code through stub programming orreverse engineering virtually without storing the hard copiesin hard disk or memory to greatly reduce the space. Thegenerated charts/diagrams are interactive and traceablebetween related elements – users can highlight an elementwith all of the related elements easily.

• TheTheTheThe documentationdocumentationdocumentationdocumentation paradigmparadigmparadigmparadigmFrom:From:From:From: (a) separated from the source code without bi-directional

traceability; (b) inconsistent with the source code after codemodifications; (c) requiring huge disk space and memoryspace to store the graphical documents; (d) the display andoperation speed is very slow; (e) hard to update; (f) not veryuseful for software product understanding, testing, andmaintenance.

ToToToTo: (a) managed together with the source code based onbidirectional traceability; (b) consistent with the source codeafter code modification; (c) most documents are dynamicallygenerated from several Hash tables and exist virtually withouthuge storage space; (d) the display and operation speed isvery fast; (e) most documents can be updated automatically;(f) very useful for software product understanding, testing,and maintenance.

• TheTheTheThe softwaresoftwaresoftwaresoftware maintenancemaintenancemaintenancemaintenance paradigmparadigmparadigmparadigmFrom:From:From:From: that based on reductionism, with which software

maintenance is performed blindly, partially, and locallywithout the capability to prevent the side-effects for theimplementation of requirement changes or code modifications,takes about 75% of the total effort and cost in the softwaresystem development in most software organizations.

ToToToTo: that based on complexity science with which softwaremaintenance is performed visually, holistically, and globallyusing a systematic, disciplined, quantifiable approachinnovated by me to prevent the side-effects for theimplementation of requirement changes or code modificationsthrough various automated traceabilities; takes only about25% of the total effort and cost in software systemdevelopment, because with Silver Bullet there is no bigdifference between the software development process and thesoftware maintenance process – both support requirementchanges or code modification with side-effect prevention.

• TheTheTheThe softwaresoftwaresoftwaresoftware projectprojectprojectproject managementmanagementmanagementmanagement paradigmparadigmparadigmparadigmFrom:From:From:From: that based on reductionism with which software project

management is performed separately from the softwareproduct development process, often makes the necessaryactions being done too late.

ToToToTo: that based on complexity science with which software projectmanagement is performed closely with the softwaredevelopment process, makes the project managementdocuments such as the product development schedule, thecost reports, and the progress reports traceable with therequirement implementation and the corresponding test casesand the source code, making the necessary actions being donein time.

4.4.4.4. TheTheTheTheMajorMajorMajorMajor FeatureFeatureFeatureFeature andandandand CharacteristicsCharacteristicsCharacteristicsCharacteristics ofofofofNSENSENSENSE (Silver(Silver(Silver(Silver Bullet)Bullet)Bullet)Bullet)

The Major Feature and Characteristics of NSE(SilverBullet) are listed as follows:

• ItItItIt isisisis basedbasedbasedbased onononon aaaa solidsolidsolidsolid foundationfoundationfoundationfoundation ---- complexitycomplexitycomplexitycomplexityscience:science:science:science: the entire NSE paradigm is established bycomplying with the essential principles of complexityscience, particularly the Nonlinearity principle and theHolism principle.

• ItItItIt isisisis completecompletecompletecomplete –––– NSE itself is complete, including itsown process model, software developmentmethodology, dynamic modeling approach,visualization paradigm, testing paradigm, QAparadigm, documentation paradigm, maintenanceparadigm, management paradigm, support techniquesand tools and platform.

• ItItItIt bringsbringsbringsbrings revolutionaryrevolutionaryrevolutionaryrevolutionary changeschangeschangeschanges totototo almostalmostalmostalmost allallallallaspectsaspectsaspectsaspects ofofofof softwaresoftwaresoftwaresoftware engineeringengineeringengineeringengineering –––– it makes themchanged from the old one based on linear processesand the superposition principle to the new one basedon complexity science.

• ItItItIt offersoffersoffersoffers bothbothbothboth ““““whatwhatwhatwhat totototo dodododo”””” andandandand ““““howhowhowhow totototo dodododo”””” ––––different form some popular models which only offer“what to do” but ignore “how to do”, NSE offers both.

• WithWithWithWith itititit almostalmostalmostalmost allallallall softwaresoftwaresoftwaresoftware engineeringengineeringengineeringengineeringtasks/activitiestasks/activitiestasks/activitiestasks/activities areareareare performedperformedperformedperformed holisticallyholisticallyholisticallyholistically andandandandgloballygloballygloballyglobally –––– with NSE, from requirement developmentdown to maintenance, all tasks/activities areperformed holistically and globally with defectprevention including side-effect prevention for theimplementation of requirement changes and codemodification.

• ItItItIt combinescombinescombinescombines thethethethe softwaresoftwaresoftwaresoftware developmentdevelopmentdevelopmentdevelopment processprocessprocessprocess andandandandsoftwaresoftwaresoftwaresoftware maintenancemaintenancemaintenancemaintenance processprocessprocessprocess togethertogethertogethertogether closelycloselycloselyclosely ––––with NSE, requirement changes are welcome at anystage and implemented with side-effect preventionthough various bidirectional traceabilities .

• ItItItIt combinescombinescombinescombines thethethethe softwaresoftwaresoftwaresoftware developmentdevelopmentdevelopmentdevelopment processprocessprocessprocess andandandandsoftwaresoftwaresoftwaresoftware managementmanagementmanagementmanagement processprocessprocessprocess togethertogethertogethertogether closelycloselycloselyclosely –––– itmakes all documents including the managementdocuments such the schedule chart and the cost reportstraceable to the implementation of requirements andthe source code to control a software project better andto find and fix the related issues in time.

• ItItItIt ensuesensuesensuesensues softwaresoftwaresoftwaresoftware productproductproductproduct qualityqualityqualityquality fromfromfromfrom thethethethe firstfirstfirstfirststepstepstepstep totototo thethethethe finalfinalfinalfinal stepstepstepstep throughthroughthroughthrough defectdefectdefectdefect preventionpreventionpreventionpreventionandandandand dynamicdynamicdynamicdynamic testingtestingtestingtesting usingusingusingusing thethethethe Transparent-boxTransparent-boxTransparent-boxTransparent-boxtestingtestingtestingtesting methodmethodmethodmethod –––– NSE offers many means to preventdefects introduced into a software product by people(the customers and the developers) with dynamictesting using the Transparent-box testing methodwhich combines functional testing and structuraltesting seamlessly, can be dynamically used in thecases where there is no real output from the softwaresystem such as a dummy system with dummy modulesonly without detailed program logic.

• WithWithWithWith NSENSENSENSE thethethethe designdesigndesigndesign becomesbecomesbecomesbecomes pre-codingpre-codingpre-codingpre-coding (top-(top-(top-(top-down),down),down),down), andandandand thethethethe codingcodingcodingcoding becomesbecomesbecomesbecomes furtherfurtherfurtherfurther designdesigndesigndesign(bottom-up)(bottom-up)(bottom-up)(bottom-up) – with NSE, in most cases the designthrough dummy programming using dummy modulesbecomes pre-coding, and the coding becomes furtherdesign through reverse engineering. ItItItIt makesmakesmakesmakessoftwaresoftwaresoftwaresoftware documentsdocumentsdocumentsdocuments traceabletraceabletraceabletraceable totototo andandandand fromfromfromfrom sourcesourcesourcesourcecodecodecodecode –––– with NSE all related documents and test casesand the source code are traceable forwards orbackwards though automated and self-maintainable

Page 5: Silver Bullet: Slaying Software Werewolves Efficiently

traceabilities.•••• ItItItIt supportssupportssupportssupports realrealrealreal timetimetimetime communicationcommunicationcommunicationcommunication throughthroughthroughthrough

traceabletraceabletraceabletraceable webwebwebweb pagespagespagespages andandandand traceabletraceabletraceabletraceable technicaltechnicaltechnicaltechnical forumforumforumforum– with NSE, the bidirectional traceability is extendedto include web pages and BBS for real timecommunication.

•••• ItItItIt makesmakesmakesmakes thethethethe entireentireentireentire softwaresoftwaresoftwaresoftware developmentdevelopmentdevelopmentdevelopment processprocessprocessprocessvisiblevisiblevisiblevisible fromfromfromfrom firstfirstfirstfirst stepstepstepstep downdowndowndown totototo thethethethe finalfinalfinalfinal stepstepstepstep – theNSE visualization paradigm is capable of making theentire software development process visible throughdummy programming and reverse engineering.

•••• ItItItIt makesmakesmakesmakes aaaa softwaresoftwaresoftwaresoftware productproductproductproduct muchmuchmuchmuch easiereasiereasiereasier totototo read,read,read,read,understand,understand,understand,understand, test,test,test,test, andandandand maintainmaintainmaintainmaintain –––– with NSE asoftware is represented graphically and shown in boththe overall structure of the entire product and thedetailed logic diagram and control flow diagram withvarious traceabilities and that the untested conditionsand branches are highlighted.

• ItItItIt cancancancan bebebebe appliedappliedappliedapplied atatatat anyanyanyany timetimetimetime inininin anyanyanyany stagestagestagestage forforforfor aaaasoftwaresoftwaresoftwaresoftware productproductproductproduct developmentdevelopmentdevelopmentdevelopment usingusingusingusing anyanyanyany otherotherotherothermethodmethodmethodmethod originallyoriginallyoriginallyoriginally –––– NSE can be added onto asoftware product being developed using any otherapproach by adding bookmarks in the relateddocuments and modifying the test cases to use somekeywords to indicate the format of a document and thefile path plus the bookmark, then other work can beperformed by the NSE support platform automatically.

• ItItItIt requiresrequiresrequiresrequires muchmuchmuchmuch lesslesslessless time,time,time,time, resources,resources,resources,resources, andandandand man-man-man-man-powerpowerpowerpower totototo apply,apply,apply,apply, comparedcomparedcomparedcompared withwithwithwith otherotherotherother existingexistingexistingexistingapproachesapproachesapproachesapproaches – one just needs to re-organize thedocument hierarchy using bookmarks and modifyingthe test case description using some simple rules; allof the other work can be performed automatically bythe NSE support platform with many automated andintelligent tools integrated together, including thecreation of huge amount of traceable and virtualdocuments based on static and dynamic measurementof the software, the diagramming of the entiresoftware product to generate holistic and detailedsystem call graphs and class inheritance charts, theholistic and detailed test coverage measurement resultsshown in J-Chart and J-Diagram or J-Flow diagramwith untested conditions and branches highlighted, theholistic and detailed quality measurement resultsshown in Kiviat diagram for the entire softwareproduct and each class or function, the holistic anddetailed performance measurement results shown in J-Chart and bar chart with branch execution frequencymeasurement result shown in J-Diagram or J-FlowDiagram to locate the performance bottleneck better,the software logic analysis results shown in J-Diagramwith various kinds of traceability for semi-automatedcode inspection and walk through, the software controlflow analysis results shown in J-Flow with untestedconditions and branches highlighted, the GUI testoperation capture and selective playback forregression testing after code modification, the test caseefficiency analysis and test case minimization to forma minimized set of test cases to replace the all testcases to speed up the regression testing process andgreatly save the required time and resources, theestablishment of bidirectional traceability among allrelated documents and the test cases and the sourcecode, the generation of more than 100 reports based on

the static and dynamic measurement of the software –the reports can be stored in HTML format for beingused on the internet, the Cyclomatic complexitymeasurement results shown in J-Chart and J-Flowdiagram for performing refactoring on the overcomplicated modules to reduce possible defects, andmore.

• ItItItIt isisisis possiblepossiblepossiblepossible forforforfor NSENSENSENSE totototo helphelphelphelp softwaresoftwaresoftwaresoftwareorganizationsorganizationsorganizationsorganizations doubledoubledoubledouble theirtheirtheirtheir productivity,productivity,productivity,productivity, halvehalvehalvehalve theirtheirtheirtheircost,cost,cost,cost, andandandand reducereducereducereduce 99.99%99.99%99.99%99.99% defectsdefectsdefectsdefects inininin theirtheirtheirtheir softwaresoftwaresoftwaresoftwareproductsproductsproductsproducts –––– with NSE the quality of a software productis ensured from the first step through defect preventionand defect propagation prevention rather than testingafter coding, so that the amount of defects introducedinto a software product is greatly reduced, and that thedefects propagating to the maintenance phase are alsogreatly reduced; the software maintenance isperformed holistically and globally with side-effectprevention; the regression testing after softwaremodification is performed using a minimized test caseset and some test cases selected through backwardtraceability from the modified modules and branches;software testing is performed in the entire softwaredevelopment process dynamically using theTransparent-method which combines functionaltesting and structural testing together seamlessly, andcan be dynamically used in the case that there is no areal output in running some test cases, when it is usedin the requirement development phase and thesoftware design phase.

5555.... ApplicationsApplicationsApplicationsApplications

Theory comparison and preliminary applications show thatcompared with the old one it is possible for Silver Bullet to helpusers double their productivity and project success rate, halve theircost, and remove 99.99% of the defects in their software products.

(a)(a)(a)(a) EfficientlyEfficientlyEfficientlyEfficiently SolvingSolvingSolvingSolving thethethethe IssueIssueIssueIssue ofofofof MissedMissedMissedMissed SchedulesSchedulesSchedulesSchedules

(1) Helping the project development team and the customerwork together closely to assign priority to requirementsaccording to the importance (see the preprocess partshown in Fig. 1), so that the important requirementswill be implemented early to meet the market needs. Ifnecessary some optional requirements can betemporally ignored .

(2) Making the project plan, the schedule chart and otherrelated documents traceable with the implementationsof requirements and the source code as shown in Fig. 6,so that the management team can find and solve theschedule issue in time.

(3) Helping the software development team set a projectweb site and technical forum, and making the webpages and the topic pages of the technical forumtraceable to the implementations of requirements andthe source code, so that any schedule delay will beknown by the members of the team, and each membermay make his/her contribution to solve the issuequickly – see Fig. 7 an application example.

(4) See section (c(c(c(c) “Efficiently Solving the Issue of FlawedProducts – Removing More Than 99.99% of theDefects” –––– through greatly reducing the amount of

Page 6: Silver Bullet: Slaying Software Werewolves Efficiently

defects to help the development team much easy tomeet the project development schedule.

(5) See section (d) “How Is It Possible for NSE to HelpUsers Double Their Productivity” - through defectprevention and defect propagation prevention inupstream to greatly reduce the defects propagated intothe downstream, and side-effect prevention in theimplementation of requirement changes and codemodifications to make it possible to reduce 2/3 of thetotal effort spent in software changes and maintenanceto help the development team to meet the projectdevelopment schedule better.

(b)(b)(b)(b) EfficientlyEfficientlyEfficientlyEfficiently SolvingSolvingSolvingSolving thethethethe IssueIssueIssueIssue ofofofof BlownBlownBlownBlown BudgetsBudgetsBudgetsBudgets

(1) Assigning priority to the requirements according to theimportance ( (a) must have, (b) should have, (c) betterto have, (d) may have or optional…) to make thecritical and important requirements be implementedearly to form an essential working version (about 20%of the requirements) first, then making the workingproduct grow up incrementally according to theassigned priority (see Fig. 8 and Fig. 9), to avoid theissue of blown budgets – if necessary some optionalrequirements can be ignored or implemented in thefuture.

(2) Complying with the Generative Holism principle ofcomplexity science, helping users to form the whole ofa software product first through dummy programmingas an embryo through the use of HAETVE (Holistic,Actor-Action and Event-Response drive, Traceable,Visual, and Executable) technique for requirementdevelopment, and the SynthesisSynthesisSynthesisSynthesis DesignDesignDesignDesign andandandandIncrementalIncrementalIncrementalIncremental growinggrowinggrowinggrowing upupupup (Implementation(Implementation(Implementation(Implementation andandandandIntegration)Integration)Integration)Integration) Technique for product design, to helpusers estimate the cost/budget better.

(3) Making the cost estimation chart, the budget plan, andother related documents traceable with the requirementimplementation and the source code, so that themanagement team can know the situation in time andcontrol the budget better.

(4) Making the web pages or topic pages of the technicalforum traceable to the implementations of requirementsand the source code, so that any budget issue can beknown by the members of the team early, and eachmember may make his/her contribution to solve theissue quickly.

(5) Helping users to make the product grow upincrementally, according to the requirement priority.

(6) See section (c(c(c(c) “Efficiently Solving the Issue of FlawedProducts – Removing More Than 99.99% of theDefects” –––– through greatly reducing the amount ofdefects to help the development team much easy todevelop the product within the budget.

(7) See section (d) “How Is It Possible for NSE to HelpUsers Double Their Productivity” - through defectprevention and defect propagation prevention inupstream to greatly reduce the defects propagated intothe downstream, and side-effect prevention in theimplementation of requirement changes and codemodifications to make it possible to reduce 2/3 of thetotal effort spent in software maintenance to help the

development team develop the product within thebudget better.

(8) See section (e) “How Is It Possible for NSE to HelpUsers Halve Their Cost” – through greatly reducing thecost to further ensuing the product being developedunder the budget.

(c)(c)(c)(c) EfficientlyEfficientlyEfficientlyEfficiently SolvingSolvingSolvingSolving thethethethe IssueIssueIssueIssue ofofofof FlawedFlawedFlawedFlawed ProductsProductsProductsProducts ––––RemovingRemovingRemovingRemoving MoreMoreMoreMore ThanThanThanThan 99.99%99.99%99.99%99.99% ofofofof thethethethe DefectsDefectsDefectsDefects mainlymainlymainlymainlythroughthroughthroughthrough DefectDefectDefectDefect PreventionPreventionPreventionPrevention andandandand DefectDefectDefectDefect PropagationPropagationPropagationPropagationPreventionPreventionPreventionPrevention

(1) Helping users efficiently remove defects particularlyupstream defects through* defect prevention by (a) providing some templates

such as requirement specification template (seeappendix A) to prevent something missing; (b)helping users apply the HAETVE technique forrequirement development though dummyprogramming and making the dummy programexecutable through dynamical testing using theTransparent-box method combining functional andstructural testing together seamlessly, can be useddynamically in the entire software developmentlifecycle; (c) supporting incremental coding toprevent inconsistency between the interfaces;

* defect propagation prevention mainly throughdynamic testing using the Transparent-box testingwith capability to perform MC/DC (ModifiedCondition/Decision Coverage) test coveragemeasurement, memory leak and usage violationcheck, performance analysis, and the capability toautomatically establish bidirectional traceability tohelp users check and remove the inconsistencydefects among the related documents and the sourcecode, plus inspection using traceable documents andsource code.

* refactoring for those modules with higher Cylormaticcomplexity (the number of decision statements) andperformance bottleneck modules with side-effectprevention – often 20% higher complex moduleshave about 80% of the defects.

(2) supporting quality assurance from the first step to theend through dynamic testing using the Transparent-boxmethod;

(3) providing techniques and tools for qualitymeasurement to the entire software product and eachcomponent for finding and solving the qualityproblems in time.

(4) helping users perform software maintenanceholistically and globally with side-effects preventionthough various bidirectional traceability.

(5) see section (f) “How Is It Possible for NSE to HelpUsers Reduce the Risk” and section (g) “EfficientlyHandling the Issue of Changeability” for moreinformation about quality assurance with NSE.

(d)(d)(d)(d) HowHowHowHow IsIsIsIs ItItItIt PossiblePossiblePossiblePossible forforforfor NSENSENSENSE totototo HelpHelpHelpHelp UsersUsersUsersUsers DoubleDoubleDoubleDouble TheirTheirTheirTheirProductivityProductivityProductivityProductivity

(1) With the old-established software engineeringparadigm, linear process models are used and dynamictesting is performed after coding, so that defects areeasy introduced into a software product in upstream,and the defects are easy to propagate to the

Page 7: Silver Bullet: Slaying Software Werewolves Efficiently

maintenance phase in which the implementation ofrequirement changes and code modifications areperformed partially and locally, so that softwaremaintenance is very difficult to perform – usuallytakes 75% or more of the total efforts in a softwaredevelopment; But with NSE, nonlinear NSE processmodel is used which combines software developmentprocess and maintenance process together, ensuressoftware quality from the first step down to the finalstep through defect prevention, defect propagationprevention, refactoring, and software testingdynamically using the Transparent-box method in theentire software system development lifecycle, so thatthe defects propagated into maintenance phase aregreatly reduced, plus that the implementation ofrequirement changes and code modifications areperformed holistically and globally with side-effectprevention – the result is that the effort spent insoftware maintenance will be almost the same as thatspent in the software development process, it meansabout 2/3 efforts originally spent in softwaremaintenance can be saved – about half of the totaleffort can be saved (equal to double the productivity).

(2) As described in section (c), with NSE about 99.99% ofthe defects can be removed. So that as Capers Jonespointed, “Focus on quality, and productivity willfollow”[Jon94].

(3) NSE also supports the reuse of qualified components toincrease software productivity.

(4) With NSE software documentation paradigm and NSEsoftware visualization paradigm, software documentand source code are traceable, making a softwareproduct much easy to read, understand, test, andmaintain to increase the productivity.

(5) With NSE there are more means to help users increasetheir productivity:� Provides techniques and automated tools to help

users manage and control their software projectsbetter

� Provides automated tools and templates for helpingusers execute their project development plan easily

� Provides techniques and visual tools to help usersperform requirement development, product design,and bug fixing quickly

� Supports reverse engineering to generate a lot ofdesign documents automatically

� Supports incremental and visual coding� Provides techniques and automated complexity

analysis tools to help users design their test planquickly

� Provides techniques and tools to help users performtest case design efficiently through un-executedpath analysis

� Provides techniques and tools for capturing GUIoperation and playing back automatically

� Provides techniques and automated tools for testcase efficiency analysis and test case minimization,to help users perform regression test quickly (atleast 5 times fast)

� Provides techniques and automated tools forincremental data base management, so thatunchanged source files do not need to analyzetwice to speed up the regression process (10 timesfaster than other tools without incremental database management capability).

� Provides techniques and automated tools to analyzethe system structure, data usage, logic flow of ausers’ software product to help them manage theproduct better

� Provides intelligent version comparison tools tohelp users maintain their product versions easier.

(e)(e)(e)(e) HowHowHowHow IsIsIsIs ItItItIt PossiblePossiblePossiblePossible forforforfor NSENSENSENSE totototo HelpHelpHelpHelp UsersUsersUsersUsers HalveHalveHalveHalve TheirTheirTheirTheir CostCostCostCost

(1) All of the techniques and tools used for helping usersdouble their productivity are also useful for reducing thesoftware development cost.

(2) All techniques and tools provided for reduce 99.99% ofthe bugs are also useful for reducing the softwaredevelopment cost.

(3) With the old-established software engineering paradigm,software maintenance takes 75% or more of the total costin a software development; But with NSE, nonlinearNSE process model is used which combines softwaredevelopment process and maintenance process together,ensures software quality from the first step down to thefinal step through defect prevention, defect propagationprevention, refactoring, and software testing dynamicallyusing the Transparent-box method in the entire softwaresystem development lifecycle, so that the defectspropagated into maintenance phase are greatly reduced,plus that the implementation of requirement changes andcode modifications are performed holistically andglobally with side-effect prevention – the result is thatthe effort spent in software maintenance will be almostthe same as that spent in the software developmentprocess, it means about 2/3 cost originally spent insoftware maintenance can be saved – about half of thetotal cost can be saved as shown in Fig. 10.

(4) Provides techniques and tools to diagram the entiresystem of a users’ product , links the related parts eachother, making code inspection and walkthrough mucheasier to perform.

(5) Supports efficient regression testing using minimized testcases.

(6) Provides techniques and tools to capture users’ GUIoperations, and play them back to reduce regression testcost, plus

� Provides techniques and visual tools to help usersquickly perform requirement development,functional decomposition, and bug fixing

� Supports reverse engineering to automaticallygenerate design documents

� Supports incremental and visual coding� Provides automated tools for complexity analysis

to help users design their test plan rapidly� Provides tools to help users perform efficient

test-case design� Provides techniques and tools for capturing GUI

operations and playing them back� Provides techniques and automated tools for test-

case efficiency analysis and test caseminimization

� Provides techniques and tools to diagram theentire system of a user’s software product forimmediate product comprehension andunderstanding

� Provides techniques and automated tools toanalyze the system structure, data usage, and

Page 8: Silver Bullet: Slaying Software Werewolves Efficiently

logic flow of users’ software products for betterproduct management

� Provides intelligent version comparison tools tohelp users maintain their product versionseffortlessly

� Provides forward and backward traceabilityamong requirement specifications, designdocuments, test cases, source code, and testcases, making the software product easier tounderstand, test, and maintain

(f)(f)(f)(f) HowHowHowHow IsIsIsIs ItItItIt PossiblePossiblePossiblePossible forforforfor NSENSENSENSE totototo HelpHelpHelpHelp UsersUsersUsersUsers ReduceReduceReduceReduce thethethethe RiskRiskRiskRisk

(1) Helping users work with the customer to assign priorityorder to requirements according to the importance formaking the important requirements be implemented early.

(2) Helping users perform prototype design and test forimportant and unfamiliar requirements to preventunrealized requirements.

(3) Helping users estimate the cost better using the designeddummy system through dummy programming.

(4) Making it possible to help users remove 99.99% of thedefects in the designed product, double their productivity,halve their cost – further reducing the risk.

6.6.6.6. ConclusionConclusionConclusionConclusionSilver Bullet is a qualified solution for slaying software

Werewolves efficiently.

ReferencesReferencesReferencesReferences

[1] Brooks, Fredrick P., “No Silver Bullet: Essence andAccidents of Software Engineering,” Computer, Vol 20,No 4 (April 1987), pp. 10-19

[2] Jones, Capers, Social and Technical Reasons for SoftwareProject Failures,ures,ures,ures, CrossTalk, Jun 2006 Issue

[3] Condensed GSAM Handbook, chapter 2, CrossTalk, 2003[4] Deming W E. Out of the Crisis. MIT Press, 1986.[5] Jay Xiong, Tutorial, A Complete Revolution in Software

Engineering Based on Complexity Science, WORLDCOMP'09- , Las Vegas, July 13-17, 2009.

[6] Jay Xiong, Jonathan Xiong, A Complete Revolution inSoftware Engineering Based on Complexity Science,WORLDCOMP'09 – SERP (Software Engineering Researchand Practice 2009),109-115.

Fig, 1 The paradigm-shift framework

Fig. 2 The Silver Bullet process model

Fig. 3 The automated and self-maintainable traceability

Page 9: Silver Bullet: Slaying Software Werewolves Efficiently

Fig. 4 Silver Bullet software development methodology

Fig. 5 The Transparent-box software testing method

Fig. 6 AN application example to make projectdevelopment schedule chart traceable with theimplementation of requirements and the source code

Fig. 7 An example of making web pages traceable to theimplementation of requirements and the source cod

Fig. 8 Incremental development support withassignment of bottom-up coding order

Fig. 9 Incremental development support

Fig. 10 Estimated effort and cost spent in softwaredevelopment and software maintenance