Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.

Similar presentations


Presentation on theme: "Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis."— Presentation transcript:

1 Software Development

2 The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis of problem or request System development and installation System development and installation System use and maintenance System use and maintenance System removal/replacement System removal/replacement Need a roadmap for development of large systems

3 Process Model for Developing Software The purpose of a development model is: improve productivity, timeliness, and software quality. improve productivity, timeliness, and software quality. The development model should: describe the phases of the development process describe the phases of the development process give guidelines for how to carry out the phases. give guidelines for how to carry out the phases. provide methodologies that are predictable and repeatable. provide methodologies that are predictable and repeatable.

4 Software Development Five Phases Analysis Analysis Design Design Implementation Implementation Testing Testing Deployment Deployment Variety of development models

5 Analysis Decide WHAT the project is supposed to accomplish. (Not HOW.) Produce a requirements specification. Precisely describe the software to be written Precisely describe the software to be written Describe performance criteria Describe performance criteria How large can the input set be? How fast must the data be handled? What is the maximum amount of memory or disk space that the program may use? Do not be ambiguous. Do not be ambiguous. Develop a testing plan Determine what will prove that the system fulfills requirements Determine what will prove that the system fulfills requirements Produce a user manual tells how user will operate program tells how user will operate program

6 Design Develop a high level system architecture. Use diagrams to visualize project Use diagrams to visualize project What data structures make sense? Will this design meet the specification? 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?

7 Implementation Write the code that follows the design. implement classes and methods discovered in the design phase implement classes and methods discovered in the design phase Compile the code handle syntax errors handle syntax errors

8 Testing Run tests to verify the program works correctly Use testing plan from the analysis phase Use testing plan from the analysis phase Discover/fix bugs Discover/fix bugs Unit testing tests a single method or a set of cooperating methods tests a single method or a set of cooperating methods perhaps the most important testing tool perhaps the most important testing tool E.G., JUnit tests (built into eclipse) E.G., JUnit tests (built into eclipse) Integration testing tests a set of cooperating modules. tests a set of cooperating modules. Systems testing tests an integrated system to verify/validate that it meets its requirements. tests an integrated system to verify/validate that it meets its requirements.

9 Maintenance The software is released to the customer: Fix bugs. Add new features. Update to work with new hardware and operating systems. About ⅔ of all software engineering work is maintenance.

10 Fixing problems It is easier to fix a problem found early rather than late in software development. Better to find problems in the design phase than in the implementation phase. Better to find problems in the design phase than in the implementation phase. Better to find problems in the implementation phase than in the testing phase. Better to find problems in the implementation phase than in the testing phase.

11 Software Development Models Waterfall model Iterative models Spiral model Spiral model RUP model RUP model Agile model Agile model Extreme Programming Others

12 Waterfall Model Analysis Design Implementation Testing Maintenance

13 Waterfall Model Legacy model has been in use since the 1970’s has been in use since the 1970’s Characterized by completely finishing a step before proceeding to the next step. once a step is finished, it is not revisited (when this model is rigidly followed). once a step is finished, it is not revisited (when this model is rigidly followed). Large government agencies still use forms of this model prefer to spend large amounts of effort on analysis and requirements before awarding contracts. prefer to spend large amounts of effort on analysis and requirements before awarding contracts.

14 Waterfall Model Pros: Like the BDUF (Big Design Up Front) models, the waterfall model encourages engineers to think through the details before coding begins. Like the BDUF (Big Design Up Front) models, the waterfall model encourages engineers to think through the details before coding begins. Problems are identified early in the process which saves time and effort later. Problems are identified early in the process which saves time and effort later.Cons: Software engineers cannot predict the future and anticipate every requirement and problem. Software engineers cannot predict the future and anticipate every requirement and problem. This model is not flexible enough to allow requirements to evolve. This model is not flexible enough to allow requirements to evolve.

15 Iterative process models Spiral development RUP (Rational Unified Process) XP (eXtreme Programming)

16 Spiral (Iterative) Model Analysis Design Implementation Testing Maintenance Prototype #2 Prototype #1 Final Product

17 Spiral or Iterative Model Characterized by the use of prototypes. Prototypes allow feedback between the engineers and the customer. feedback between the engineers and the customer. lessons learned from development of one prototype to be applied to the next iteration lessons learned from development of one 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.

18 Spiral or Iterative Model Pros: More flexible than the waterfall model. More flexible than the waterfall model. Projects can evolve. Projects can evolve.Cons: Engineers know that they don’t have to do a thorough job at each step because steps are revisited. Engineers know that they don’t have to do a thorough job at each step because steps are revisited. Too many iterations can cause project delays. Too many iterations can cause project delays.

19 RUP (Rational Unified Process) Essentially iterates all phases during each phase Inception Inception Elaboration Elaboration Construction Planning Construction Planning Construction Construction Transition Transition

20 Activity Levels in the Rational Unified Process Development model by the inventors of UML (Unified Modeling Language) Activity Levels in the Rational Unified Process Methodology Interested? Look up RUP articles by Grady Booch

21 Agile Model Agile processes use feedback (rather than planning) to control the process. Agile methods emphasize real-time communication preferably face-to-face, over written documents. preferably face-to-face, over written documents. Most agile methods try to minimize risk by developing software in short iterations typically last one to four weeks typically last one to four weeks each iteration is like a miniature software project of its own. each iteration is like a miniature software project of its own.

22 Extreme Programming - XP Best-known agile development model. First, write automated tests to provide concrete goals for development. Test-Driven Development, TDD Test-Driven Development, TDD Next, coding (by a pair of programmers) complete when all the tests pass and the programmers can't think of any more tests that are needed. complete when all the tests pass and the programmers can't think of any more tests that are needed.

23 Extreme Programming - XP Code is refactored. doesn’t fix bugs or add new functionality. doesn’t fix bugs or add new functionality. done to improve understandability and clarity of structure, code “clean up.” done to improve understandability and clarity of structure, code “clean up.” design and architecture emerge during this step. design and architecture emerge during this step. The incomplete but functional system is demonstrated to the customer. Repeat the cycle by writing tests for the next most important part of the system.

24 The 12 “practices” of XP 1.Realistic planning with frequent iteration; well- defined decision-making structure 2.Small releases (“juiciest” first) 3.Metaphor (big picture) 4.Simple design 5.Refactoring (continuous design) 6.Testing (test and then code) 7.Pair programming 8.Collective ownership (by small co-located teams) 9.Continuous integration 10.40-hour week 11.On-site customer 12.Coding standards Interested? Look up agile programming articles by Jim Highsmith


Download ppt "Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis."

Similar presentations


Ads by Google