On the Design and Development of Program FamiliesOulineProblem and MotivationOverview of ContributionSlide 5Slide 6Example applicationSlide 8Slide 9ImpactSlide 11Open QuestionsOn the Design and Development of Program FamiliesDavid ParnasPresented by Gregory BrownIEEE Transactions on Software Engineering, VOL SE-2, NO. 1, March 1976Ouline•Problem and Motivation•Overview of Contribution–Stepwise Refinement–Module Specification•Example Application–Stepwise Refinement–Module Specification•Impact•Open QuestionsProblem and Motivation•Problem–Investigated production of program families–“Classical Method”: sequential completion–Each member was a full working program–Each one built from an ancestor–Each inherits the design decisions of ancestors•Motivation:–Make good, common design decisions up front–Parallel development of family membersOverview of Contribution•Stepwise Refinement•Each member is a functioning program•Successive steps add funcitonality•Each step represents design decision(s)•No unnecessary functionality•No performance degradation•Revert back to previous stepOverview of Contribution•Module Specification•Intermediate steps not programs•Steps are specifications of collections of functionality•Modules made to hide design decisions•Early work designed to postpone decisions•Make a wide program family possibleOverview of Contribution•Module method avoids disadvantages of stepwise refinement•Stepwise refinement does make design decisions - rollback can lose this•The two are complementary•Stepwise refinement lower complexity•Module method requires more workExample application•Stepwise refinement•Dijkstra’s prime problem•Step 1:•bestyet := nullwhile not all.spaces considered dobeginfind next item from list of free spacesbestyet := bestof(bestyet,candidate)endif bestyet = null then erroractionallocate(best yet):remove(best yet)Example application•Stepwise refinement•Step 2:•bestyet := 0candidate := 0while candidate != N dobegincandidate := candidate+1bestyet := bestof(bestyet,candidate)endif bestyet = 0 then erroractionallocate(best yet)remove(best yet)Example application•Module Specification•Dijkstra’s prime problem•Split into information-hiding modules•Modules:–Free space list–Allocation–Selection criteriumImpact•Stepwise refinement is often used–Add functionality to existing software–Using modules and patterns–General strategy to developing systems•Revision control systems•Module specification part of OO design–Encapsulation to hide implementation–Commonly taught and used practice•Module specification allowed for development of patternsImpact•Stepwise refinement and module specification complementary•Can create software in stages, but using modules•Complementary approaches•Use strategy pattern among others to ease workOpen Questions•How could the two best be combined to enhance software development?•When is it a good idea to not use stepwise refinement or module specification?•Does the classic approach Parnas described not have a place at
View Full Document