Download presentation
Presentation is loading. Please wait.
1
Chapter 12 Design Concepts
Slide Set to accompany Software Engineering: A Practitioner’s Approach, 8/e by Roger S. Pressman and Bruce R. Maxim Slides copyright © 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman For non-profit educational use only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach, 8/e. Any other reproduction or use is prohibited without the express written permission of the author. All copyright information MUST appear if these slides are posted on a website for student use. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
2
Design Mitch Kapor, the creator of Lotus 1-2-3, presented a “software design manifesto” in Dr. Dobbs Journal. He said: Good software design should exhibit: Firmness: A program should not have any bugs that inhibit its function. Commodity: A program should be suitable for the purposes for which it was intended. Delight: The experience of using the program should be pleasurable one. Design is what almost every engineer wants to do. It is the place where creativity rules – where stakeholder requirements, business needs, and technical considerations all come together in the formulation of a product or system. Design creates a representation or model of the software, but unlike the requirements model (that focuses on describing required data, function, and behavior), the design model provides detail about software architecture, data structures, interfaces and components that are necessary to implement the system. The primary goal of design is to produce a model or representation that exhibits firmness, commodity and delight. Design is the place where software quality is established. The design model is assessed by the software team in an effort to determine whether it contains errors, inconsistencies, or omissions; whether better alternatives exist; and whether the model can be implemented within the constraints, schedule, and cost that has been established. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
3
Software Design Encompasses the set of principles, concepts, and practices that lead to the development of a high quality system or product Design principles establish and overriding philosophy that guides the designer as the work is performed Design concepts must be understood before the mechanics of design practice are applied Software design practices change continuously as new methods, better analysis, and broader understanding evolve . These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
4
Software Engineering Design
Data/Class design – transforms analysis classes into implementation classes and data structures Architectural design – defines relationships among the major software structural elements Interface design – defines how software elements, hardware elements, and end-users communicate Component-level design – transforms structural elements into procedural descriptions of software components Data/Class design: transform class models into design class realizations and requisite data structures required to implement the software. More detailed class design occurs as each component is designed. Architectural design: defines the relationship between major structural elements of software, the architectural styles, and design patterns that can be used to achieve the requirements defined for the system, and the constrains that affect the way in which architecture can be implemented. Interface design: describes how the software communicates with systems that interoperate with it, and with humans who use it. Implies a flow of information (data and/or control) and specific type of behavior. Component-level design: transforms structural elements of the software architecture into a procedural description of software components. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
5
Analysis Model -> Design Model
Beginning once software requirements have been analyzed and modeled, software design is the last software engineering action within the modeling activity an sets the stage for construction (code generation and testing). Each elements of the requirements model provides information that is necessary to create the four design models required for a complete specification of design. Figure shows the flow of information during software design. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
6
Design and Quality the design must implement all of the explicit requirements contained in the analysis model, and it must accommodate all of the implicit requirements desired by the customer. the design must be a readable, understandable guide for those who generate code and for those who test and subsequently support the software. the design should provide a complete picture of the software, addressing the data, functional, and behavioral domains from an implementation perspective. - Characteristics for the evaluation of a good design - Throughout the design process, the quality of the evolving design is assessed with a series of technical reviews These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
7
Quality Guidelines A design should exhibit an architecture that (1) has been created using recognizable architectural styles or patterns, (2) is composed of components that exhibit good design characteristics and (3) can be implemented in an evolutionary fashion A design should be modular; that is, the software should be logically partitioned into elements or subsystems A design should contain distinct representations of data, architecture, interfaces, and components. A design should lead to data structures that are appropriate for the classes to be implemented and are drawn from recognizable data patterns. A design should lead to components that exhibit independent functional characteristics. A design should lead to interfaces that reduce the complexity of connections between components and with the external environment. A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis. A design should be represented using a notation that effectively communicates its meaning. - In order to evaluate the quality of a design representation, you must establish technical criteria for good design. Consider the guidelines for a good design: --- It is not easy to achieve these design guideline. They can be achieved through the application of fundamental design principles, systematic methodology, and through reviews. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
8
Design Principles The design process should not suffer from ‘tunnel vision.’ The design should be traceable to the analysis model. The design should not reinvent the wheel. The design should “minimize the intellectual distance” [DAV95] between the software and the problem as it exists in the real world. The design should exhibit uniformity and integration. The design should be structured to accommodate change. The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered. Design is not coding, coding is not design. The design should be assessed for quality as it is being created, not after the fact. The design should be reviewed to minimize conceptual (semantic) errors. From Davis [DAV95] These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
9
Fundamental Concepts Abstraction—data, procedure, control
Architecture—the overall structure of the software Patterns—”conveys the essence” of a proven design solution Separation of concerns—any complex problem can be more easily handled if it is subdivided into pieces Modularity—compartmentalization of data and function Hiding—controlled interfaces Functional independence—single-minded function and low coupling Refinement—elaboration of detail for all abstractions Aspects—a mechanism for understanding how global requirements affect design Refactoring—a reorganization technique that simplifies the design OO design concepts—Appendix II Design Classes—provide design detail that will enable analysis classes to be implemented A set of software design concepts has evolved over the history of software engineering. Each provides the software designer with a foundation from which more sophisticated design methods can be applied. Each helps you answer the following questions: What criteria can be used to partition software into individual components? How is function or data structure detail separated from a conceptual representation of the software? What uniform criteria define the technical quality of a software design? These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
10
Data Abstraction door manufacturer model number type swing direction
inserts lights type Data abstraction : a named collection of data that describes a data object. Door would encompass a set of attributes that describes the door (e.g. door type, swing direction, opening mechanism, weight, dimensions) The procedural abstraction Open would make use of information contained in the attributes of the data abstraction Door. number weight opening mechanism implemented as a data structure These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
11
Procedural Abstraction
open details of enter algorithm When you consider a modular solution to any problem, many levels of abstraction can be posed. At highest level of abstraction: a solution is stated in broad terms using the language of the problem environment. At lower levels of abstraction, more detailed description of the solution is provides. --- Finally, at the lowest level of abstraction, the solution is stated in a manner that can be directly implemented. Procedural and Data Abstraction Procedural Abstraction: refers to a sequence of instructions that have a specific and limited function. Open: implies a long sequence of procedural steps (e.g. walk to the door, reach out and grasp knob, tern knob and pull door, step away from moving door etc.) implemented with a "knowledge" of the object that is associated with enter These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
12
Architecture “The overall structure of the software and the ways in which that structure provides conceptual integrity for a system.” [SHA95a] Structural properties. This aspect of the architectural design representation defines the components of a system (e.g., modules, objects, filters) and the manner in which those components are packaged and interact with one another. For example, objects are packaged to encapsulate both data and the processing that manipulates the data and interact via the invocation of methods Extra-functional properties. The architectural design description should address how the design architecture achieves requirements for performance, capacity, reliability, security, adaptability, and other system characteristics. Families of related systems. The architectural design should draw upon repeatable patterns that are commonly encountered in the design of families of similar systems. In essence, the design should have the ability to reuse architectural building blocks. In its simplest form, architecture is the structure or organization of program components(modules). The manner in which these components interacts, and the structure of data that used by those components. In a broader sense, components can be generalized to represent major system elements and their interactions. The architecture design can be represented using one or more a number of different models: Structural models: represent architecture as an organized collection of program components. Framework models: increase the level of design abstraction by attempting to identify repeatable architectural design frameworks that are encountered in similar type of applications Dynamic modes: address the behavioral aspects of the program architecture, indicating how the structure of system configuration may change as a function of external events. Process model: focus on the design of the business or technical process that the system must accommodate Functional models: can be used to represent the functional hierarchy of a system. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
13
Patterns Design Pattern Template
Pattern name—describes the essence of the pattern in a short but expressive name Intent—describes the pattern and what it does Also-known-as—lists any synonyms for the pattern Motivation—provides an example of the problem Applicability—notes specific design situations in which the pattern is applicable Structure—describes the classes that are required to implement the pattern Participants—describes the responsibilities of the classes that are required to implement the pattern Collaborations—describes how the participants collaborate to carry out their responsibilities Consequences—describes the “design forces” that affect the pattern and the potential trade-offs that must be considered when the pattern is implemented Related patterns—cross-references related design patterns Brad Appleton: “A pattern is a named nugget of insight which conveys the essence of a proven solution to a recurring problem within a certain context amidst competing concern” Describes a design structure that solves a particular design problem within a specific context and amid :forces: that may have an impact on the manner in which the pattern is applied and used. The intent of each design pattern is to provide a description that enables a designer to determine 1. whether the pattern is applicable to the current work 2. whether the pattern can be reused 3. whether the pattern can serve as a guide for developing a similar , but functionally or structurally different pattern. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
14
Separation of Concerns
Any complex problem can be more easily handled if it is subdivided into pieces that can each be solved and/or optimized independently A concern is a feature or behavior that is specified as part of the requirements model for the software By separating concerns into smaller, and therefore more manageable pieces, a problem takes less effort and time to solve. Divide-and-Conquer strategy This has important implication with regard to software modularity. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
15
Modularity "modularity is the single attribute of software that allows a program to be intellectually manageable" [Mye78]. Monolithic software (i.e., a large program composed of a single module) cannot be easily grasped by a software engineer. The number of control paths, span of reference, number of variables, and overall complexity would make understanding close to impossible. In almost all instances, you should break the design into many modules, hoping to make understanding easier and as a consequence, reduce the cost required to build the software. Modularity is the most common manifestation of separation of concerns. Software is divided into separately named and addressable components, sometimes called modules. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
16
Modularity: Trade-offs
What is the "right" number of modules for a specific software design? module development cost cost of software module integration cost The figure provide useful qualitative guidance when modularity is considered. Under-modularity or over-modularity should be avoided You modularize a design so that: Development can be more easily planned Software increments can be defined and delivered Changes can be more easily accommodated Testing and debugging can be conducted more efficiently Long-term maintenance can be conducted without serious side effects. optimal number number of modules of modules These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
17
Information Hiding module clients • algorithm controlled
interface • data structure • details of external interface • resource allocation policy clients "secret" Information hiding suggests that modules be characterized by design decisions that hides from all others. Modules should be specified and designed so that information (algorithm and data) contained within a module is inaccessible to other modules that have no need to for such information. Hiding implies that effective modularity can be achieved by defining a set of independent modules that communicate with one another only that information necessary to achieve software function. Hiding defines and enforces access constraints to both procedural detail within a module and any local data structure used by the module. a specific design decision These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
18
Why Information Hiding?
reduces the likelihood of “side effects” limits the global impact of local design decisions emphasizes communication through controlled interfaces discourages the use of global data leads to encapsulation—an attribute of high quality design results in higher quality software These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
19
Stepwise Refinement open walk to door; reach for knob; open door;
repeat until door opens turn knob clockwise; walk through; if knob doesn't turn, then Stepwise refinement is a top-down design strategy. A program is developed successively refining levels of procedural detail. Refinement is actually a process of elaboration. close door. take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
20
Sizing Modules: Two Views
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
21
Functional Independence
Functional independence is achieved by developing modules with "single-minded" function and an "aversion" to excessive interaction with other modules. Cohesion is an indication of the relative functional strength of a module. A cohesive module performs a single task, requiring little interaction with other components in other parts of a program. Stated simply, a cohesive module should (ideally) do just one thing. Coupling is an indication of the relative interdependence among modules. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
22
Aspects Consider two requirements, A and B. Requirement A crosscuts requirement B “if a software decomposition [refinement] has been chosen in which B cannot be satisfied without taking A into account. [Ros04] An aspect is a representation of a cross-cutting concern. Ideally, a requirements model can be organized in a way that allows you to isolate each concern (requirement) so that it can be considered independently. In practice, however, some of concerns span the entire system and can not be easily compartmentalized. It is important identify aspects so that the design can properly accommodate them as refinement and modularization occur. An aspect is implemented as a separate module(component) rather than as software fragments that are scattered or tangled throughout many components. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
23
Aspects—An Example Consider two requirements for the SafeHomeAssured.com WebApp. Requirement A is described via the use-case Access camera surveillance via the Internet. A design refinement would focus on those modules that would enable a registered user to access video from cameras placed throughout a space. Requirement B is a generic security requirement that states that a registered user must be validated prior to using SafeHomeAssured.com. This requirement is applicable for all functions that are available to registered SafeHome users. As design refinement occurs, A* is a design representation for requirement A and B* is a design representation for requirement B. Therefore, A* and B* are representations of concerns, and B* cross- cuts A*. An aspect is a representation of a cross-cutting concern. Therefore, the design representation, B*, of the requirement, a registered user must be validated prior to using SafeHomeAssured.com, is an aspect of the SafeHome WebApp. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
24
Refactoring Fowler [FOW99] defines refactoring in the following manner: "Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code [design] yet improves its internal structure.” When software is refactored, the existing design is examined for redundancy unused design elements inefficient or unnecessary algorithms poorly constructed or inappropriate data structures or any other design failure that can be corrected to yield a better design. Refactoring: a reorganization technique that simplifies the design (or code) of a component without changing its function or behavior. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
25
OO Design Concepts Design classes
Entity classes Boundary classes Controller classes Inheritance—all responsibilities of a superclass is immediately inherited by all subclasses Messages—stimulate some behavior to occur in the receiving object Polymorphism—a characteristic that greatly reduces the effort required to extend the design These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
26
Design Classes Analysis classes are refined during design to become entity classes Boundary classes are developed during design to create the interface (e.g., interactive screen or printed reports) that the user sees and interacts with as the software is used. Boundary classes are designed with the responsibility of managing the way entity objects are represented to users. Controller classes are designed to manage the creation or update of entity objects; the instantiation of boundary objects as they obtain information from entity objects; complex communication between sets of objects; validation of data communicated between objects or between the user and the application. Five different types of design classes: User interface classes: define all abstraction that are necessary for human-computer interaction (HCI). HCI occurs within the context of a metaphor (e.g. checkbook, an order form, a fax machine) May be visual representations of the elements of metaphor Business domain classes: refinements of the analysis classes defined earlier Identify the attributes and services (methods) that are required to implement some element of business domain Process classes: low-level business abstraction required to fully manage the business domain process. Persistent classes: represent data stores (e.g. database) that will persist beyond the execution of the software System classes: implement software management and control functions that enable the system to operate and communicate within its computing environment and with the outside world. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
27
Design Class Characteristics
Complete - includes all necessary attributes and methods) and sufficient (contains only those methods needed to achieve class intent) Primitiveness – each class method focuses on providing one service High cohesion – small, focused, single-minded classes Low coupling – class collaboration kept to minimum These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
28
The Design Model The design model can be viewed in two different dimensions as shown in the figure. The process dimension indicates the evolution of the design model as design tasks are executed as part of the software process. Abstraction dimension represents the level of detail as each element of the analysis models is transformed into a design equivalent and then refined iteratively. The dashed line indicates the boundary b/w the analysis models and design models. In some cases, a clear distinction b/w analysis models and design models is impossible. In other cases, the analysis model slowly blends into the design model and a clear distinction is less obvious. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
29
Design Model Elements Data elements Architectural elements
Data model --> data structures Data model --> database architecture Architectural elements Application domain Analysis classes, their relationships, collaborations and behaviors are transformed into design realizations Patterns and “styles” (Chapters 9 and 12) Interface elements the user interface (UI) external interfaces to other systems, devices, networks or other producers or consumers of information internal interfaces between various design components. Component elements Deployment elements These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
30
Data Modeling examines data objects independently of processing
focuses attention on the data domain creates a model at the customer’s level of abstraction indicates how data objects relate to one another Like other software engineering activities, data design(“data architecting”) creates a mode of data and/or information that is represented at a high level of abstraction. Refined into progressively more implementation-specific representation that can be processed by the computer-based system. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014). Slides copyright 2014 by Roger Pressman.
31
What is a Data Object? a representation of almost any composite information that must be understood by software. composite information—something that has a number of different properties or attributes can be an external entity (e.g., anything that produces or consumes information), a thing (e.g., a report or a display), an occurrence (e.g., a telephone call) or event (e.g., an alarm), a role (e.g., salesperson), an organizational unit (e.g., accounting department), a place (e.g., a warehouse), or a structure (e.g., a file). The description of the data object incorporates the data object and all of its attributes. A data object encapsulates data only—there is no reference within a data object to operations that act on the data. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014). Slides copyright 2014 by Roger Pressman.
32
Data Objects and Attributes
A data object contains a set of attributes that act as an aspect, quality, characteristic, or descriptor of the object object: automobile attributes: make model body type price options code These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014). Slides copyright 2014 by Roger Pressman.
33
What is a Relationship? Data objects are connected to one another in different ways. A connection is established between person and car because the two objects are related. A person owns a car A person is insured to drive a car The relationships owns and insured to drive define the relevant connections between person and car. Several instances of a relationship can exist Objects can be related in many different ways These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014). Slides copyright 2014 by Roger Pressman.
34
Architectural Elements
The architectural model [Sha96] is derived from three sources: information about the application domain for the software to be built; specific requirements model elements such as data flow diagrams or analysis classes, their relationships and collaborations for the problem at hand, and the availability of architectural patterns (Chapter 16) and styles (Chapter 13). Architectural design for software is the equivalent to the floor plan of a house. Provides a overall view of the software Architecture model is derived from three sources: (1) information about application domain for the software to be built (2) specific model elements such as use cases or analysis classes, their relationships and collaborations (3) availability of architecture styles and patterns The architectural design element is usually depicted as a set of interconnected subsystems, often derived from analysis packages within the requirement model. Each subsystem may have it’s own architecture. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
35
Interface Elements Interface is a set of operations that describes the externally observable behavior of a class and provides access to its public operations Important elements User interface (UI) External interfaces to other systems Internal interfaces between various design components Modeled using UML communication diagrams (called collaboration diagrams in UML 1.x) These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
36
Interface Elements The interface, named Keypad, is shown as an <interface>> stereotype or as a small labelled circle connected to the class with a line. The interface is defined with no attributes and the set of operations that are necessary to achieve the behavior of a keypad These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
37
Component Elements 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 Modeled using UML component diagrams, UML activity diagrams, pseudocode (PDL), and sometimes flowcharts These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
38
Component Elements A component named SensorManagement is represented. A dashed arrow connects the component to a class Sensor that is assigned to it. The SensorManament component performs all functions associated with sensors including monitoring and configuring them. These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
39
Deployment Elements Indicates how software functionality and subsystems will be allocated within the physical computing environment Modeled using UML deployment diagrams Descriptor form deployment diagrams show the computing environment but does not indicate configuration details Instance form deployment diagrams identifying specific named hardware configurations are developed during the latter stages of design These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
40
Deployment Elements Indicate how software functionality and subsystems will be allocated within the physical computing environment that will support the software These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill, 2014) Slides copyright 2014 by Roger Pressman.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.