Software Development Activities - Computer Science

Transcription

Software development activitieslNote “activities” – not “steps”ll1.2.3.4.5.Often happening simultaneouslyNot necessarily discretePlanning: mostly study the requirementsDomain analysis: study the problem areaSystem design: devise computer solutionImplementation: write the codeTesting, documentation, maintenance,

Software engineeringlllA subset of system engineeringCovers all software development activities,planning through maintenanceAlso includes various management tasks– Determine project roles, and assign personnel– Create and monitor development schedules– Some client relations and customer supportlGuided by CS theory– But really just heuristics, and often ad hoc

Professional, ethical responsibilitylAbove all, do no harm! (Hippocratic Oath)– NO VIRUSES or other malicious programs– Avoid inventing “the bomb” or a plague, or Basically demonstrate loyalty to employer,clients, co-workers, country, humanity, l See “Software Engineering Code of Ethics andProfessional Practice” by ACM/IEEE-CS atlhttps://www.acm.org/about-acm/code-of-ethics

Development process modelingTheclassic:l Stepafterstep,afterstep, l Neverback elProgramDesignCodingTesting(several steps)Operation &Maintenance

Alternatives to waterfall estingOkay, weall agree –this extremedoesn’twork eitherl Is there amiddleground?lUnitTestingSoftware Development Reality

Considering pact ofrisks beingtackledIntegrate &System TestIn a waterfall lifecycle,high risk issues such asintegration and load testmay be tackled late.TimelResearch conclusion: it is wise to do someimplementing and testing early in the process

Engineering the risk factorlSpiral Model– Includesfrequent riskanalyseslFrequentreevaluationduring anextendedplanningstage

Testing and iteratingThe V ModelRequirementsAnalysisSystemDesignValidate requirementsProgramDesignVerify designAcceptanceTestingSystemTestingUnit & Integration TestingCodingOperation &MaintenanceAccounts forrequirementchanges andmistakesl Key idea:plan to iteratel But still a bittoo rigid?l

Incremental / iterative processlHmmm a hybrid that makes sense!RequirementsRequirementsDesignImplementation &Test & Integration& More DesignFinal Integration& System TestTimeDesignImplementation &Test & Integration& More DesignFeedback fromiteration N leads torefinement andadaptation of therequirements anddesign in iterationN 1.Final Integration& System Test4 weeks (for example)Iterations are fixed inlength, ortimeboxed.The system growsincrementally.

Iterating reduces risk overallIterationPotentialimpact ofrisks beingtackledIn an iterative lifecycle,high-risk issues aretackled early, to drivedown the riskiest projectelements.TimelEspecially if thorny issues are tackled early

Unified Process (UP)By Rumbaugh, Jacobson, Booch, othersl Iterative and incremental through 4 phasesl Use case drivenl Architecture-centricl Risk-focusedl UML-heavyl– Static models– Dynamic models

Agile Software DevelopmentlllllAgility – observed to be a common feature ofsuccessful processesDifferent projects need different processesGenerally better to focus on skills, communication,and community instead of processesFruitful to consider it “a cooperative game ofinvention and communication” (Cockburn, 2002)See Agile Manifesto: http://agilemanifesto.org/– And related Principles of Agile Software

Extreme Programming (XP)lVery popular agile development process today– Started by Kent Beck, Agile Alliance memberlMostly means adhering to some basic principles–––––lClient representative on-siteAlways practice pair programmingPerform constant, at least daily testingKeep iterations short, and clearly time-boxedDo frequent, incremental buildsSee www.extremeprogramming.org

About OOA and OODlMeans: analyzing and designing asystem from an object perspective– System composed of objects orconceptslllWhat things or ideas are involved?How do objects/concepts interact?Means not: function-oriented– System composed of processes,functionsllWhat to do, and how to do it?Mostly worry about “flow of control”Catalog LibraryBook Librarian Record loans Add resources Report fines

Doing OOA and OODlNot easy to do it well– But worth it for: big systems, big teams, long-termproductivity (software reuse, etc.)– Takes skill: experience, practice, learninglOOA – investigation of the problem– What must the system do?– Focus on learning the problem domain.lOOD – find solution to the problem– How will system fulfill requirements?– Define logical software objects and associations tosolve the problem.

Tools for doing OOA and OODlUML – Unified Modeling Language– Standardized notation – now well acceptedlCASE tools – computer-aided softwareengineering tools (like “Rational Rose”)– Getting highly sophisticated nowllCan generate code from modeling diagramsCan do reverse engineering, – Not necessary for CS 48 (but could help withdiagrams, and other requirements) – may cost

Start by not even thinking aboutprogramminglTry to focus on domain concepts at first– Not software constructs (wait until design stage)– Avoids complexity overload– Design and eventual system will be better too!lCreate and maintain a steady stream of artifacts– Mostly pre-programming – diagrams, classspecifications, glossary, – Guides initial implementation, and aids subsequentmodification, maintenance, and software reuse

CS 48 development schedulelOverview: a planning phase, followed byat least 2 complete development iterations– each iteration produces a working system– Call it “relaxed UP” reflecting agile principleslPlanning phase – Requirements Analysis– First be the client – describe the project– Then analyze the requirementsItemize system functions and characteristicsl Write use cases, and assign use cases todevelopment iterationsl

CS 48 schedule (cont.)lEarly iteration(s) –draft project (report andcurrent system)– Analyze the domain pertinent to the iterationllIdentify classes, class attributes, and associationsIdentify system behavior (as a “black box”)– Design the current systemllSpecify the way objects will behave and interactTie to other systems/tools as necessary– Implement and testlComplete at least 1 more iteration – final project– Analyze/design/implement/test and update documentslAlso demonstrate system to class during last week of quarter

NextRequirements Analysis

Software engineering l A subset of system engineering l Covers all software development activities, planning through maintenance l . l Overview: a planning phase, followed by at least 2 complete developm