120 likes | 132 Views
Software Development. “Good” Software. When developing software, we strive for software that is correct (meets requirements) reliable (bug-free) easily maintained (corrections and upgrades) reusable. Procedural vs. OO.
E N D
“Good” Software When developing software, we strive for software that is • correct (meets requirements) • reliable (bug-free) • easily maintained (corrections and upgrades) • reusable
Procedural vs. OO • A procedural approach to software looks at the problem in terms of functionality • An OO approach to software looks at the problem in terms of “things”
Software Development Life Cycle Five phases: • Requirements Analysis • Design • Implementation • Testing • Maintenance
Software Development Life Cycle (cont’d) • Requirements Analysis Phase • Formally specify (document) what the problem is • Make sure that you and the “client” agree • Develop system test cases
Software Development Life Cycle (cont’d) • Design Phase • Formally specify (document) how the problem is to be solved • Make sure that the design conforms to the requirements (i.e., it will produce what was specified in the analysis phase)
Example – The game of Chess • Procedural – what are the rules? • OO – what chess pieces are there and how do they move?
More Chess • Procedural – envision a 2-D matrix for the board and functions that move a piece from one square to the next • OO – envision chess pieces and board and their attributes
Software Development Life Cycle (cont’d) • Implementation Phase • Convert the design to code • Procedural -- functions • OO -- objects • Compile and remove all syntax errors
Software Development Life Cycle (cont’d) • Testing Phase • Unit Testing: Test each unit (e.g., function, object) for logic errors and make corrections • Procedural – function test driver • OO – object test driver • System Testing: Test the entire program to make sure that it conforms to the requirements
Software Development Life Cycle (cont’d) • Maintenance Phase • Fix bugs found by the customer • Make modifications ($$!) • Add new features ($$!)
So How Does the S/W Life Cycle Apply to My Projects? • Follow the first four phases, but anticipate the last (Maintenance) • Complete the Analysis • Complete the Design • Do a combination of Implementation and Testing