1/52
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
|---|
No study sessions yet.
Software Design
Encompasses the set of principles, concepts, and practices that lead to the development of a high quality system or product.
Principles, concepts, and practices
Software Design encompasses the set of _______, _______, and _______ that lead to the development of a high quality system or product.
Design principles
This establish an overriding philosophy that guides the designer as the work is performed.
Design concepts
This must be understood before the mechanics of design practice are applied.
Change continuously
Software design practices ________ as new methods, better analysis, and broader understanding evolve.
Data/Class design
Architectural design
Interface design
Component-level design
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.
Design; explicit requirements; implicit requirements
The _____ must implement all of the_________ contained in the analysis model, and it must accommodate all of the ________ desired by the customer.
Readable; understandable
The design should be a _______, ________ guide for those who generate code and for those who test and subsequently support the software.
Complete picture of the software
This should be provided in a design, addressing the data, functional, and behavioral domains from an implementation perspective.
Architectural styles or patterns
Well designed components
Evolutionary fashion
A design should exhibit an architecture (a) created using recognizable _________, (b) composed of _______ (c) implemented in an _________.
Modular
A design should be ______.
Distinct representations
A design should contain _______ of data, architecture, interfaces, and components.
Recognizable data patterns
A design should lead to data structures that are drawn from ________.
Functionally independent components
A design should contain_________.
Reduce the complexity of connection
A design should lead to interfaces that ___________ between components and the external environment.
Repeatable method
A design should be derived using a ________ that is driven by software requirements analysis.
Meaningful notation
A design should be represented using ________
Heuristics and notions
Each new software design methodology introduces unique ______
Mechanism
Notation
Heuristics
Guidelines
Common Design Characteristics:
Mechanism
This is for translating the requirements model into a design representation.
Notation
This is for representing functional components and their interfaces.
Heuristics
This is for refinement and partitioning.
Guidelines
This is for quality assessment.
Abstraction
Architecture
Design Patterns
Separation of concerns
Modularity
Information Hiding
Functional independence
Stepwise Refinement
Refactoring
Design Classes
Design Concepts:
Abstraction
This is a named collection of data describing data object, procedural name sequence of instructions with specific and limited function.
Architecture
The overall structure or organization of software components, ways components interact, and structure of data used by components.
Design Patterns
This describe a design structure that solves a well-defined design problem within a specific context.
Separation of concerns
Any complex problem can be more easily handled if it is subdivided into pieces.
Modularity
Compartmentalization of data and function.
Information Hiding
Controlled interfaces which define and enforces access to component procedural detail and any local data structure used by the component.
Functional independence
Single-minded (high cohesion) components with aversion to excessive interaction with other components (low coupling).
Stepwise Refinement
Incremental elaboration of detail for all abstractions.
Refactoring
A reorganization technique that simplifies the design without changing functionality.
Design Classes
Provide design detail that will enable analysis classes to be implemented.
Complete
Primitiveness
High cohesion
Low coupling
Design Class Characteristics
Complete
This 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.
Data model
Data objects and database architectures.
Data object
Can be an external entity, a thing, an event, a place, a role, an organizational unit, or a structure.
Data objects
Contain a set of attributes that act as an quality, characteristic, or descriptor of the object.
Interface
Is a set of operations that describes the externally observable behavior of a class and provides access to its public operations.
User interface (UI)
External interfaces to other systems
Internal interfaces between various design components
Important elements of interface design:
UI or User Experience (UX
Is a major engineering action to ensure the creation on usable software products.
Internal and external interface
These should incorporate both error checking and appropriate security features.
Deployment Design Elements
Indicates how software functionality and subsystems will be allocated within the physical computing environment.
Descriptor form deployment diagrams
Show the computing environment but does not indicate configuration details.
Instance form deployment diagrams
Identify specific hardware configurations and are developed in the latter stages of design.