Software Engineering Design Resolution

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

What is the primary focus at the end of the Design Analysis phase?

  • Database schema and data modeling.
  • Implementation details and coding standards.
  • Detailed internal logic of the system.
  • External behavior and characteristics of the system as a black box. (correct)

What is the main deliverable or outcome of the Design Resolution phase?

  • A prototype of the user interface.
  • A design document from which code implementation can be performed. (correct)
  • A detailed project plan with timelines and resource allocation.
  • A set of user stories and acceptance criteria.

What are the two main parts that constitute the Design Resolution?

  • Architectural Design and Detailed Design. (correct)
  • Front-end Development and Back-end Development.
  • User Interface Design and Database Design.
  • System Analysis and Requirements Gathering.

In Architectural Design, what aspects of the system are defined?

<p>Major components, their high-level structure, and their relationships. (B)</p>
Signup and view all the answers

In Detailed Design, what aspects of the system are defined?

<p>Internal elements of major components, structures, algorithms, and data structures. (B)</p>
Signup and view all the answers

Decomposition in software architecture involves breaking down the system into what?

<p>Main Components. (A)</p>
Signup and view all the answers

What are the key specifications that define the architecture's main components?

<p>Responsibilities, properties, relationships, and interfaces. (D)</p>
Signup and view all the answers

In the context of software architecture, what does 'properties' refer to regarding main components?

<p>The states and transitions of states of the component. (B)</p>
Signup and view all the answers

What are the two dimensions of relationships among components when specifying the architecture?

<p>Collaboration and interfaces. (C)</p>
Signup and view all the answers

What does the acronym 'DeSCRIPTR' stand for in the context of architectural design considerations?

<p>Decomposition, States, Collaboration, Relationships, Interfaces, Properties, Transitions, Responsibilities. (D)</p>
Signup and view all the answers

Which of the following is NOT a consideration included in the acronym DeSCRIPTR for Architectural Design?

<p>Implementation. (B)</p>
Signup and view all the answers

In Detailed Design, what is the role of a refined 'DeSCRIPTR'?

<p>It provides further refinement of the architecture design. (D)</p>
Signup and view all the answers

Besides a refined DeSCRIPTR, what are the four additional considerations in Detailed Design?

<p>Packaging, implementation specifications, algorithms, and data structures. (D)</p>
Signup and view all the answers

Which of the following describes the 'Feasibility' principle in basic design?

<p>The technical possibility of implementing the proposed design. (C)</p>
Signup and view all the answers

What does the 'Adequacy' principle refer to in the context of basic design principles?

<p>The design's fitness for its intended purpose in satisfying the product specification. (A)</p>
Signup and view all the answers

What key aspect does the 'Economy' principle address in software design?

<p>The cost, schedule, and resources needed for implementation. (B)</p>
Signup and view all the answers

Which of the following describes the 'Changeability' principle in software design?

<p>The ease with which the implemented system can be modified for maintenance. (B)</p>
Signup and view all the answers

Why is assessing 'Feasibility' sometimes difficult in basic design?

<p>Because teams often choose the easiest, known solutions. (D)</p>
Signup and view all the answers

How might 'Adequacy' be measured in a software design?

<p>By evaluating the number of requirements implemented versus total requirements. (C)</p>
Signup and view all the answers

What are some metrics that can be used to assess the 'Economy' of a design?

<p>Effort, elapsed time, and cost. (A)</p>
Signup and view all the answers

Which of the following can be used to gauge 'Changeability' in a design?

<p>Use of abstract classes and inheritance. (B)</p>
Signup and view all the answers

Which basic design principles are design criteria shown to satisfy?

<p>Basic Design Principles. (B)</p>
Signup and view all the answers

What are the three categories of Constructive Design Principles?

<p>Modularity, Implementability, and Aesthetics. (D)</p>
Signup and view all the answers

What is the benefit of self-contained modules with well-defined interfaces?

<p>Higher quality product. (C)</p>
Signup and view all the answers

What does 'Construct' mean in the context of modularity in design?

<p>To build via decomposition and reconstruction. (B)</p>
Signup and view all the answers

Which of the following is NOT an advantage of a 'clearly-defined' modular design?

<p>Harder to reuse. (D)</p>
Signup and view all the answers

What is the main idea behind the Principle of Information Hiding?

<p>Shielding internal details of a module's structure. (B)</p>
Signup and view all the answers

Which of the following describes 'Low Coupling' in software design?

<p>Modules being loosely connected and independent. (C)</p>
Signup and view all the answers

What does 'High Cohesion' refer to in software design?

<p>The degree of relatedness of the parts within a module. (C)</p>
Signup and view all the answers

Which level of coupling is considered the worst?

<p>Content coupling. (B)</p>
Signup and view all the answers

What type of cohesion involves a module performing multiple, unrelated tasks?

<p>Coincidental cohesion. (A)</p>
Signup and view all the answers

A module performs exactly one task to achieve a single goal. What level of cohesion is this?

<p>Functional cohesion. (D)</p>
Signup and view all the answers

What does it mean to "balance" high cohesion and low coupling?

<p>Recognize potential tradeoff and find design solutions that accommodate both. (B)</p>
Signup and view all the answers

In the context of Implementability Principles, what is the primary focus?

<p>Addressing how easy is to implement the design. (B)</p>
Signup and view all the answers

What constitutes 'simplicity' within Implementability Principles?

<p>Fewer number of steps. (D)</p>
Signup and view all the answers

According to Gelernter of Yale, what two traits characterize beauty in design?

<p>Simplicity and power. (D)</p>
Signup and view all the answers

Flashcards

Decomposition in design

The act of dissecting a system into its components to understand or design its structure.

Decomposed System

Breaking down the system into major components.

States

Describes various states in the major components.

Collaboration

Teamwork between components to achieve a goal.

Signup and view all the flashcards

Relationships

Dependencies and communication between components.

Signup and view all the flashcards

Interfaces

Connection amongst components facilitating interaction.

Signup and view all the flashcards

Properties

Qualities the major components must have.

Signup and view all the flashcards

Transitions

Changes in components' states.

Signup and view all the flashcards

Responsibilities

Duties the major components are responsible for.

Signup and view all the flashcards

DeSCRIPTR

A software engineering design consideration, which includes considering decomposition, states and other key concepts.

Signup and view all the flashcards

Detailed Design

Further refinement of the architectural design with smaller elements.

Signup and view all the flashcards

Component Packaging

Packaging the components and related elements.

Signup and view all the flashcards

Implementation Specifications

Specifications for the packaged components.

Signup and view all the flashcards

Algorithms

Processes used to realize component features.

Signup and view all the flashcards

Data Structures

Organizations and types of data for implementation.

Signup and view all the flashcards

Design Principles

Principles that guide design choices in software engineering.

Signup and view all the flashcards

Feasibility

The design can be developed with current technology.

Signup and view all the flashcards

Adequacy

The design meets stakeholders' needs and expectations.

Signup and view all the flashcards

Economy

Implemented at a reasonable cost (resources and time).

Signup and view all the flashcards

Changeability

The implemented system can be easily modified.

Signup and view all the flashcards

Constructive Design Principles

Design criteria for a high quality product.

Signup and view all the flashcards

Modularity Principles

Designing self-contained modules with clear interfaces.

Signup and view all the flashcards

Implementability Principles

Designs are easier to build and put together.

Signup and view all the flashcards

Aesthetic Principles

Designs should be aesthetically pleasing to the end user.

Signup and view all the flashcards

Construct

Design a system with well-defined modules which are independent.

Signup and view all the flashcards

Small Modules

Modules should be small in size.

Signup and view all the flashcards

Information Hiding

Design modules should not show how it works.

Signup and view all the flashcards

Least Privilege

Modules should not have an access to all resources.

Signup and view all the flashcards

Coupling

Measure of connection between modules.

Signup and view all the flashcards

Cohesion

Measure on how parts are related in modules.

Signup and view all the flashcards

Contention Coupling

The worst form of coupling.

Signup and view all the flashcards

Common Cuopling

One modules modifies inner data.

Signup and view all the flashcards

Control Coupling

Coupling between modules.

Signup and view all the flashcards

Stamp Coupling

Modules passes a complete struct.

Signup and view all the flashcards

Data Coupling

Module passes in just what is needed.

Signup and view all the flashcards

Study Notes

  • At the end of Design Analysis, requirements and system are viewed as a black box with external behavior and characteristics, with initial potential internals explored through class diagrams
  • Software Engineering Design Resolution aims to develop a design solution for the problem stated in the requirements
  • Design Resolution consists of Architectural and Detailed Design
  • The result is a design document from which code implementation can proceed

Design Levels

  • Architectural design defines major components, their high-level structure (responsibilities, properties, interfaces), and their relationships and interactions
  • Detailed design defines and "opens" the internal elements of major components, their structures, relationships, interactions, processing algorithms, and attribute (data) structures

Main Parts of Software Architecture

  • Decomposition/Composition of main components
  • Assignment of responsibilities/functionalities to those components
  • Specification of properties, including states and transitions
  • Specification of relationships, including collaboration and interfaces

Architectural Design Considerations (DeSCRIPTR)

  • Decomposed system into major components
  • States that the major components may exist in
  • Collaboration among components
  • Relationships among the major components in terms of dependencies and communications
  • Interfaces among the components that have relationships
  • Properties that the major components must possess or satisfy
  • Transitions of components' states
  • Responsibilities of the major components
  • Architectural Design may contain all or parts of this list.

Detailed Design Considerations

  • Detailed Design is a refinement of Architecture Design, starting with detailed decomposition of major components and subsequent refinements with smaller elements
  • Refined DeSCRIPTR is part of detailed design
  • Packaging of components and related elements
  • Implementation specifications for the packaged components
  • Algorithms to implement services/functionalities
  • Data structures and data types

Basic Design Principles

  • Design Principles improve design, sharing similarities with other disciplines but some are specific to SE
  • Basic Design Principles improve satisfying product specification
  • Feasibility: Design can be technically implemented
  • Adequacy: Meets stakeholders' needs and expectations
  • Economy: Can be implemented within reasonable cost (resource and time)
  • Changeability: System is easily modifiable

Observations About Basic Principles

  • Feasibility may require time to assess
  • Adequacy may not be binary
  • Economy has easy and difficult parts to assess
  • Changeability can be measured with modular size, documentation, external interfaces, and use of abstract classes and inheritance

Design Criteria

  • Constructive (Construction) Design Principles lead to a good quality product and satisfy Basic Design Principles
  • Modularity: modules with well-defined interfaces lead to high quality
  • Implementability: easier to implement lead to high quality
  • Aesthetic: beauty and ease of use please users.

Modularity in Design

  • Construct the design via decomposition and reconstruction in the form of well-defined, independent modules/units that perform clear services and have clear interfaces
  • A module may be a Class
  • Definition is not clear, can be based on size or complexity
  • Advantages of modular design include ease of understanding, documentation, change, test, reuse, and performance improvement

Modularity Principles

  • Principle of Small Modules: Design with smaller ones -Physical size and mental states
  • Principle of Information Hiding: shields internal details of a Module's Structure and Processing -Clearly defined interfaces
  • Principle of Least Privilege: Doesn't allow access to unneeded resources -Restricts modules from accessing unneeded resources

Low Coupling and High Cohesion

  • Coupling reflects the degree of relatedness among modules which should be kept to a minimum
  • Cohesion is the degree of relatedness of parts within a module which should be maximized

Levels of Coupling

  • Content: worst, high coupling (module directly references content of another)
  • Common: modules use common "global" data
  • Control: module passes information to control logic of another
  • Stamp: module passing complete structure to another
  • Data: best, low coupling (only necessary items passed)

Levels of Cohesion

  • Coincidental: worst, weakest (module performs unrelated tasks)
  • Logical: module performs series of related functionalities
  • Temporal: module tasks related in time
  • Procedural: module performs related procedures that should be done separately
  • Communicational: module tasks on same data where sequence is based on a procedure
  • Sequential: module performing related tasks where output of one is the input to the next
  • Functional: best, strongest (module performs one task to achieve a singlegoal)

Balancing the Design

  • Design small, single-purpose, cohesive modules which causes a lot of data being passed.
  • Designers should balance low coupling and high cohesion
  • Low coupling and high cohesion can improve: understandability, documentation, changeability, ease of testing and debugging, re-usability, and improvement

Implementability Principles

  • After having an implementable design, designers address how easy it is to implement.
  • Simple designs are often the easiest to understand and implement with the least steps
  • Reuse existing artifacts
  • Design with re-use

Aesthetic Principles

  • Gelernter of Yale states that beauty is simplicity and powerful functionality
  • User-Oriented Design deligths users and matches/exceeds their expectations

Other Principles

  • Design to "delight" the users by matching or exceeding expectations and staying within users' knowledge and experience contexts
  • Design to "improve the user experience" by matching users' past experience and extending the experience by extrapolating and improving some part of the interaction

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser