Aditya P. Mathur Department of Computer Sciences Purdue University Monday April 1, 2002 4:30-5:20pm PHY 112 Last update: A...
Learning Objective <ul><li>To understand the importance and basics of Software Process. </li></ul>
What is Software Process? <ul><li>Organized collection of methods used in the development of a software product. </li></ul...
Why is Software Process important? Over the years  hardware:software  cost ratio has changed dramatically.   Companies tha...
What does software process aims to achieve? High quality: measured in terms of Faults per delivered KLOC. Lower cost of de...
How does it achieve ? Discipline, planning, training. Finding errors as soon as possible: An error made in the requirement...
Supporting Evidence:   First…What is “Process Maturity ?” Defined by the Software Engineering Institute at CMU [1986]. Mea...
Are there benefits of a mature process? Hughes Aircraft: Software Division: 1987-1990: ~$500K spent in process improvement...
And…more good experience… Comparable results at the Equipment Division of Raytheon  Moved up from Level 1 to Level 3 Two f...
A summary of benefits [Motorola, 1997] Level Faults/ MEASL   Decrease in duration during development 1 - 1.0 3 411 2.7 2 8...
Where does the cost of production lie? Phase Cost (HP) Requirements 18% Implementation 34% Design 19% Integration 29%
Another view of cost… Phase Cost (HP) Requirements 2% Design 6% Analysis 5% Module coding 5% Unit testing 7% Integration 8...
Software Life Cycle Steps used in the development, maintenance, and retirement of a software product.
Models of Software Life Cycle <ul><ul><ul><li>Unified Development Process (UDP) </li></ul></ul></ul>Build and fix Waterfal...
The Incremental Model <ul><ul><li>A  build  consists of code from various modules to provide desired functionality. </li><...
The Incremental Model: Advantages <ul><ul><li>Early adoption by the client eases the use of the application into the clien...
Let us go over a sample process… <ul><ul><li>Code, test, deliver </li></ul></ul><ul><ul><li>Analysis </li></ul></ul><ul><u...
Requirements Analysis <ul><li>C- and D-Requirements </li></ul><ul><ul><li>C-: Customer wants and needs; expressed in langu...
C-Requirements  <ul><ul><li>Use cases  expressed individually and with a use case diagram. A use case specifies a collecti...
Requirements: A bird’s eye-view <ul><li>A GUI front-end to multiple version control systems </li></ul>Provide support on m...
Conceptual Model Software Engineer SCM: Source Code Management Workstation Uses 1 1 Workstation Project 1 1..* Stores Work...
Use Cases Use System Sequence diagrams to show how a user interacts  with the Application. Software Engineer Load Plug-in ...
Load Plug-in Sequence Diagram System loadNewPlug-in() registered plug-ins selectPlugin(plug-in) configurePlugin(configurat...
What is Design? <ul><li>As a process:  </li></ul><ul><ul><li>The process by which the  architecture  of a software system ...
Design Principles [1] <ul><li>Design for change </li></ul>Change of algorithms Change of data representation <ul><ul><li>C...
Design Principles [2] <ul><li>Separation of concerns </li></ul>Separation over time. Separation of quality attributes:  e....
Sample: Basic Design Layout GUI Util Core SCM Clients
The Core Package Core package 1..* doCommand(string) Engine issueCommand(command):Response PluginManager getPlugin (instan...
Sequence diagram: Command Processing GUI Engine PluginManager <<thread>> Thread is now running; processing the command iss...
Command Process Thread plugin: IPlugin Command Executor <<thread>> : Engine GUI A: doCommand(command) A: doCommand(args, …...
Two Key Design Principles [1] <ul><li>First: Design for change </li></ul>Change of algorithms Change of data representatio...
Key Design Principles [2] <ul><li>Second: Separation of concerns </li></ul>Separation over time. Separation of quality att...
Advancements in Software Process Control: Feedback Control Specifications Program Effort + f(e) Additional effort What is ...
Summary 3.  Design principles, design notation (UML)  <ul><li>Software Process and its importance </li></ul>2. Requirement...
References Software Process,  Software Testing: Object Oriented and Classical Software Engineering, Stephen Schach, McGraw...
Upcoming SlideShare
Loading in …5
×

Software Testing

468 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
468
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 1. GUI - everything the user can see or use 2. Core component layer - internal work 3. Plug-in to SCM communication layer - communication with the SCM clients
  • Software Testing

    1. 1. Aditya P. Mathur Department of Computer Sciences Purdue University Monday April 1, 2002 4:30-5:20pm PHY 112 Last update: April 1, 2002 The Software Development Process: Getting it Right!
    2. 2. Learning Objective <ul><li>To understand the importance and basics of Software Process. </li></ul>
    3. 3. What is Software Process? <ul><li>Organized collection of methods used in the development of a software product. </li></ul>Requirements Analysis Design Coding Testing Maintenance Deployment Retirement
    4. 4. Why is Software Process important? Over the years hardware:software cost ratio has changed dramatically. Companies that sell hardware, e.g. Intel and Tektronix, appear to be hardware companies but a significant portion of their expense is towards the development and maintenance of software. A well defined and implemented process has generally led to improved quality of the product at a lower cost. Soon we shall examine supporting evidence.
    5. 5. What does software process aims to achieve? High quality: measured in terms of Faults per delivered KLOC. Lower cost of development. Lower cost of maintenance.
    6. 6. How does it achieve ? Discipline, planning, training. Finding errors as soon as possible: An error made in the requirements phase, and not fixed in this phase, may cost 50-350 times when fixed during the maintenance phase. Control: Collect data, look for problems, find ways to resolve them. Continuous involvement of the customer.
    7. 7. Supporting Evidence: First…What is “Process Maturity ?” Defined by the Software Engineering Institute at CMU [1986]. Measured in terms of 5 levels. Level 1: Initial [Least mature] Level 2: Repeatable Level 3: Defined Level 4: Managed Level 5: Optimized [Highly mature]
    8. 8. Are there benefits of a mature process? Hughes Aircraft: Software Division: 1987-1990: ~$500K spent in process improvement Moved up from Level 2 to Level 3 Annual savings: ~$2 million
    9. 9. And…more good experience… Comparable results at the Equipment Division of Raytheon Moved up from Level 1 to Level 3 Two fold increase in productivity Annual savings: $7.70 for every dollar invested in process improvement
    10. 10. A summary of benefits [Motorola, 1997] Level Faults/ MEASL Decrease in duration during development 1 - 1.0 3 411 2.7 2 890 3.2 4 205 5.0 5 126 7.8 MEASL: Million equivalent assembler code lines
    11. 11. Where does the cost of production lie? Phase Cost (HP) Requirements 18% Implementation 34% Design 19% Integration 29%
    12. 12. Another view of cost… Phase Cost (HP) Requirements 2% Design 6% Analysis 5% Module coding 5% Unit testing 7% Integration 8% Maintenance 67% Ye great coders! Notice the relative importance of coding!
    13. 13. Software Life Cycle Steps used in the development, maintenance, and retirement of a software product.
    14. 14. Models of Software Life Cycle <ul><ul><ul><li>Unified Development Process (UDP) </li></ul></ul></ul>Build and fix Waterfall Rapid prototyping Incremental model Spiral model
    15. 15. The Incremental Model <ul><ul><li>A build consists of code from various modules to provide desired functionality. </li></ul></ul><ul><ul><li>Product is designed, implemented, integrated, and tested as a series of incremental builds . </li></ul></ul><ul><ul><li>Note that architecture of the product is designed prior to the first build. </li></ul></ul>
    16. 16. The Incremental Model: Advantages <ul><ul><li>Early adoption by the client eases the use of the application into the client environment. Often, introduction of new tools is a traumatic task for users. Incremental approach could ease the introduction. </li></ul></ul><ul><ul><li>At each stage, a new build is coded and integrated into existing code to provide added functionality. Each build is a working application though it might not have all the desired features. </li></ul></ul><ul><ul><li>The current build could be delivered to the customer for use. Thus, the client is able to do useful work at an early stage of the complete project. </li></ul></ul>
    17. 17. Let us go over a sample process… <ul><ul><li>Code, test, deliver </li></ul></ul><ul><ul><li>Analysis </li></ul></ul><ul><ul><li>Design </li></ul></ul>
    18. 18. Requirements Analysis <ul><li>C- and D-Requirements </li></ul><ul><ul><li>C-: Customer wants and needs; expressed in language understood by the customer. </li></ul></ul><ul><ul><li>D-: For the developers; may be more formal. </li></ul></ul>
    19. 19. C-Requirements <ul><ul><li>Use cases expressed individually and with a use case diagram. A use case specifies a collection of scenarios. </li></ul></ul>Sample use case: Process sale as in a Point of Sale Terminal.
    20. 20. Requirements: A bird’s eye-view <ul><li>A GUI front-end to multiple version control systems </li></ul>Provide support on multiple platforms Extends to incorporate additional functionality of an SCM or a new SCM entirely Initially support Perforce, CVS, and ClearCase plug-ins The Chameleon Project: CS 406/490: Sponsored by Peregrine Systems [2001-2002]
    21. 21. Conceptual Model Software Engineer SCM: Source Code Management Workstation Uses 1 1 Workstation Project 1 1..* Stores Workstation Files 1 1..* Contains 1..* SCM Client 1 Uses SCM Server 1 1 Connects To Master Project 1..* 1 Manages Master Files 1..* 1 Contains 1..* Creates/Updates 1
    22. 22. Use Cases Use System Sequence diagrams to show how a user interacts with the Application. Software Engineer Load Plug-in Change Plug-in Configuration Issue Command Register New Plug-in <<actor>> SCM Client
    23. 23. Load Plug-in Sequence Diagram System loadNewPlug-in() registered plug-ins selectPlugin(plug-in) configurePlugin(configuration) setPluginName(name)
    24. 24. What is Design? <ul><li>As a process: </li></ul><ul><ul><li>The process by which the architecture of a software system is established. </li></ul></ul><ul><li>As an artifact: </li></ul><ul><ul><li>The architecture of a software system describing system components and their interactions. </li></ul></ul>
    25. 25. Design Principles [1] <ul><li>Design for change </li></ul>Change of algorithms Change of data representation <ul><ul><li>Change of the underlying abstract machine </li></ul></ul>Change of peripheral devices <ul><ul><li>Change of social environment </li></ul></ul>
    26. 26. Design Principles [2] <ul><li>Separation of concerns </li></ul>Separation over time. Separation of quality attributes: e.g. performance and correctness <ul><ul><li>Separation by parts of the system . </li></ul></ul>Separation by views: e.g . data and control flows.
    27. 27. Sample: Basic Design Layout GUI Util Core SCM Clients
    28. 28. The Core Package Core package 1..* doCommand(string) Engine issueCommand(command):Response PluginManager getPlugin (instanceName):IPlugin IPlugin CVSPlugin P4Plugin CommandExecutor
    29. 29. Sequence diagram: Command Processing GUI Engine PluginManager <<thread>> Thread is now running; processing the command issueCommand(command) create() start() doCommand(command) getPlugin(name):IPlugin issueCommand() returns a flag for thread success or failure to the GUI
    30. 30. Command Process Thread plugin: IPlugin Command Executor <<thread>> : Engine GUI A: doCommand(command) A: doCommand(args, …) Thread A finished A:commandFinished(res) commandFinished(response) commandFinished(response)
    31. 31. Two Key Design Principles [1] <ul><li>First: Design for change </li></ul>Change of algorithms Change of data representation <ul><ul><li>Change of underlying abstract machine </li></ul></ul>Change of peripheral devices <ul><ul><li>Change of social environment </li></ul></ul>
    32. 32. Key Design Principles [2] <ul><li>Second: Separation of concerns </li></ul>Separation over time. Separation of quality attributes: e.g. performance and correctness <ul><ul><li>Separation by parts of the system . </li></ul></ul>Separation by views: e.g . data and control flows.
    33. 33. Advancements in Software Process Control: Feedback Control Specifications Program Effort + f(e) Additional effort What is f ? - Required Quality Observed Quality
    34. 34. Summary 3. Design principles, design notation (UML) <ul><li>Software Process and its importance </li></ul>2. Requirements analysis, domain model, use cases. 4. Design principles, design notation (UML) 5. Feedback control in software process
    35. 35. References Software Process, Software Testing: Object Oriented and Classical Software Engineering, Stephen Schach, McGraw Hill, 2002, Fifth Edition, Chapters 2, 3, 6. Reference for Design Patterns: Design patterns by Gamma et al., 1995, Chapter 5, Or read pp. 372-380 from Larman’s book or section 3.2.2.1 of Braude’s book. OO Analysis and Design: Applying UML and Patterns, Craig Larman, PH-PTR, Second Edition, 2001, Chapters 9, 10, 15.

    ×