Más contenido relacionado




Software Engineering- Crisis and Process Models

  1. Software Engineering & Process Models Presentation By Nishu Rastogi Assistant Professor Invertis University, Bareilly 1
  2. Content What is Software Engineering? Principles of S.E. Scope and Necessity of S.E. Software Process Models  Software Development Life Cycle Various Process Model Model Comparison 2
  3. Technology Development • ART- esoteric use of past experience • CRAFT- Unorganized use of past experience • ENGINEERING- systematic use of past experience and formation of scientific basis 3
  4. What is Software Engineering? Software + Engineering Software : Collection of modules Engineering : Branch of science and technology concerned with the design, building, and use of engines, machines, and structures. 4
  5. Software Engineering is an engineering approach for software development. OR Software Engineering provides tools and techniques which can be used to design and develop a software in a systematic and cost effective manner. 5 What is Software Engineering? [Contd..]
  6. Software Crisis • A time came few years back, that the cost of software became so high in comparison to hardware products. • Organizations had to invest large potion of their budget to purchase the required software to automate the work. • To tackle such a scenario, Software Engineering was the option. • Then a scenario came that with hardware product started providing software by default without any cost. 6
  7. Program vs. Software Product • Programs are developed by individuals for personal use. • Limited functionality and size • Lack of good UI and proper documentation • Software products have multiple user, have good UI, proper user manuals and documentation. • Systematically designed, implemented and well tested. • Developed by a group of Engineers. 7
  8. Why Software Engineering • To reduce development time • To reduce development cost • To reduce development complexity- By decomposing the problem, and being well planned. 8
  9. Software Engineering Principles Principle of Abstraction Considers only those aspects of the problem that are relevant for certain purpose and suppress other aspects that are not relevant. Principle of Decomposition A complex problem is divided into several smaller problems and then the smaller problems are solved one by one. 9
  10. Scope and Necessity of Software Eng.. Without using software engineering principles it would be difficult to develop large programs. Ex. A program of size 1,000 lines of code has some complexity. But a program with 10,000 LOC is not just 10 times more difficult to develop, but may as well turn out to be 100 times more difficult unless software engineering principles are used. Software Engineering helps to reduce the programming complexity. 10
  11. Software Life Cycle and Model • A series of identifiable stages that a software product undergoes during its lifetime is known as software life cycle. • A descriptive and diagrammatic representation of software life cycle is known as software life cycle model. • Model represents all activities required to make a software product. • Software life cycle is often referred to as Software process model • Life cycle is used to develop a software in systematic and disciplined manner 11
  12. Software Process Models A Software Process Model is a standardised format for  Planning  Organising, and  Running the development of a software project. “A set of activities that leads to the production of a software product is known as Software Process.” 12
  13. Software Development Life Cycle (SDLC) Problem Identification 1. Feasibility Study To determine whether it would be financially and technically feasible to develop the product. 2. Requirement Analysis and Specification To understand the exact requirements of the customer and to document them properly.  Requirements gathering and analysis ƒRequirements specification (“Software Requirement Specification is developed”) 13
  14. SDLC [Contd..] 3. Design To transform the requirements specified in the SRS document into a structure that is suitable for implementation in some programming language. 4. Coding To transform the logics developed into code by using syntax of particular programming language. 14
  15. 5. Testing To verify and validate the software that it works as expected. 6. Maintenance To modify a software product after delivery to correct faults and to improve performance. 15 SDLC [Contd..]
  16.  Classical Waterfall Model  Iterative Waterfall Model  Prototyping Model  Evolutionary Model  Rapid Application Development  Spiral Model 16 Various Software Process Models
  17. 1- Classical Waterfall Model  The waterfall model is the classic process model – it is widely known, understood and used.  In some respect, waterfall is the ”common sense” approach. 17
  18. Classical Waterfall Model [Contd..] 18
  19. Limitation of Classical Model The classical waterfall model is an idealistic.  It assumes that no development error is ever committed by the engineers during any of the life cycle phases.  In practical environment engineers do commit mistakes. 19
  20. 2- Iterative Waterfall Model  Defects usually get detected much later in the life cycle: For example, a design defect might go unnoticed till the coding or testing phase. 20
  21. Iterative Waterfall Model [Contd..]  Once a defect is detected:  We need to go back to the phase where it was introduced.  Redo some of the work done during that and all subsequent phases.  Therefore, we need feedback paths in the classical waterfall model. 21
  22. Iterative Waterfall Model [Contd..] 22
  23. 3- Prototyping Model  A prototype is a toy implementation of the system.  A prototype usually exhibits limited functional capabilities, low reliability, and inefficient performance compared to the actual software.  A prototype is usually built using several shortcuts. 23
  24. Prototyping Model [Contd..] 24 Requirement Gathering Quick Design Refine Requirements Build Prototype Customer Evaluation of Prototype Design Implement Test Maintain
  25. Reasons for DevelopingAPrototype To illustrate the input data formats, messages, reports, and the interactive dialogues to the customer.  Examine technical issues associated with product development.  It is impossible to ``get it right'' the first time, we must plan to throw away the first product, if we want to develop a good product. 25
  26. Advantages of Prototyping  Provides better understanding of the customer’s needs  how the screens might look like  how the user interface would behave  how the system would produce outputs Prototype building needs Additional Cost. 26
  27. 4- Evolutionary Model  Also called as Successive Version or Incremental Model.  System is broken down into several modules which can be incrementally implemented and delivered.  First develop the core modules of the system.  Initial product skeleton is refined into increasing levels of capability, by adding new functionalities in successive versions. 27
  28. Evolutionary Model [Contd..] 28 A B C A A B
  29. 29
  30. Advantages of Evolutionary Model  Users get a chance to experiment with a partially developed system much before the full working version is released.  Helps finding exact user requirements, much before fully working system is developed.  Core modules get tested thoroughly reduces chances of errors in final product. 30
  31.  Difficult to subdivide problems into functional units which can be incrementally implemented and delivered.  Only useful for very large problems, where it is easier to find modules for incremental implementation. 31 Disadvantages of Evolutionary Model
  32.  Lack of extensive pre-planning.  Allows software to be written much faster, and makes it easier to change requirements.  Used when time to develop software is very less and product is required to be developed at earliest. 32 5- RapidApplication Development
  33. RapidApplication Development [Contd..] 33 Requirements Planning User Design Construction Cutover
  34. 1. Requirement Planning Combines elements of the system planning and systems analysis phases. It ends when the team agrees on the key issues and obtains management authorization to continue. 2. User Design Users interact with systems analysts and develop models and prototypes. User Design is a continuous interactive process that allows users to understand and modify the system. 34 RapidApplication Development [Contd..]
  35. 3. Construction Tasks are programming and application development like coding, unit-integration and system testing. 4. Cutover Tasks include testing, changeover to the new system, and user training. New system is built, delivered, and placed in operation much sooner. 35 RapidApplication Development [Contd..]
  36.  Proposed by Boehm in 1988.  Each loop of the spiral represents a phase of the software process:  the innermost loop might be concerned with system feasibility,  the next loop with system requirements definition,  the next one with system design, and so on.  Each loop in the spiral is split into four sectors (quadrants 36 6- Spiral Model
  37. Spiral Model [Contd..] 37
  38. 1. Identify objectives of the phase, examine the risks associated with these objective. Risk is any adverse circumstance that might hamper successful completion of a software project. 2. Find alternate solutions possible 38 Spiral Model [I- Quadrant]
  39.  For each identified project risk, a detailed analysis is carried out.  Steps are taken to reduce the risk.  For example, if there is a risk that the requirements are inappropriate, a prototype system may be developed. 39 Spiral Model [II- Quadrant]
  40.  Develop and validate the next level of the product.  Review the results achieved so far with the customer and plan the next iteration around the spiral. With each iteration around the spiral progressively more complete version of the software gets built. 40 Spiral Model [III &IV - Quadrant]
  41. Model Comparison  Iterative waterfall model  most widely used model.  suitable only for well-understood problems.  Prototype model is suitable for projects which are not well understood in terms of  user requirements  technical aspects 41
  42.  Evolutionary model is suitable for large problems  can be decomposed into a set of modules that can be incrementally implemented,  incremental delivery of the system is acceptable to the customer.  Spiral model  suitable for development of technically challenging software products that are subject to several kinds of risks. 42 Model Comparison [Contd..]
  43. Software Characteristics 1- External Characteristics- User Interest • Correctness- degree to which system is free from faults in system design, specification and implementation. • Usability- Ease with which users can learn and use the system • Reliability- ability of system to perform when required without failure. • Integrity- prevention of unauthorized/improper use. • Adaptability- usability in other application. • Accuracy- degree of quantitative correctness. • Robustness- functioning of system in presence of invalid inputs. 43
  44. S/w Characteristics 2- Internal Characteristics- Manager Interest • Maintainability- ease of modifying software for changing or adding capabilities or improving performance. • Flexibility- extent of modifying system for other user or environment. • Portability- ease of modifying system for operating in different environment. • Reusability- re-use of existing code • Readability 44
  45. Thank You !!! 45