Designing ArchitecturesHow Do You Design?ObjectivesEngineering Design ProcessPotential ProblemsAlternative Design StrategiesIdentifying a Viable StrategyThe Tools of “Software Engineering 101”A Few Definitions… from the OED OnlineAbstraction and the Simple MachinesSimple MachinesChoosing the Level and Terms of DiscourseSeparation of ConcernsThe Grand Tool: Refined ExperiencePatterns, Styles, and DSSAsDomain-Specific Software ArchitecturesArchitectural PatternsState-Logic-Display: Three-Tiered PatternModel-View-Controller (MVC)Model-View-ControllerSense-Compute-ControlThe Lunar Lander: A Long-Running ExampleSense-Compute-Control LLArchitectural StylesDefinitions of Architectural StyleBasic Properties of StylesBenefits of Using StylesStyle Analysis DimensionsSome Common StylesMain Program and Subroutines LLCopyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved.Designing ArchitecturesSoftware ArchitectureLecture 4Foundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture2Where do architectures come from?Method1) Efficient in familiar terrain2) Not always successful 3) Predictable outcome (+ & - )4) Quality of methods variesCreativity1) Fun!2) Fraught with peril3) May be unnecessary4) May yield the best resultHow Do You Design?Foundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture3ObjectivesCreativityEnhance your skill-setProvide new toolsMethodFocus on highly effective techniquesDevelop judgment: when to develop novel solutions, and when to follow established methodFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture4Engineering Design ProcessFeasibility stage: identifying a set of feasible concepts for the design as a wholePreliminary design stage: selection and development of the best concept.Detailed design stage: development of engineering descriptions of the concept.Planning stage: evaluating and altering the concept to suit the requirements of production, distribution, consumption and product retirement.Foundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture5Potential ProblemsIf the designer is unable to produce a set of feasible concepts, progress stops.As problems and products increase in size and complexity, the probability that any one individual can successfully perform the first steps decreases. The standard approach does not directly address the situation where system design is at stake, i.e. when relationship between a set of products is at issue. As complexity increases or the experience of the designer is not sufficient, alternative approaches to the design process must be adopted.Foundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture6Alternative Design StrategiesStandardLinear model described above CyclicProcess can revert to an earlier stage ParallelIndependent alternatives are explored in parallel Adaptive (“lay tracks as you go”)The next design strategy of the design activity is decided at the end of a given stageIncremental Each stage of development is treated as a task of incrementally improving the existing designFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture7Identifying a Viable Strategy Use fundamental design tools: abstraction and modularity. But how? Inspiration, where inspiration is needed. Predictable techniques elsewhere. But where is creativity required?Applying own experience or experience of others.Foundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture8The Tools of “Software Engineering 101”AbstractionAbstraction(1): look at details, and abstract “up” to conceptsAbstraction(2): choose concepts, then add detailed substructure, and move “down”Example: design of a stack classSeparation of concernsFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture9A Few Definitions… from the OED OnlineAbstraction: “The act or process of separating in thought, of considering a thing independently of its associations; or a substance independently of its attributes; or an attribute or quality independently of the substance to which it belongs.” Reification: “The mental conversion of … [an] abstract concept into a thing.” Deduction: “The process of drawing a conclusion from a principle already known or assumed; spec. in Logic, inference by reasoning from generals to particulars; opposed to INDUCTION.” Induction: “The process of inferring a general law or principle from the observation of particular instances (opposed to DEDUCTION, q.v.).”Foundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture10Abstraction and the Simple MachinesWhat concepts should be chosen at the outset of a design task? One technique: Search for a “simple machine” that serves as an abstraction of a potential system that will perform the required task For instance, what kind of simple machine makes a software system embedded in a fax machine? At core, it is basically just a little state machine.Simple machines provide a plausible first conception of how an application might be built.Every application domain has its common simple machines.Foundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture11Simple MachinesDomain Simple MachinesGraphics Pixel arraysTransformation matricesWidgetsAbstract depiction graphsWord processing Structured documentsLayoutsProcess control Finite state machinesIncome Tax Software Hypertext SpreadsheetsForm templatesWeb pages HypertextComposite documentsScientific computing MatricesMathematical functionsBanking SpreadsheetsDatabasesTransactionsFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture12Choosing the Level and Terms of DiscourseAny attempt to use abstraction as a tool must choose a level of discourse, and once that is chosen, must choose the terms of discourse. Alternative 1: initial level of discourse is one of the application as a whole (step-wise refinement).Alternative 2: work, initially, at a level lower than that of the whole application. Once several such sub-problems are solved they can be composed together to form an overall solution Alternative 3: work, initially, at a level above that of the desired application.E.g. handling simple application input with a general parser.Foundations,
View Full Document