CSCI334 - Software Design Flashcards
What is software design?
The activity of specifying the nature and composition of software products that satisfy client needs and desire subject to constraints.
What is the importance of software design?
Design is economically important and affects our quality of life; a good product design can directly affect life for better or worse.
What is an abstraction in software design?
Suppressing or ignoring some properties of objects, events, or situations in favor of others. It’s an important problem-solving technique.
Why is abstraction important in software design?
It simplifies problems and allows focusing on the most important aspects, employing top-down or bottom-up strategies for problem-solving.
What is a static model in software design?
A model that represents aspects of programs that do not change during program execution, like class and object models.
What is a dynamic model in software design?
A model that represents what happens during program execution, like state diagrams and sequence diagrams.
What is the difference between product and engineering design?
Product design focuses on styling, aesthetics, function, usability, while engineering design focuses on technical mechanisms and workings.
What is software product design?
Specifying software product features, capabilities, and interfaces to satisfy client needs and desires.
What skills are required in software product design?
Skills in user interface and interaction design, communications, industrial design, and marketing.
What is software engineering design?
Specifying programs and subsystems and their constituent parts and workings to meet software product specifications.
What skills are required in software engineering design?
Skills in programming, algorithms, data structures, software design principles, practices, processes, techniques, architectures, and patterns.
What is a software design method?
An orderly procedure for generating a precise and complete software design solution that meets clients’ needs and constraints.
What are the components of a design method?
Design process, design notations, and design heuristics.
What is the role of modeling in design?
Modeling is used for problem understanding, design creation, design investigation, and documentation.
What is the risk of a failing model in software design?
Models can fail if important or relevant details are left out.
What is a software product?
An entity comprised of programs, data, and supporting materials and services that satisfy client needs and desires.
What is a top-down strategy in problem solving?
Solving an abstract version of the problem first, then adding details (refinement).
What is a bottom-up strategy in problem solving?
Solving parts of a problem and connecting them for a complete solution.
What is the importance of design in software?
Affects quality of life and has economic significance; good design improves life quality.
What is a design process?
A collection of related tasks that transforms a set of inputs into a set of outputs.
What are design notations?
A symbolic representational system, such as UML.
What are design heuristics?
Rules providing guidance but no guarantee for achieving some end.
What is the importance of models in software design?
They are crucial for understanding, creating, investigating, and documenting designs.
How do static and dynamic models differ?
Static models represent unchanging aspects of programs, while dynamic models represent changes during execution.
What are the key aspects of software product and engineering design?
Product design focuses on user experience and functionality, while engineering design focuses on technical implementation.
What is a Software Product
An entity comprised of one or more programs, data, and supporting materials and services that satisfies client needs and desires either as an independent artifact or as essential ingredients in some other artifact
What is Software Design
The activity of specifying the nature and composition of software products that satisfy client needs and desire, subject to constraints
Software designers do what designers in other disciplines do, except it’s for software products.
What is Abstraction
Abstraction is suppressing or ignoring some properties of objects, events, or situations in favor of others
Abstraction is an important problem-solving technique, especially in software design
What is the importance of Abstraction
- Problem Simplification
- Structuring problem solving
What is Problem Simplification in regards to Abstraction
Abstracting allows us to focus on the most important aspects of a problem
What is Structuring problem solving in regards to Abstraction
Top-down strategy: Solve an abstract version of the problem, then add details (refinement)
Bottom-up strategy: Solve parts of a problem and connect them for a complete solution
What is Modelling used for in Software Design?
- Problem understanding
- Design creation
- Design investigation
- Documentation
What are Static Models
Static model represents aspects of programs that do not change during program execution
(Examples include class and object models)
What are Dynamic Models
Dynamic model represents what happens during program execution
(Examples include state diagrams and sequence diagrams)
What is Product designers
Product designers are concerned with styling and aesthetics, function and usability, manufacturability and manageability
What are Engineering designers
Engineering designers are concerned with technical mechanisms and workings
What is Software Product Design
Software product design is the activity of specifying software product features, capabilities and interfaces to satisfy client needs and desires
Requires skills in user interface and interaction design, communications, industrial design and marketing
What are the three Design Method Components
Design Process, Design Notations, Design Heuristics
What is Software Engineering Design
Software engineering design is the activity of specifying programs and sub-systems, and their constituent parts and workings, to meet software product specifications
What is the Software Design Method
A software design method is an orderly procedure for generating a precise and complete software design solution that meets clients needs and constraints
What is Design Process
A collection of related tasks that transforms a set of inputs into a set of outputs
What is Design Notations
A symbolic representational system (e.g. UML)
What is Design Heuristics
Rules providing guidance, but no guarantee for achieving some end