Software Development
description
Transcript of Software Development
![Page 1: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/1.jpg)
Software DevelopmentSoftware Development
![Page 2: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/2.jpg)
The Software Life CycleThe Software Life Cycle
Encompasses all activities from initial Encompasses all activities from initial analysis until obsolescence analysis until obsolescence Analysis of problem or requestAnalysis of problem or request System development and installationSystem development and installation System use and maintenanceSystem use and maintenance System removal/replacementSystem removal/replacement
Need a roadmap for development of large Need a roadmap for development of large systemssystems
![Page 3: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/3.jpg)
Process Model for Developing Process Model for Developing SoftwareSoftware
The purpose of a development model is:The purpose of a development model is: improve productivity, timeliness, and software improve productivity, timeliness, and software
quality.quality.
The development model should:The development model should: describe the phases of the development describe the phases of the development
processprocess give guidelines for how to carry out the give guidelines for how to carry out the
phases.phases. provide methodologies that are predictable provide methodologies that are predictable
and repeatable.and repeatable.
![Page 4: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/4.jpg)
Software DevelopmentSoftware Development
Five Phases Five Phases AnalysisAnalysis DesignDesign ImplementationImplementation TestingTesting DeploymentDeployment
Variety of Variety of development modelsdevelopment models
![Page 5: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/5.jpg)
AnalysisAnalysisDecide WHAT the project is supposed to Decide WHAT the project is supposed to accomplish. (Not HOW.)accomplish. (Not HOW.)Produce a Produce a requirementsrequirements specification. specification. Precisely describe the software to be writtenPrecisely describe the software to be written Describe performance criteriaDescribe performance criteria
How large can the input set be?How large can the input set be?How fast must the data be handled?How fast must the data be handled?What is the maximum amount of memory or disk space that What is the maximum amount of memory or disk space that the program may use? the program may use?
Do not be ambiguous.Do not be ambiguous.
Develop a Develop a testing plantesting plan Determine what will prove that the system fulfills Determine what will prove that the system fulfills
requirements requirements
Produce a Produce a user manualuser manual tells how user will operate program tells how user will operate program
![Page 6: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/6.jpg)
DesignDesign
Develop a high level system architecture.Develop a high level system architecture. Use diagrams to visualize projectUse diagrams to visualize project
What data structures make sense?What data structures make sense?
Will this design meet the specification?Will this design meet the specification?
For Object Oriented designs:For Object Oriented designs: What classes will you use?What classes will you use? What are their significant methods?What are their significant methods? What are the relationships between classes?What are the relationships between classes?
![Page 7: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/7.jpg)
ImplementationImplementation
Write the code that follows the design.Write the code that follows the design. implement classes and methods discovered in implement classes and methods discovered in
the design phase the design phase
Compile the code Compile the code handle syntax errorshandle syntax errors
![Page 8: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/8.jpg)
TestingTestingRun tests to verify the program works correctlyRun tests to verify the program works correctly Use testing plan from the analysis phaseUse testing plan from the analysis phase Discover/fix bugsDiscover/fix bugs
Unit testingUnit testing tests a single method or a set of cooperating tests a single method or a set of cooperating methodsmethods perhaps the most important testing toolperhaps the most important testing tool E.G., JUnit tests (built into E.G., JUnit tests (built into eclipseeclipse))
Integration testingIntegration testing tests a set of cooperating tests a set of cooperating modulesmodules..
Systems testingSystems testing tests an integrated system to verify/validate that it tests an integrated system to verify/validate that it
meets its requirements.meets its requirements.
![Page 9: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/9.jpg)
MaintenanceMaintenance
The software is released to the customer:The software is released to the customer:
Fix bugs.Fix bugs.
Add new features.Add new features.
Update to work with new hardware and Update to work with new hardware and operating systems.operating systems.
About ⅔ of all software engineering work is About ⅔ of all software engineering work is maintenance.maintenance.
![Page 10: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/10.jpg)
Fixing problemsFixing problems
It is easier to fix a problem found It is easier to fix a problem found earlyearly rather than late in software development.rather than late in software development. Better to find problems in the design phase Better to find problems in the design phase
than in the implementation phase.than in the implementation phase. Better to find problems in the implementation Better to find problems in the implementation
phase than in the testing phase.phase than in the testing phase.
![Page 11: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/11.jpg)
Software Development ModelsSoftware Development Models
Waterfall modelWaterfall model
Iterative modelsIterative models Spiral modelSpiral model RUP modelRUP model Agile modelAgile model
Extreme ProgrammingExtreme Programming
OthersOthers
![Page 12: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/12.jpg)
Waterfall ModelWaterfall Model
Analysis
Design
Implementation
Testing
Maintenance
![Page 13: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/13.jpg)
Waterfall ModelWaterfall Model
Legacy modelLegacy model has been in use since the 1970’shas been in use since the 1970’s
Characterized by completely finishing a step Characterized by completely finishing a step before proceeding to the next step.before proceeding to the next step. once a step is finished, it is not revisited (when this once a step is finished, it is not revisited (when this
model is rigidly followed).model is rigidly followed).
Large government agencies still use forms of this Large government agencies still use forms of this model model prefer to spend large amounts of effort on analysis and prefer to spend large amounts of effort on analysis and
requirements before awarding contracts.requirements before awarding contracts.
![Page 14: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/14.jpg)
Waterfall ModelWaterfall Model
Pros:Pros: Like the BDUF (Big Design Up Front) models, the Like the BDUF (Big Design Up Front) models, the
waterfall model encourages engineers to think waterfall model encourages engineers to think through the details before coding begins.through the details before coding begins.
Problems are identified early in the process which Problems are identified early in the process which saves time and effort later.saves time and effort later.
Cons:Cons: Software engineers cannot predict the future and Software engineers cannot predict the future and
anticipate every requirement and problem.anticipate every requirement and problem. This model is not flexible enough to allow This model is not flexible enough to allow
requirements to evolve.requirements to evolve.
![Page 15: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/15.jpg)
Iterative process modelsIterative process models Spiral developmentSpiral development RUP (Rational Unified Process)RUP (Rational Unified Process) XP (eXtreme Programming)XP (eXtreme Programming)
![Page 16: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/16.jpg)
Spiral (Iterative) ModelSpiral (Iterative) Model
Analysis Design
Implementation
TestingMaintenance
Prototype #2Prototype #1
Final Product
![Page 17: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/17.jpg)
Spiral or Iterative ModelSpiral or Iterative Model
Characterized by the use of Characterized by the use of prototypesprototypes..
Prototypes allowPrototypes allow feedback between the engineers and the feedback between the engineers and the
customer.customer. lessons learned from development of one lessons learned from development of one
prototype to be applied to the next iteration prototype to be applied to the next iteration the direction of the project to be reevaluated.the direction of the project to be reevaluated. specifications to be added.specifications to be added.
![Page 18: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/18.jpg)
Spiral or Iterative ModelSpiral or Iterative Model
Pros:Pros: More flexible than the waterfall model.More flexible than the waterfall model. Projects can evolve.Projects can evolve.
Cons:Cons: Engineers know that they don’t have to do a Engineers know that they don’t have to do a
thorough job at each step because steps are thorough job at each step because steps are revisited.revisited.
Too many iterations can cause project delays.Too many iterations can cause project delays.
![Page 19: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/19.jpg)
RUPRUP(Rational Unified Process)(Rational Unified Process)Essentially iterates all phases during Essentially iterates all phases during
each phase each phase InceptionInceptionElaborationElaborationConstruction PlanningConstruction PlanningConstructionConstructionTransitionTransition
![Page 20: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/20.jpg)
Activity Levels in the Rational Activity Levels in the Rational Unified ProcessUnified Process
Development Development model by the model by the inventors of UML inventors of UML (Unified Modeling (Unified Modeling Language)Language)
Activity Levels in the Rational Unified Process Methodology
Interested?
Look up RUP articles by Grady Booch
![Page 21: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/21.jpg)
Agile ModelAgile ModelAgile processes use feedback (rather than Agile processes use feedback (rather than planning) to control the process.planning) to control the process.Agile methods emphasize real-time Agile methods emphasize real-time communicationcommunication preferably face-to-face, over written preferably face-to-face, over written
documents.documents.
Most agile methods try to minimize risk by Most agile methods try to minimize risk by developing software in short iterationsdeveloping software in short iterations typically last one to four weekstypically last one to four weeks each iteration is like a miniature software each iteration is like a miniature software
project of its own.project of its own.
![Page 22: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/22.jpg)
Extreme Programming - XPExtreme Programming - XP
Best-known agile development model.Best-known agile development model.
First, write automated tests to provide First, write automated tests to provide concrete goals for development.concrete goals for development. Test-Driven Development, TDDTest-Driven Development, TDD
Next, coding (by a pair of programmers) Next, coding (by a pair of programmers) complete when all the tests pass and the complete when all the tests pass and the
programmers can't think of any more tests programmers can't think of any more tests that are needed. that are needed.
![Page 23: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/23.jpg)
Extreme Programming - XPExtreme Programming - XP
Code is Code is refactoredrefactored.. doesn’t fix bugs or add new functionality.doesn’t fix bugs or add new functionality. done to improve understandability and clarity of done to improve understandability and clarity of
structure, code “clean up.”structure, code “clean up.” design and architecture emerge during this step.design and architecture emerge during this step.
The incomplete but functional system is The incomplete but functional system is demonstrated to the customer. demonstrated to the customer.
Repeat the cycle by writing tests for the next Repeat the cycle by writing tests for the next most important part of the system.most important part of the system.
![Page 24: Software Development](https://reader035.fdocuments.net/reader035/viewer/2022062519/568150d5550346895dbef9a2/html5/thumbnails/24.jpg)
The 12 “practices” of XPThe 12 “practices” of XP1.1. Realistic planning with frequent iteration; well-Realistic planning with frequent iteration; well-
defined decision-making structuredefined decision-making structure2.2. Small releases (“juiciest” first)Small releases (“juiciest” first)3.3. Metaphor (big picture)Metaphor (big picture)4.4. Simple designSimple design5.5. Refactoring (continuous design)Refactoring (continuous design)6.6. Testing (test and then code)Testing (test and then code)7.7. Pair programmingPair programming8.8. Collective ownership (by small co-located teams)Collective ownership (by small co-located teams)9.9. Continuous integration Continuous integration 10.10. 40-hour week40-hour week11.11. On-site customerOn-site customer12.12. Coding standardsCoding standards
Interested?
Look up agile programming articles by Jim Highsmith