Chapter 1 Software DevelopmentSoftware DevelopmentSlide 3Software Development PhasesSoftware Development ModelWaterfall ModelRealistic Waterfall ModelSlide 8Problem Analysis and SpecificationTask ExampleTask AnalysisSlide 12DesignTop-down designOne level partitionTwo level partitionThree level partitionOOD:Object-Oriented DesignProgram=Algorithm + Data StructureAlgorithmsSlide 21CodingSlide 23Testing, Execution, and DebuggingDifferent Kinds Of Tests RequiredThe "V" Life Cycle ModelTwo major types of testingSlide 28Slide 29MaintenanceChapter 1 Software DevelopmentDr. Bernard Chen Ph.D.University of Central ArkansasFall 2008Software DevelopmentHardware: actual physical components (such as CPU, memory, hard drive…)Software: refers to programs used to control the operation of the hardware.Software DevelopmentSoftware development is a complex process that is both an art and a scienceIt is an art in that it requires a good deal of imagination, creativity, and ingenuityIt is also a science that it uses certain standard techniques and methodologiesSoftware Development PhasesProblem Analysis and SpecificationDesignCodingTesting, Execution, and DebuggingMaintenanceSoftware Development ModelOne of the earliest strategies for development software is known as the Waterfall ModelWaterfall ModelRealistic Waterfall ModelSoftware Development PhasesProblem Analysis and SpecificationDesignCodingTesting, Execution, and DebuggingMaintenanceProblem Analysis and SpecificationProblem Analysis and Specification: The problem is analyzed and a specification for the problem is formulatedFor example: if we obtain a job request looks like:Task ExampleBecause of new government regulations, we must keep more accurate record of all students currently receiving financial aid and submit regular report to FFAO (Federal Financial Aid Office). Could we get the computer to do this for us???Task AnalysisPurposePre-condition (input): describe the state of processing before the program is executedPost-condition (output): describe the state of processing after the program is executedSoftware Development PhasesProblem Analysis and SpecificationDesignCodingTesting, Execution, and DebuggingMaintenanceDesignDesign: A plan for solving the problem is formulatedVarious design methods have been developed, two of major designs we describe here: top-down design and object-oriented designTop-down designThe original problem is partitioned into simpler subproblemsFor example, the problem we just had can be obviously divided into:1. Get the student records2. Process the records3. Prepare the reportsOne level partitionTwo level partitionThree level partitionOOD:Object-Oriented DesignIdentify the objects in the problem's specification and their types.Identify the operations or tasks to manipulate the objectsProgram=Algorithm + Data StructureAlgorithm: “a step by step procedure for solving a problem or accomplishing some end”In computer science, algorithm must be:1. Definite, unambiguous2. Simple3. FiniteAlgorithmsUnstructured• goto's• if-else'sStructured• while loop• switch stmtSoftware Development PhasesProblem Analysis and SpecificationDesignCodingTesting, Execution, and DebuggingMaintenanceCodingThere’s not much we can talk in coding, you all know what it is. After you select the language, three major principles you need to follow:1. Programs and Subprograms should be well structured2. All source code should be documented3. It should be formatted in a style that enhances its readabilitySoftware Development PhasesProblem Analysis and SpecificationDesignCodingTesting, Execution, and DebuggingMaintenanceTesting, Execution, and DebuggingErrors happen all the time!!!There are three different points at which errors can be introduced:1. Syntax errors2. Run-time errors3. Logic errorsDifferent Kinds Of Tests RequiredUnit tests:Each individual program unit works?Program components tested in isolationIntegration tests : Units combined correctly?Component interface and information flow testedSystem tests: Overall system works correctly?25The "V" Life Cycle ModelTwo major types of testingBlack box testing:Outputs produced for various inputsChecked for correctness Do not consider structure of program component itself.(so basically, it just test a lot of different inputs and match with the expected outputs )Two major types of testingWhite box testing:examine code’s internal structure(Test for every loop, if statement, functions…)Test data is carefully selectedSoftware Development PhasesProblem Analysis and SpecificationDesignCodingTesting, Execution, and DebuggingMaintenanceMaintenanceAfter the software has been used for several years, they will require modificationsStudies show that a higher percentage of computing budgets and programmer time are devoted to software maintenance1970s 35-40%1980s 40-60%1990s 70-80%2000s
View Full Document