Software Design: Software Design: The Next Step The Next Step A presentation by A presentation by Sean Matthews Sean Matthews
Jan 18, 2016
Software Design: The Software Design: The Next StepNext Step
A presentation byA presentation by Sean Matthews Sean Matthews
Kruchen, P. 2005. "Editor's Introduction: Software Design in a Postmodern Era." Software, IEEE 22 (2): 16-18.
Kruchten, P. 2005. "Casting software design in thefunction-behavior-structure framework." Software, IEEE 22 (2): 52-58.
IntroIntro
We’ve reached a plateau in We’ve reached a plateau in software designsoftware design
What are the next directions?What are the next directions? Where are we?Where are we? Where do we go from here?Where do we go from here?
Where are we?Where are we?
“…“…we can systematically we can systematically harvest and organize our harvest and organize our collective knowledge, collective knowledge, experience, and wisdom– experience, and wisdom– variously captured in design variously captured in design principles and heuristics, principles and heuristics, patterns, best practices, and patterns, best practices, and bad smells– into a coherent bad smells– into a coherent whole.”whole.”
Where do we go from here?Where do we go from here?
We need to…We need to… Bridge the gap between user Bridge the gap between user
needs and the way we express needs and the way we express requirementsrequirements
Improve design analysis, Improve design analysis, validation, and verification validation, and verification techniquestechniques
Bridge the gap between design Bridge the gap between design and code that programmers create and code that programmers create manuallymanually
RequirementsEngineering
Design
Coding
Where do we go from here?Where do we go from here?
Expand the boundaries of Expand the boundaries of software design to fill in the software design to fill in the gapsgaps ““When we program and test, we’re When we program and test, we’re
making decisions about the making decisions about the system under construction: this is system under construction: this is doing design.”doing design.”
Design activities should be Design activities should be included in other parts of the included in other parts of the software development processsoftware development process
Analogous situationsAnalogous situations
To demonstrate how and why To demonstrate how and why design should be combined with design should be combined with other phases of the SD process, other phases of the SD process, the author casts it in a general, the author casts it in a general, recently formulated engineering recently formulated engineering framework.framework.
Functional-Behavior-StructureFunctional-Behavior-Structure
A development framework A development framework applicable to any engineering applicable to any engineering disciplinediscipline
John Gero, design scientistJohn Gero, design scientist 8 processes link a set of five 8 processes link a set of five
elements that lead us from a set elements that lead us from a set of abstract functions to a design of abstract functions to a design descriptiondescription
Functional-Behavior-StructureFunctional-Behavior-Structure
FBS ElementsFBS Elements F: functionsF: functions Be: expected behaviorsBe: expected behaviors Bs: behaviors (actual)Bs: behaviors (actual) S: synthesisS: synthesis D: documentationD: documentation
Functional-Behavior-StructureFunctional-Behavior-Structure
FBS ProcessesFBS Processes Formulation (F Formulation (F Be) Be) Synthesis (Be Synthesis (Be S) S) Analysis (S Analysis (S Bs) Bs) Evaluation (Be Evaluation (Be Bs) Bs) Documentation (S Documentation (S D) D) Structural reformulation (S Structural reformulation (S S) S) Behavioral reformulation (S Behavioral reformulation (S Be) Be) Functional reformulation (S Functional reformulation (S F) F)
FBS FrameworkFBS Framework
Applying FBS to SEApplying FBS to SE
“…“…design is making choices that design is making choices that will shape the final product.”will shape the final product.”
Requirements, coding, and Requirements, coding, and testing activities all involve some testing activities all involve some designdesign
Traditionally, design means Traditionally, design means “building a model of the system “building a model of the system to be constructed up to the point to be constructed up to the point at which coding can begin.”at which coding can begin.”
Applying FBS to SEApplying FBS to SE
Applying FBS to SEApplying FBS to SE
SE lessons from FBSSE lessons from FBS
Lack of fundamental theoryLack of fundamental theory Physics has its lawsPhysics has its laws Evaluation process is Evaluation process is
experimentalexperimental Concrete Concrete SS, almost no addition to , almost no addition to DD
SE lessons from FBSSE lessons from FBS
Legacy systemsLegacy systems D D S S Be Be F F
ReuseReuse F F Be Be S S ““catalogue look-up”catalogue look-up”
SE lessons from FBSSE lessons from FBS
ModelingModeling ……to automate the coding and to automate the coding and
deployment artifactsdeployment artifacts ……to describe a system’s expected to describe a system’s expected
behavior (Be), and thereby behavior (Be), and thereby facilitate the synthesis (S) processfacilitate the synthesis (S) process
SE lessons from FBSSE lessons from FBS
Design patternsDesign patterns If FIf F1 1 and Bsand Bs1 1 = F= F2 2 and Bsand Bs22, then , then
the designs are analogousthe designs are analogous We can communicate design We can communicate design
fragments and share and reuse fragments and share and reuse practical solutions for recurrent practical solutions for recurrent problems.problems.
The BIG pictureThe BIG picture
In software production, In software production, programming programming is primarily a design activityis primarily a design activity In software manufacturing it is notIn software manufacturing it is not Decisions about structure and the way Decisions about structure and the way
something is donesomething is done Also, testing to a smaller extentAlso, testing to a smaller extent
Assessment of test results determine Assessment of test results determine whether design needs reworkingwhether design needs reworking
ConclusionsConclusions
Generally, something gets lost Generally, something gets lost between design and between design and implementation.implementation.
With FBS, design becomes part With FBS, design becomes part of coding and implementation.of coding and implementation.
SE needs to find approaches to SE needs to find approaches to describing software that easily describing software that easily translate to static analysis and translate to static analysis and code generation.code generation.
Kruchen, P. 2005. "Editor's Introduction: Software Design in a Postmodern Era." Software, IEEE 22 (2): 16-18.
Kruchten, P. 2005. "Casting software design in thefunction-behavior-structure framework." Software, IEEE 22 (2): 52-58.
ReferencesReferences