Quality Software Development Software Developer Do’s & Don'ts
What is software 'quality'?  <ul><li>Quality software is  </li></ul><ul><li>reasonably bug-free,  </li></ul><ul><li>delive...
What is 'good code'? <ul><li>'Good code' is code that  </li></ul><ul><li>works,  </li></ul><ul><li>is reasonably bug free,...
What is 'good design'?  <ul><li>Good internal design is indicated by  </li></ul><ul><li>software code whose overall struct...
Good functional design <ul><li>Good functional design is indicated by an application whose functionality can be traced bac...
What are 5 common problems in the software development process?  <ul><li>Poor requirements   -  if requirements are unclea...
What are 5 common solutions to software development problems?   <ul><li>solid requirements  -  clear, complete, detailed, ...
7 Principles of Quality Development Process <ul><li>The First Principle:  The Reason It All Exists   </li></ul><ul><li>A s...
The Second Principle: KIS (Keep It Simple) <ul><li>There are many factors to consider in any design effort.  All design sh...
The Third Principle: Maintain the Vision <ul><li>A clear vision is essential to the success of a software project . Withou...
The Fourth Principle:  What You Produce, Others Will Consume <ul><li>always specify, design, and implement knowing someone...
The Fifth Principle: Be Open to the Future <ul><li>A system with a long lifetime has more value . In today's computing env...
The Sixth Principle: Plan Ahead for Reuse <ul><li>Reuse saves time and effort. Achieving a high level of reuse is arguably...
The Seventh Principle: Think!   <ul><li>This last Principle is probably the most overlooked.  Placing clear, complete thou...
Coding standards <ul><li>Keep It Simple . </li></ul><ul><li>Try keeping your methods as small as possible </li></ul><ul><l...
Some Principles for Developers <ul><li>Focus on the User and the task not on the Technology </li></ul><ul><li>Consider Fun...
Use all the tools you can <ul><li>Tools can make the life of a software developer so much easier </li></ul><ul><li>Profile...
Tools exist for various development tasks: <ul><li>Profilers .   </li></ul><ul><li>Profilers are a great help when looking...
Code inspections . <ul><li>A lot of things that could be wrong in your code can be found using tools. </li></ul><ul><li>Fx...
<ul><li>Visual Studio Add-ins .  These are simply great. An add-in extends the standard functionality of Visual Studio to ...
<ul><li>Version Control management.  Whatever someone might suggest, you cannot live without a proper Version Control Mana...
Thank You….! ANU
Upcoming SlideShare
Loading in …5
×

Quality Software Development

606 views

Published on

Quality Software Development

Published in: Business, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
606
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
29
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Quality Software Development

  1. 1. Quality Software Development Software Developer Do’s & Don'ts
  2. 2. What is software 'quality'? <ul><li>Quality software is </li></ul><ul><li>reasonably bug-free, </li></ul><ul><li>delivered on time and within budget, </li></ul><ul><li>meets requirements and/or expectations, </li></ul><ul><li>and is maintainable. </li></ul>
  3. 3. What is 'good code'? <ul><li>'Good code' is code that </li></ul><ul><li>works, </li></ul><ul><li>is reasonably bug free, </li></ul><ul><li>and is readable and maintainable. </li></ul>
  4. 4. What is 'good design'? <ul><li>Good internal design is indicated by </li></ul><ul><li>software code whose overall structure is clear, </li></ul><ul><li>understandable, </li></ul><ul><li>easily modifiable, </li></ul><ul><li>and maintainable; </li></ul><ul><li>is robust with sufficient error-handling and status logging capability; </li></ul><ul><li>and works correctly when implemented </li></ul>
  5. 5. Good functional design <ul><li>Good functional design is indicated by an application whose functionality can be traced back to customer and end-user requirements. </li></ul>
  6. 6. What are 5 common problems in the software development process? <ul><li>Poor requirements - if requirements are unclear, incomplete, too general, and not testable, there will be problems. </li></ul><ul><li>Unrealistic schedule - if too much work is crammed in too little time, problems are inevitable. </li></ul><ul><li>Inadequate testing - no one will know whether or not the program is any good until the customer complains or systems crash. </li></ul><ul><li>Featuritis - requests to pile on new features after development is underway; extremely common. </li></ul><ul><li>Miscommunication - if developers don't know what's needed or customer's have erroneous expectations, problems can be expected. </li></ul>
  7. 7. What are 5 common solutions to software development problems? <ul><li>solid requirements - clear, complete, detailed, cohesive, attainable, testable requirements that are agreed to by all players. </li></ul><ul><li>realistic schedules - allow adequate time for planning, design, testing, bug fixing, re-testing, changes, and documentation; personnel should be able to complete the project without burning out. </li></ul><ul><li>adequate testing - start testing early on, re-test after fixes or changes, plan for adequate time for testing and bug-fixing. 'Early' testing could include static code analysis/testing, test-first development, unit testing by developers, built-in testing and diagnostic capabilities, automated post-build testing, etc. </li></ul><ul><li>stick to initial requirements where feasible - be prepared to defend against excessive changes and additions once development has begun, and be prepared to explain consequences. If changes are necessary, they should be adequately reflected in related schedule changes . </li></ul><ul><li>communication - require walkthroughs and inspections when appropriate; make extensive use of group communication tools - groupware, wiki's, bug-tracking tools and change management tools, intranet capabilities, etc. </li></ul>
  8. 8. 7 Principles of Quality Development Process <ul><li>The First Principle: The Reason It All Exists </li></ul><ul><li>A software system exists for one reason: to provide value to its users . </li></ul><ul><li>Before specifying a system requirement, before noting a piece of system functionality, before determining the hardware platforms or development processes, ask yourself questions such as: &quot; Does this add real VALUE to the system?&quot; If the answer is &quot; no &quot;, don't do it . All other principles support this one. </li></ul>
  9. 9. The Second Principle: KIS (Keep It Simple) <ul><li>There are many factors to consider in any design effort. All design should be as simple as possible, but no simpler . This facilitates having a more easily understood, and easily maintained system. </li></ul><ul><li>Simple also does not mean &quot;quick and dirty.&quot; In fact, it often takes a lot of thought and work over multiple iterations to simplify. The payoff is software that is more maintainable and less error-prone. </li></ul>
  10. 10. The Third Principle: Maintain the Vision <ul><li>A clear vision is essential to the success of a software project . Without one, a project almost unfailingly ends up being &quot;of two [or more] minds&quot; about itself. Without conceptual integrity, a system threatens to become a patchwork of incompatible designs, held together by the wrong kind of screws. </li></ul>
  11. 11. The Fourth Principle: What You Produce, Others Will Consume <ul><li>always specify, design, and implement knowing someone else will have to understand what you are doing . The audience for any product of software development is potentially large. Specify with an eye to the users. </li></ul>
  12. 12. The Fifth Principle: Be Open to the Future <ul><li>A system with a long lifetime has more value . In today's computing environments, where specifications change on a moment's notice and hardware platforms are obsolete when just a few months old, software lifetimes are typically measured in months instead of years. However, true &quot;industrial-strength&quot; software systems must endure far longer. To do this successfully, these systems must be ready to adapt to these and other changes. </li></ul>
  13. 13. The Sixth Principle: Plan Ahead for Reuse <ul><li>Reuse saves time and effort. Achieving a high level of reuse is arguably the hardest goal to accomplish in developing a software system. The reuse of code and designs has been proclaimed as a major benefit of using object-oriented technologies. However, the return on this investment is not automatic. </li></ul><ul><li>“ Planning ahead for reuse reduces the cost and increases the value of both the reusable components and the systems into which they are incorporated .” </li></ul>
  14. 14. The Seventh Principle: Think! <ul><li>This last Principle is probably the most overlooked. Placing clear, complete thought before action almost always produces better results . When you think about something, you are more likely to do it right. You also gain knowledge about how to do it right again. </li></ul>
  15. 15. Coding standards <ul><li>Keep It Simple . </li></ul><ul><li>Try keeping your methods as small as possible </li></ul><ul><li>Use understandable object, method and variable names . </li></ul><ul><li>Comment where needed . </li></ul><ul><li>Write safe code </li></ul><ul><li>Naming conventions </li></ul>
  16. 16. Some Principles for Developers <ul><li>Focus on the User and the task not on the Technology </li></ul><ul><li>Consider Function first Presentation next </li></ul><ul><li>Conforms to the user’s views of the task </li></ul><ul><li>Don’t complicate the users task. </li></ul><ul><li>Promote Learning </li></ul><ul><li>Deliver Information not just the data </li></ul><ul><li>Design the responsiveness </li></ul>
  17. 17. Use all the tools you can <ul><li>Tools can make the life of a software developer so much easier </li></ul><ul><li>Profilers . </li></ul><ul><li>Code inspections . </li></ul><ul><li>Visual Studio Add-ins . </li></ul><ul><li>Code generators . </li></ul><ul><li>Version Control management . </li></ul>
  18. 18. Tools exist for various development tasks: <ul><li>Profilers . </li></ul><ul><li>Profilers are a great help when looking for performance issues. </li></ul><ul><li>Memory profilers exist to check the memory usage of your application. </li></ul><ul><li>Other profilers can measure the performance of your application and/or database. </li></ul><ul><li>They can also help you in deciding if you really need to build a certain component yourself, or if the library version is fast enough. </li></ul><ul><li>Ex :- Devpartner Studio , by Compuware. Not freeware, but a very professional tool. It contains profilers for memory usage, overall application performance. </li></ul>
  19. 19. Code inspections . <ul><li>A lot of things that could be wrong in your code can be found using tools. </li></ul><ul><li>FxCop for example is a freeware tool that can check your .Net assemblies for various mistakes. </li></ul><ul><li>Devpartner Studio , by Compuware, which I mentioned before also contains tools that will check your .Net code for common mistakes. It also produces code complexity calculations to give you an indication about the complexity of your code. </li></ul><ul><li>For this you can also use the community edition of DevMetrics . This freeware version will produce code complexity calculations which can help you find the complex parts of your application. </li></ul>
  20. 20. <ul><li>Visual Studio Add-ins . These are simply great. An add-in extends the standard functionality of Visual Studio to make life as a developer a lot easier. </li></ul><ul><li>Code generators . This can really make developing software fun. As I said earlier, a lot of repetitive work can be eliminated when you use code generators. </li></ul>
  21. 21. <ul><li>Version Control management. Whatever someone might suggest, you cannot live without a proper Version Control Management tool. Use Visual Source Safe , Rational Clear Case , or the open source Concurrent Versions System . And there others. Just make sure you use one </li></ul>
  22. 22. Thank You….! ANU

×