
Unconventional Insights into Software Design and Architecture
Explore unconventional perspectives on software design and architecture, challenging traditional notions and advocating for skipping requirements engineering, emphasizing coding, and viewing design models in different dimensions. Discover the layered elements of the design model and the iterative evolution towards architectural structure and style.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
There is no definite formulation There is no stopping rule Solutions are not simply true or false Every wicked problem is a symptom of another problem Software Design & Architecture 2
Skip requirements engineering and design phases; start writing code Software Design & Architecture 3
Design is a waste of time We need to show something to the customer real quick We are judged by the amount of LOC/month We expect or know that the schedule is too tight Software Design & Architecture 4
The longer you postpone coding, the sooner you ll be finished Software Design & Architecture 5
The design model can be viewed in two different dimensions (Horizontally) The process dimension indicates the evolution of the parts of the design model as each design task is executed (Vertically) The abstraction dimension represents the level of detail as each element of the analysis model is transformed into the design model and then iteratively refined Elements of the design model use many of the same UML diagrams used in the analysis model The diagrams are refined and elaborated as part of the design More implementation-specific detail is provided Emphasis is placed on Architectural structure and style Interfaces between components and the outside world Components that reside within the architecture 6 Software Design & Architecture 6
Design model elements are not always developed in a sequential fashion Preliminary architectural design sets the stage It is followed by interface design and component-level design, which often occur in parallel The design model has the following layered elements Data/class design Architectural design Interface design Component-level design A fifth element that follows all of the others is deployment-level design Component-level Design Interface Design Architectural Design Data/Class Design 7 Software Design & Architecture 7
Principles 1. Design must be traceable to the analysis model 2. Always consider architecture 3. Focus on the design of data 4. Interfaces (both user and internal) must be designed 5. User interfaces should be tuned to the needs of end user 6. Components should exhibit functional independence 7. Components should be loosely coupled 8. Design representation should be easily understood 9. The design model should be developed iteratively Software Design & Architecture 8
Analysis model Design model Data/Class Elements Architectural Elements Interface Elements Component-level Elements Deployment-level Elements
Architecture is the Skelton of the system to be built. It affects: Interfaces Data Structures Program Control Flow Behavior The manner in which testing is conducted Maintainability Design should start with architectural consideration Software Design & Architecture 11
Design of data is as importance as design of processing functions. It simplifies: Program flow Implementation of software components Make Processing more efficient Software Design & Architecture 12
The manner in which data flows between components of system has much to do with processing efficiency, error propagation & design simplicity. Well designed interfaces makes integration easier. Helps the tester in validating component functions Software Design & Architecture 13
User interface design should be tuned to the needs of the end-user. Poor interface design leads to the perception that software is bad. Software Design & Architecture 14
Component level design should be functionally independent Functional independence is the measure of single mindedness of a software component. The functionality that is delivered by a component should be cohesive. Focus must be on one & only one function or sub function. Software Design & Architecture 15
Coupling is achieved via component interface, by messaging, through global data. Level of coupling increase result in likelihood or error propagation & effects overall maintainability of software. Software Design & Architecture 16
The purpose of design is to communicate information to programmers, testers and to those who maintain the software. If design is difficult to understand; it will not server as an effective communication medium. Software Design & Architecture 17
First iterations work to refine the design & correct errors. Later design iterations should strive to make the design as simple as possible Software Design & Architecture 18