Designing Architectures Software Architecture Lecture 4 Copyright Richard N Taylor Nenad Medvidovic and Eric M Dashofy All rights reserv Software Architecture Foundations Theory and Practice How Do You Design Where do architectures come from Creativity 1 2 3 4 Fun Fraught with peril May be unnecessary May yield the best result 1 2 3 4 Efficient in familiar terrain Not always successful Predictable outcome Quality of methods varies Method 2 Software Architecture Foundations Theory and Practice Objectives Creativity Enhance your skill set Provide new tools Method Focus on highly effective techniques Develop judgment when to develop novel solutions and when to follow established method 3 Software Architecture Foundations Theory and Practice Engineering Design Process Feasibility stage identifying a set of feasible concepts for the design as a whole Preliminary 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 4 Software Architecture Foundations Theory and Practice Potential Problems If 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 5 Software Architecture Foundations Theory and Practice Alternative Design Strategies Standard Linear model described above Cyclic Process can revert to an earlier stage Parallel Independent 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 stage Incremental Each stage of development is treated as a task of incrementally improving the existing design 6 Software Architecture Foundations Theory and Practice Identifying 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 7 Software Architecture Foundations Theory and Practice The Tools of Software Engineering 101 Abstraction Abstraction 1 look at details and abstract up to concepts Abstraction 2 choose concepts then add detailed substructure and move down Example design of a stack class Separation of concerns 8 Software Architecture Foundations Theory and Practice A Few Definitions from the OED Online Abstraction 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 9 Software Architecture Foundations Theory and Practice Abstraction and the Simple Machines What 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 10 Software Architecture Foundations Theory and Practice Simple Machines Domain Simple Machines Graphics Pixel arrays Transformation matrices Widgets Abstract depiction graphs Word processing Structured documents Layouts Process control Finite state machines Income Tax Software Hypertext Spreadsheets Form templates Web pages Hypertext Composite documents Scientific computing Matrices Mathematical functions Banking Spreadsheets Databases Transactions 11 Software Architecture Foundations Theory and Practice Choosing the Level and Terms of Discourse Any 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 12 Software Architecture Foundations Theory and Practice Separation of Concerns Separation of concerns is the subdivision of a problem into hopefully independent parts The difficulties arise when the issues are either actually or apparently intertwined Separations of concerns frequently involves many tradeoffs Total independence of concepts may not be possible Key example from software architecture separation of components computation from connectors communication 13 Software Architecture Foundations Theory and Practice The Grand Tool Refined Experience Experience must be reflected upon and refined The lessons from prior work include not only the lessons of successes but also the lessons arising from failure Learn from success and failure of other engineers Literature Conferences Experience can provide that initial feasible set of alternative arrangements for the design as a whole 14 Software Architecture Foundations Theory and Practice Patterns Styles and DSSAs 15 Software Architecture Foundations Theory and Practice Richard N Taylor Nenad Medvidovic and Eric M Dashofy 2008 John Wiley Sons Inc Reprinted with permission Software Architecture Foundations Theory and Practice Domain Specific Software Architectures A DSSA is an assemblage of software components specialized for a particular type of task domain
View Full Document