1 / 19

How to: Design and Develop an Application to Ensure its Quality

How to: Design and Develop an Application to Ensure its Quality. James Hippolite Senior .NET Developer Telecom New Zealand Limited. Agenda. Defining Quality Designing Quality Developing Quality Questions?. Defining Quality. Managing Tradeoffs Fixed Chosen Adjustable

zona
Download Presentation

How to: Design and Develop an Application to Ensure its Quality

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. How to: Design and Develop an Application to Ensure its Quality • James HippoliteSenior .NET DeveloperTelecom New Zealand Limited

  2. Agenda • Defining Quality • Designing Quality • Developing Quality • Questions?

  3. Defining Quality • Managing Tradeoffs • Fixed • Chosen • Adjustable • Quality is the fourth dimension • Should never be compromised Resources Schedule Features

  4. Bad Amorphous Ambiguous Examples Make it fast Make it cool Make it work Good Specific Early Consistent Measurable Evaluate Feedback Defining Quality (cont)

  5. Designing Quality • Scalability • Availability • Reliability • Performance • Interoperability • Localisation & Globalisation

  6. Design for Scalability • Common Approaches • Scaling Up • Scaling Out • Guidelines • Asynchronous • Non-competition of resources • Commutability • Interchangeability • Partition resources and activities

  7. Design for Availability • Measurements • Mean Time Between Failures • Mean Time to Recovery • Guidelines • Reduce planned downtime • Reduce unplanned downtime • Use network load balancing • Use RAID for data stores • Isolate mission-critical applications • Use queuing

  8. Designing for Reliability • The ability of the application to provide accurate results • Tasks • Putting reliability requirements in the specification • Using a good architectural infrastructure • Including management information in the application • Using redundancy • Using quality development tools • Using reliability checks that are provided by the application • Implementing error handling • Reducing the application’s functionality instead of completely failing the application

  9. Designing for Performance • Performance goals and metrics • What is the business goal? • What is the critical functionality of the system? • What are the features required by different sets of users? • Designing for performance • Identifying constraints • Determining features • Specifying the load

  10. Design for Interoperability • Reasons • Reduces operational cost and complexity • Enables optimal deployments • Uses existing investments • Designing for Interoperability • Network interoperability • Data interoperability • Applications interoperability • Management interoperability

  11. Design for Globalisation and Localisation • Definitions • Making the application capable of operating in multiple cultures and locales • Adapting the application to a specific culture and locale • Issues • Language • Formatting • String-related • User interface

  12. Developing Quality • Testing • Reviewing • Training

  13. Testing • Test Often • Unit, Systems, Integration, Load (Stress), User Acceptance, Regression • Test Driven Development • Design test to fail first • Write code to make test pass • Iterate for each function • Refactor to accommodate changes • Voilà! Instant regression tests

  14. Reviewing • Code • This happens naturally, esp. when the customer wants a new function six months (or six years!) later • Take time to appraise code. Is it understandable to another developer? • Peer • Systemic examination of source code intended to find and fix mistakes overlooked in initial development phase • Improves both the overall quality of software and the developer’s skill • Post-Implementation • Project team’s opportunity to discover what went right/wrong

  15. Training • Certification • Maintaining currency with latest technologies • Best Practices • Adhere to coding standards • Source code version control • Design Patterns

  16. Adhere to coding standards • Appropriate use of comments • Use expressive variables • Maintain scope

  17. Design Patterns • Many, small functions = code reuse • N-tier development • Agile development • RAD • Prototyping • Extreme • TDD • MVC

  18. Source code version control • Accidents happen, get your code backed up • Not just accidents, go back a version if necessary • Pair programming • Only check in code that compiles!

  19. Q&A • http://www.geekzone.co.nz/JamesHip/ • http://twitter.com/JamesHip/

More Related