Chapter 8 - Design Concepts

¡Supera tus tareas y exámenes ahora con Quizwiz!

Deployment-Level Design

- Indicates how software functionality and subsystems will be allocated within the physical computing environment - Modeled using UML deployment diagrams

Generic Design Task Set

1. Select an architectural pattern appropriate to the software based on the analysis model 2. Partition the analysis model into design subsystems, design interfaces, and allocate analysis functions (classes) to each subsystem 3. Examine information domain model and design appropriate data structures for data objects and their attributes 4. Create a set of design classes 5. Translate analysis class into design class 6. Check each class against design criteria and consider inheritance issues 7. Define methods and messages for each design class Select design patterns for each design class or subsystem after considering alternatives 8. Revise design classes and revise as needed 9. Design user interface 10. Review task analyses

What is the connection between customer's requirements and and design

A design can be traced to the customer's requirements and can be assessed for quality against predefined criteria.

Design Quality Guidelines

A design should: 1.exhibit good architectural structure 2.be modular 3.contain distinct representations of data, architecture, interfaces, and components (modules) 4.lead to data structures that are appropriate for the objects to be implemented and be drawn from recognizable design patterns 5.lead to components that exhibit independent functional characteristics 6.lead to interfaces that reduce the complexity of connections between modules and with the external environment 7.be derived using a reputable method that is driven by information obtained during software requirements analysis

Software Quality Attributes

A good software must: 1. implement all explicit requirements from the analysis model and accommodate all implicit requirements desired by the user 2. be readable and understandable guide for those who generate code, test components, or support the system. 3. provide a complete picture (data, function, behavior) if the software from an implementation perspective

3 of the five design class types

A) Business domain classes C) Process classes D) User interface classes

Which models can be used to represent the architectural design of a piece of software.

A) Dynamic models B) Functional models C) Structural models

Which of the following are areas of concern in the design model?

A) architecture B) data C) interfaces

What types of abstraction are used in software design?

A) control B) data D) procedural

Design Concepts

Abstraction Software Architecture Design Patterns Modularity Information Hiding Functional Independence Refinement Refactoring Objects Class Inheritance Messages Polymorphism Design Classes

Which design is analogous to the floor plan of a house?

Architectural design

Using Patterns in Design

Architectural patterns - define overall structure and relationships of software components (classes, packages, subsystems) Design patterns - address specific design elements (component aggregations, component relationships, or communication) Idioms (coding patterns) - language specific implementations for algorithms or communications mechanisms

Frameworks

Collection of "plug points" hooks or slots that enable it to be adapted to a specific problem domain Plug points enable designers to integrate problem specific functionality within the skeleton In an object-oriented context a skeleton is a collection of cooperating classes

Design Class Characteristics

Complete and sufficient Primitiveness - each class method focuses on providing one service High cohesion Low coupling

Which design model elements are used to depict a model of information represented from the user's view?

Data design elements

List the Design Specification Models

Data/Class design Architectural design Interface design Component-level design

Architectural Design

Derived from 1. Information about the application domain relevant to software 2. Relationships and collaborations among specific analysis model elements 3. Availability of architectural patterns and styles Usually depicted as a set of interconnected systems that are often derived from the analysis packages

Component-Level Design

Describes the internal detail of each software component Defines - Data structures for all local data objects - Algorithmic detail for all component processing functions - Interface that allows access to all component operations

Discuss roughly the main reasons for a software design.

Designers must strive to acquire a repertoire of alternative design information and learn to choose the elements that best match the analysis model.

Expound on what occurs in the design process

During the design process the software requirements model is transformed into design models that describe the details of the data structures, system architecture, interfaces, and components. Each design product is reviewed for quality (i.e., identify and correct errors, inconsistencies, or omissions) before moving to the next software engineering action.

Describe Design Engineering

Encompasses the set of principles, concepts, and practices that lead to the development of a high quality system or product

Design patterns are not applicable to the design of object-oriented software?

False

Frameworks and design patterns are the same thing as far as designers are concerned.

False

Inheritance provides a mechanism by which changes to lower level classes can be propagated to all super classes quickly.

False

Since modularity is an important design goal it is not possible to have too many modules in a proposed design.

False

Software design is an iterative generic process that may be applied without modification to any software project.

False

The deployment design elements specify the build order for the software components.

False

When using structured design methodologies the process of stepwise refinement is unnecessary.

False

Effective Modular Design

Functional independence - modules have high cohesion and low coupling Cohesion - qualitative indication of the degree to which a module focuses on just one thing Coupling - qualitative indication of the degree to which a module is connected to other modules and to the outside world

FURPS Quality Factors

Functionality Usability Reliability Performance Supportability

Data Design

High level model depicting user's view of the data or information Design of data structures and operators is essential to creation of high-quality applications Translation of data model into database is critical to achieving system business objectives Reorganizing databases into data warehouse enables data mining or knowledge discovery that can impact success of business itself

Interface Design

Interface is a set of operations that describes the externally observable behavior of a class and provides access to its operations

Modular Design Method Evaluation Criteria

Modular decomposability - provides systematic means for breaking problem into subproblems Modular composability - supports reuse of existing modules in new systems Modular understandability - module can be understood as a stand-alone unit Modular continuity - side-effects due to module changes minimized Modular protection - side-effects due to processing errors minimized

Design Pattern Template

Name Intent Aliases Motivation Applicability Structure Participants Collaborators Consequences Related patterns

Design Model

Process dimension (indicates design model evolution as design tasks are executed during software process) : 1. Architecture elements 2. Interface elements 3. Component-level elements 4. Deployment-level elements Abstraction dimension (represents level of detail as each analysis model element is transformed into a design equivalent and refined): 1. High level (analysis model elements) 2. Low level (design model elements) Many UML diagrams used in the design model are refinements of diagrams created in the analysis model

The importance of software design can be summarized in a single word

Quality

Information hiding makes program maintenance easier by hiding data and procedure from unaffected parts of the program.

True

Software designs are refactored to allow the creation of software that is easier to integrate, easier to test, and easier to maintain.

True

Define a software design

a meaningful engineering representation of some software product that is to be built.

Which of the following is not a characteristic common to all design methods?

configuration management

Define Data/Class design

created by transforming the analysis model class-based elements (class diagrams, analysis packages, CRC models, collaboration diagrams) into classes and data structures required to implement the software

Define Component-level design

created by transforming the structural elements defined by the software architecture into a procedural description of the software components using information obtained form the analysis model class-based elements, flow-oriented elements, and behavioral elements

Define Architectural design

defines the relationships among the major structural elements of the software, it is derived from the class-based elements and flow-oriented elements (data flow diagrams, control flow diagrams, processing narratives) of the analysis model

Define Interface design

describes how the software elements, hardware elements, and end-users communicate with one another, it is derived from the analysis model scenario-based elements (use-case text, use-case diagrams, activity diagrams, swim lane diagrams), flow-oriented elements, and behavioral elements (state diagrams, sequence diagrams)

Polymorphism reduces the effort required to extend an object system by

enabling a number of different operations to share the same name.

Describe Design principles

establish an overriding philosophy that guides the designer as the work is performed

Cohesion is a qualitative indication of the degree to which a module

focuses on just one thing.

Which of these are characteristics of a good design?

implements all requirements in the analysis model provides a complete picture of the software

Coupling is a qualitative indication of the degree to which a module

is connected to other modules and the outside world.

What is the main goal of design engineering

is to produce a model or representation that is bug free (firmness), suitable for its intended uses (commodity), and pleasurable to use (delight)

Describe Design concepts

must be understood before the mechanics of design practice are applied


Conjuntos de estudio relacionados

Chapter 21: Macroeconomics: The Big Picture

View Set

Psychological Approaches & Famous Psychologists

View Set

Lesson 3: Cultural Relativism & Ethnocentrism

View Set

Chapter 42: Management of Patients with Musculoskeletal Trauma

View Set

Constructing the Terrorist Threat Film:

View Set

A&P Unit 3 Exam: Chapter 11 (part 2)

View Set

Session 11: Rules of the road pt. 4

View Set

Benjamin Franklin Constitutional Convention

View Set