CHAPTER 12: SOFTWARE DEVELOPMENT 12.1 PROGRAM DEVELOPMENT LIFECYCLE 12.1.1 Stages Analysis:  Understand problem, identify requirements Design:  Create solution structure, algorithms Coding:  Write actual program code Testing:  Find and fix errors Maintenance:  Update and improve after delivery 12.1.2 Development Models Waterfall: Sequential phases Each phase completes before next begins Good for well-defined requirements Iterative: Develop in cycles Each iteration produces working version Allows feedback and improvement RAD (Rapid Application Development): Quick development using pre-built components Emphasis on prototyping Fast user feedback 12.2 PROGRAM DESIGN 12.2.1 Structure Chart Purpose: Decompose problem into sub-tasks Shows: Modules/procedures/functions Parameters passed between modules 12.2.2 State-Transition Diagrams Purpose: Document algorithm behavior Shows: Different states Transitions between states 12.3 PROGRAM TESTING AND MAINTENANCE 12.3.1 Error Types Type Description Syntax Violation of language rules Logic Incorrect algorithm implementation Runtime Error during execution 12.3.2 Testing Methods Method Description Dry Run Manual execution using test data Walkthrough Team reviews code White Box Tests internal structure Black Box Tests functionality only Integration Test combined components Alpha Testing by developers Beta Testing by users Acceptance Final testing by client 12.3.3 Test Data Type Description Normal Typical valid data Extreme/Boundary At limits of valid range Abnormal/Invalid Invalid data 12.3.4 Maintenance Types Type Description Corrective Fixing errors Adaptive Adapting to environment changes Perfective Improving performance/functionality