Upload
jeffrey-benson
View
216
Download
0
Embed Size (px)
Citation preview
1
Life Cycle of Software
• Specification• Design
– Risk Analysis– Verification
• Coding• Testing
– Refining– Production
• Maintenance
2
Modularity
• Abstraction– Separates the purpose of a module from its
implementation
• Abstract data type – collection of data and a set of operations on
the data
• Information Hiding
• Top Down Design
3
Object Oriented Design
• Encapsulation– Objects combine data and operations
• Inheritance– Classes can inherit properties from other
classes
• Polymorphism– Objects can determine appropriate operations
at execution time
4
Design Guidelines
• Use OOD and TDD together– Develop abstract data types and algorithms together
• Use OOD for problems that primarily involve data
• Use TDD to design algorithms for an objects operations
• Consider TDD for problems that emphasize algorithms over data
• Focus on what not how• Reuse
5
Key Programming Issues
• Modularity• Modifiability• Ease of Use
– Prompt for input– Echo the input– Label the output
• Fail-safe programming• Style• Debugging
6
Style
• Extensive use of functions
• Use of private data members
• No global data
• Proper use of reference arguments
• Error handling
• Readability
• Documentation