3-SoftwareEngineeringandBestPractices

3-SoftwareEngineeringandBestPractices - Continuing Best...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Continuing Best Practices Slide information taken in large part from former Rational Corporation slides. Considerably modified and supplemented for classroom use. 21 1 Practice 5: Verify Software Quality Develop Iteratively Manage Requirements Use Component Architectures Model Visually Verify Quality Control Changes Quality, as used within Unified Process, is defined as "The characteristic of having demonstrated the achievement of producing a product which meets or exceeds agreed upon requirements as measured by an agreed upon measures and criteria And is produced by an agreed upon process. If done this way, the process can be repeated and managed In most organizations, testing accounts for 30-50%21 development costs! Yet most people believe of software is not adequately tested when delivered. Testing is difficult; complete testing is impossible; a good process and automated tools help! 2 Practice 5: Verify Software Quality Software problems are 100 to 1000 times more costly to find and repair after deployment Cost Development Deployment One of the ways to improve quality: Test early and continuously! 21 3 Test functionality, reliability; performance; Test architectural decisions early. Iterative Development Permits Continuous Testing ensuring higher Quality Iteration 1 R D C T R D C T Iteration 2 Iteration 3 R D C T T I M E Test Test Test Test Life Cycle Plan Design Implement Execute Assess Plan Design Implement Execute Assess! Plan Design Implement Execute Assess! 21 4 Verifying Quality and Continuous Testing (continued) Rather than test one time, spread testing out continuously. Part of each iteration BUT (see below) Each iteration produces an executable release (not necessarily a product release...) Don't think of an `executable' as just an .exe or .dll. The executables may be part of an architecture...... Each iteration is tested and integrated into an evolving application. Note: In the RUP, Each `phase' has one or more iterations, and each phase has milestones! Be careful: The `extent (how much)' of R, D, C, T depends on which phase the iteration is in! (See your drawings of the UP) 21 5 Testing in an Iterative Environment Requirements Iteration 1 Iteration 2 Iteration 3 Iteration 4 Continuous integration!!! (one of the major problems of SDLC!) We will produce automated tests (IF AVAILABLE in your `environment') As new requirements are added in iterations, new tests are generated and run. This means that some tests will be rerun part of `Regression Testing.' Automated Tests Test Suite 1 Test Suite 2 Test Suite 3 Test Suite 4 21 6 Quality What is it? It is an elusive term Means different things to different people Next few slides from OOSE text slides; modified 21 7 Usability Users can learn it fast and get their Software Quality... job done easily (usually addressed in Interface) Efficiency It doesn't waste resources like CPU time and memory (addressed in execution) Reliability It does what it is required to do without failing (MTBF, MTTR...) Maintainability It can be easily changed Reusability Its parts can be used in other projects, so reprogramming is not needed 21 8 Software Quality...again, means different things to different stakeholders Customer: solves problems at an acceptable cost in terms of money paid and resources used QUALITY SOFTWARE Developer: easy to design; easy to maintain; easy to reuse its parts 21 User: easy to learn; efficient to use; helps get work done Development manager: sells more and pleases customers while costing less to develop and maintain 9 Software Quality The different qualities can conflict. Increasing efficiency can reduce maintainability or reusability Increasing usability can reduce efficiency Increasing usability can reduce maintainability Increasing maintainability can reduce efficiency, etc! Setting objectives for quality is a key engineering activity Then design to meet these objectives Avoids `overengineering' which wastes money Obtain the highest possible reliability using a fixed budget 21 10 Short Term Vs. Long Term Quality Short term: Does the software meet the customer's immediate needs? Is it sufficiently efficient for the volume of data we have today? Long term: (more in terms of `quality factors' Maintainability Customer's future needs Scalability 21 11 Dimensions of Software Quality Type Functionality Reliability Application Performance System Performance Why? Does my app do what's required? Does my app leak memory? Does my app respond acceptably? Does my system perform under production load? How? Test cases for each scenario implemented Analysis tools and code instrumentation Check performance for each use-case/scenario implemented Test performance of all usecases under authentic and worst-case load For each iteration, do the `above' software quality checks. Remember: tests are `driven' by Use Cases and Supplementary Specifications! 21 12 Problems Addressed by Verifying Quality Root Causes Insufficient requirements Ambiguous communications Brittle architectures Overwhelming complexity Subjective assessment Undetected inconsistencies Poor testing Waterfall development Uncontrolled change Insufficient automation Solutions Testing provides objective project status assessment Objective assessment exposes inconsistencies early (continuous integration helps!) Testing and verification are focused on high risk areas Defects are found earlier and are less expensive to fix (because `testing' is distributed... Automated testing tools provide testing for reliability, functionality, and performance 21 13 Practice 6: Control Changes to Software Develop Iteratively Manage Requirements Use Component Architectures Model Visually Verify Quality Control Changes Must recognize that we CANNOT STOP CHANGE. Our goal is to Manage Change! The only `constant' is `change!' This DOES NOT MEAN that we absolutely accept ALL changes, But...(Discuss!) Want a process that can respond to change...(UP) 21 14 Must synchronize Change across development teams and locations too. (What impacts do proposed changes have on our architecture!) Must control How and When control is introduced and who introduces the changes. Practice 6: Control Changes to Software Consider: we often have: Multiple developers Multiple teams Multiple sites Multiple iterations Multiple releases Multiple projects Multiple platforms All at the same time! May have multiple developers organized into different teams at multiple sites all working together on multiple iterations, releases, products, and platforms (mostly based on the software architecture) Without explicit control, parallel development degrades to chaos!!!! 21 15 Three Major Aspects of a CM System Controlling Change involves a Change Management System and a Configuration Management System for version control, releases, etc. (this is beyond where we will go in this course...) CR = change request (version control; evolving products...) 21 16 Concepts of Configuration & Change Management Decompose the architecture into layers, packages, subsystems etc., and assign responsibility for these architectural elements to team/teams. Establish secure workspaces for each developer Provide isolation from changes made in other workspaces Control all software artifacts models, code, docs, etc. Establish an integration workspace Establish an enforceable change control mechanism Know which changes appear in which releases Release a tested baseline at the completion of each iteration 21 Versioning; baselines; ... 17 Problems Addressed by Controlling Changes Root Causes Insufficient requirements Ambiguous communications Brittle architectures Overwhelming complexity Subjective assessment Undetected inconsistencies Poor testing Waterfall development Uncontrolled change Insufficient automation Requirements change; workflow is defined and repeatable Change requests facilitate clear communications Isolated workspaces reduce interference from parallel work Change rate statistics are good metrics for objectively assessing project status Workspaces contain all artifacts, facilitating consistency Change propagation is controlled Changes maintained in a robust, customizable system 21 18 Solutions Best Practices Reinforce Each Other What does iterative development do?? Ensure users involved as requirements evolve Manage Requirements Use Validate architecture Component decisions early on. Drives development, Architectures planning, change control. .... Develop Iteratively Addresse complexity of design/implementation incrementally. Need tools/support environment! Measure quality early and often. Continuous testing and integration Evolve baseline incrementally Architecture teams localizing changes; Need CMS, Config Control... 21 Model Visually Verify Quality Control Changes 19 Remember: best practices yield best results WHEN USED COLLECTIVELY! Summary: Best Practices of Software Engineering The result is software that is On Time On Budget Analyst Meets/Exceeds Users Needs Develop Iteratively Performance Engineer Project Manager Developer Use Manage Component Requirements Architectures Model Visually Verify Quality Tester Release Engineer Control Changes 21 20 ...
View Full Document

This note was uploaded on 10/04/2011 for the course CEN 6016 taught by Professor Bobroggio during the Fall '11 term at University of South Florida.

Ask a homework question - tutors are online