1 / 58

Introduction to Software Design

Introduction to Software Design. Outline. Problems in software architectural design Function, form, and fabrication (the Vitruvian triad) The scope of design The psychology and philosophy of design General methodology of design. Problems in Software Architectural Design.

emily
Télécharger la présentation

Introduction to Software Design

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Software Design

  2. Outline • Problems in software architectural design • Function, form, and fabrication (the Vitruvian triad) • The scope of design • The psychology and philosophy of design • General methodology of design

  3. Problems in Software Architectural Design • An ad hoc approach to design does not scale with respect to the size and complexity of the application. • As the number of functions and quality attributes grows, so does the need for more control of the application design.

  4. Obstacles to Achieving High-Quality Architectural Design • A lack of awareness of the importance of architectural design to software development. • A lack of understanding of the role of the software architect. • A widespread view than designing is an art form, not a technical activity. • A lack of understanding of the design process.

  5. Obstacles to Achieving High-Quality Architectural Design (Cont’d) • A lack of design experience in a development organization. • Insufficient software architecture design methods and tools. • A lack of understanding of how to evaluate designs. • Poor communication among stakeholders.

  6. When Are the Architecture Design Activities Done? • They can be practiced during any phase of the development process. • However, to be of greatest benefit they should be done as early as possible. • These activities can be viewed as a linear set of steps that can be repeated whenever missing information or hidden assumptions are identified.

  7. Solving These Problems Involves: • Evangelizing the importance of software architecture. • Improving software architecture education. • Using architectural methods and tools.

  8. Function, Form, and Fabrication: The Vitruvian Triad • In hisTen Books on Architecture Vitruvius wrote that the result of architecting should be an artifact exhibiting the principles of firmitas, utilitas, and venustas. • These three principles are know as the Vitruvian Triad.

  9. The Vitruvian Triad • “Firmitas will be observed if, whatever the building materials may be, they have been chosen with care but not with excessive frugality.” (fabrication/durability) • “Utilitas will be observed if the design allows faultless, unimpeded use through the disposition of the spaces and the allocation of each type of space is properly oriented, appropriate, and comfortable.” (function/usefulness) • “Venustas will be upheld when the appearance of the work is pleasing and elegant, and the proportions of its elements have properly developed principles of symmetry.” (form/beauty)

  10. The Vitruvian Triad (Cont’d) • Architectural design is what brings function and form together. • Function in the architectural sense means need, purpose, utility, or intended use of the system. • An application system is constructed based on the specification of its form, which satisfies its function (i.e., need, purpose, etc.). • The form includes the specification of distinct quality attributes that, through a realization of components in a system, satisfies the function.

  11. Function and Product Planning • An application’s architecture must address end-user needs. • The architecture must be (partially) perceivable to the users of the application. • Architecting begins with a specification of an application or system in terms of the functions, capabilities, and other qualities that it must possess.

  12. Form and Interaction Design • According to Alan Cooper design can be divided into interaction design and program design. • Interaction design is that which directly affects the ultimate end user of the application. • All other design is called program design. • Poor interface design contributes to cognitive friction or “the resistance encountered by a human intellect when it engages with a complex system of rules that change as the problem permutes.” • The interaction design is the user’s conceptual model or virtuality.

  13. Interaction Design: Human/Computer Interaction (HCI) Four threads of research: • Software engineering methodologies of prototyping and iterative development. • Software psychology and human factors of computing systems. • Computer graphics and software user interfaces. • Models, theories, and frameworks of cognitive science.

  14. The Application Domain • The application domain is that part of the world in which an application’s effects will be felt, evaluated, and approved by users. • The virtuality of a software application must be congruent with the application domain. • Use cases are an example of an application domain modeling technique.

  15. Fabrication • Vitruvius’s firmitas is the principle of quality (soundness, durability). • The quality of a system is based on both the design of the system and the selection of technologies used to build it. • The system must be realizable; it must be possible to build the system with available resources of time, staff, budget, existing components, etc.

  16. The Scope of Design • An design activity can be seen from many points of view: • Psychological – design is a creative process that requires knowledge in software engineering, computer science, logic, cognitive science, linguistics, programming languages, and software design methodologies as well as application domain-specific knowledge. • Systematic – design is an architecting or engineering activity that involves finding optimized solutions while balancing obstacles. • Organizational – design is a set of steps or activities of the system life cycle, beginning with needs analysis and ending with the produce end of life.

  17. Tasks and Activities of Design • Origin of the task • Organization • Novelty • Production • Technology • Horizontal domain • Quality attributes

  18. Origin of the Task Possible origins for a design task: • Product planning (especially for commercial software) • In-house software (custom systems) • Systems integration • Production and field testing

  19. Organization • The design process is usually organized around the structure of the development organization. • Two common types of organization are: • Product-oriented – product development and production responsibilities are divided among different divisions based on product type. • Problem-oriented – work is organized according to a division of labor along domain boundaries such as database administration, user interface design, etc. • Each organizational type affects the choice of design activities and how they are performed.

  20. Novelty Some design task require much more invention and creative problem solving than others. The novelty of the problem can be categorized as follows: • Original design • Adaptive design • Variant design

  21. Original Design • Starts with a clean slate. • May be created through the synthesis of known solution principles and existing technology. • May require inventing something new.

  22. Adaptive Design • Starts with known or established solution principles. • Adapts the principles to fit the current problem. • May involve some original design as new components are added to meet new requirements.

  23. Variant Design • Starts with an existing design. • Modifies the design with respect to some nonfunctional quality attributes. • For example, changes to improve performance of certain operations, or be able to handle greater user loads.

  24. Production • Software may be created for either: • A One-off custom system • Commercial software for sale • For one-off systems functionality, maintainability, performance, reliability and/or availability are typically the most important qualities. • For Commercial systems functionality, performance, extensibility, adaptability, and usability are commonly the paramount qualities.

  25. Technology Different technologies require different design methods. Some technology areas that affect design methods are: • Information representation • Data storage • Data transformation • Business logic • User interface design • Vendor platforms

  26. Horizontal Domain • Systems can be characterized by their relative complexity. • Systems can be divided horizontally into layers or horizontal domains where each layer has its own complexities. • The demarcation of a horizontal domain is based on the types of concerns addressed by design and the patterns, methods, and tools specific to a domain.

  27. Example of Horizontal Domains • Integrated enterprises (B2B) • Enterprise integration: systems of applications (integrated applications) • Enterprise applications (point or vertical solutions) • Software libraries, databases, application servers, operating systems (platforms)

  28. Quality Attributes • One of the largest factors that affect the design task is the set of required quality attributes of the system. • The architect must find a balance among the competing quality attributes. • Many passes through the design process may be needed as design tradeoffs are considered and proposed designs are evaluated.

  29. Common Quality Attributes • Functionality • Buildability • Cost and time to market • Performance • Usability • Security • Availability and reliability • Modifiability

  30. Architecture versus Engineering Design • The difference between software architecture design and software engineering design can be characterized based on scope and complexity. • Engineering design concentrates on implementing specific quality attributes using technologies. • Architectural design concentrates on formulating the quality attributes and system characteristics and selecting the working principles that balance many competing quality attributes.

  31. The Psychology and Philosophy of Design • Design is a creative problem-solving activity that involves intuitive and discursive thought. • Intuitive thinking, mostly subconscious, is characterized by insight and inspiration usually triggered by some association of ideas. • Discursive thinking is conscious and deliberate, where facts and relationships are analyzed and combined in various ways, evaluated, and then disposed of.

  32. Problems, Obstacles, and Solutions Problems, Obstacles, and Solutions Problems, Obstacles, and Solutions • Design is the activity of finding or creating solutions to problems given a set of obstacles to overcome. • Systematic approaches to design can add a degree of predictability with respect to the time required for design and its resulting quality. • Systematic approaches don’t hinder creativity, but rather serve as a catalyst for creative thought.

  33. Problems, Obstacles, and Solutions Problems, Obstacles, and Solutions Problems, Obstacles, and Solutions (Cont’d) • There is no one best design method. • There are both good and poor choices for which method to employ in a given set of circumstances. • Object-oriented design is a popular choice but is not always the best, especially when you are not at the level of objects and classes.

  34. Aristotelian Reasoning • In software design reason can be used as a meta-tool for both understanding and discoursing. • The three rational operations used in the formation of knowledge: definition, predication, and inference, can be used in architectural design. • Definition and predication can be used for understanding and inference can be used for discoursing.

  35. Aristotelian Reasoning (Cont’d) • Definition and predication are the basis of abstract thinking. • Inference is used in the assessment of architectural designs. • After using the operations of definition and predication to understand the problem it still may not be represented in a way that facilitates the discovery of existing solutions.

  36. Aristotelian Reasoning (Cont’d) • We use divide and conquer to refine our understanding and look for solutions to our new set of problems. • In order to master the art of software architecture, the architect needs to practice these techniques until they are part of his or her subconscious.

  37. General Methodology of Design Elements of Design • Purposeful thinking • Analysis • Abstraction • Synthesis • General heuristics

  38. Purposeful Thinking • Design requires systematic thinking. • This does not preclude creativity or intuition. • But a purely intuitive approach has disadvantages: • The right solution rarely comes at the right time. • The results depend on the skill of the architect. • The solution might be negatively influenced by preconceived ideas.

  39. Purposeful Thinking (Cont’d) • The architect should analyze the design for errors or weak points in the early stages of development. • A discursive design approach helps reduce errors by enforcing systematic testing of design ideas and assumptions early.

  40. Purposeful Thinking (Cont’d) • Creativity is inhibited or encouraged by different influences. • Some techniques for encouraging creativity are: • Interrupt the activity to create incubation periods (but be careful; too many interruptions can be disruptive). • Apply different solution-finding methods. • Move from abstract to concrete ideas.

  41. Purposeful Thinking (Cont’d) • Some techniques for encouraging creativity (Cont’d): • Find and collect information form design catalogues (such as design patterns). • Divide work among architecture team members. • Make realistic plans: Realistic planning is found to encourage motivation and creativity, while unrealistic planning is inhibiting.

  42. Analysis • Analysis is the decomposition of complex systems into elements and their relationships. • Activities include identification, definition, and structuring for the purpose of acquiring information about a subject that can be transformed into knowledge. • Analytic methods are use at all stages of software design.

  43. Analysis (Cont’d) • Structured analysis in software emphasizes a functional hierarchy. • Object-oriented analysis emphasizes an object hierarchy. • Weak-spot analysis of a design can be done by evaluating it with respect to metamodels. • Most software design problems are the result of a lack of understanding of the problem being solved.

  44. Abstraction • Abstraction reduces the complexity of a problem while emphasizing the essential characteristics of it. • Abstractions aid in the discovery of solutions. • Abstractions are sometimes invented but often discovered. • A given problem may have many abstractions.

  45. Synthesis • Synthesis is the combining of individual elements or parts to produce a new effect. • With respect to design it is the integration of subproblem solutions and the evaluation of the resulting system.

  46. General Heuristics • Heuristics are techniques that are characterized as the searching for suitable solutions. Some heuristics are: • Persistent questions • Negation • Forward steps • Backward steps • Factorization • Systematic variation • Division of labor and collaboration

  47. The Method of Persistent Questions • Requirements are almost never complete. • The architect must engage in persistent questioning to stimulate ideas and remove preconceived notions. • Architects may keep a database of questions for various purposes.

  48. The Method of Negation • The method starts with a known solution that is divided into (truthful) statements about its parts. • These statements are negated, one by one, to stimulate the creation of alternate solutions.

  49. The Method of Forward Steps • This method starts with a first solution attempt and tries to follow as many solution paths as possible, by making decisions that lead to implementation. • This is a good brainstorming technique.

  50. The Method of Backward Steps • In this method the architect starts with a goal in mind rather than the initial problem. • All possible paths that could have led up to the goal are retraced. • This method is useful for organizing and engineering department around the product’s architecture and for preparing an engineering process.

More Related