8 Flashcards

(83 cards)

1
Q

is a mechanism to transform user requirements into some suitable
form, which helps the programmer in software coding and implementation.

A

Software Design

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

It deals with representing the client’s requirement, as described in SRS (Software
Requirement Specification) document, into a form, i.e., easily implementable using
programming language.

A

Software Design

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

6 Objectives of Software Design

A

Correctness
Completeness
Efficiency
Flexibility
Consistency
Maintainability

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

are concerned with providing means to handle the
complexity of the design process effectively. Effectively managing the complexity will
not only reduce the effort needed for design but can also reduce the scope of
introducing errors during design.

A

Software Design Principles

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

These are recommendations that help you write code that is clear, manageable, and
scalable. These principles give a foundation for developing software systems that are
both robust and responsive to change.

A

Software Design Principles

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

4 Software Design Principles

A

Problem Partitioning
Abstraction
Modularity
Top Down & Bottom up Strategy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

For small problem, we can handle the entire problem at once but for the significant
problem, divide the problems and conquer the problem it means to divide the
problem into smaller pieces so that each piece can be captured separately.

A

Problem Partitioning

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
  • For software design, the goal is to divide the problem into manageable pieces.
A

Problem Partitioning

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

6 Benefits of Problem Partitioning

A
  • Software is easy to understand
  • Software becomes simple
  • Software is easy to test
  • Software is easy to modify
  • Software is easy to maintain
  • Software is easy to expand
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

A module is specified by the method it performs.

A

Functional Abstraction

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

is a tool that enables a designer to consider a component at an
abstract level without bothering about the internal details of the implementation.
Abstraction can be used for existing element as well as the component being
designed.

A

Abstraction

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

two common abstraction mechanisms:

A

Functional Abstraction
Data Abstraction

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

The details of the algorithm to accomplish the functions are not visible to the
user of the function.

A

Functional Abstraction

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

forms the basis for Function oriented design approaches.

A

Functional Abstraction

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Details of the data elements are not visible to the users of data.

A

Data Abstraction

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

forms the basis for Object Oriented design approaches.

A

Data Abstraction

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

specifies to the division of software into separate modules which are
differently named and addressed and are integrated later on in to obtain the
completely functional software.

A

Modularity

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

It is the only property that allows a program to be intellectually manageable. Single
large programs are difficult to understand and read due to a large number of
reference variables, control paths, global variables, etc.

A

Modularity

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Advantages of Modularity

A
  • It allows large programs to be written by several or different people
  • It encourages the creation of commonly used routines to be placed in the library and
    used by other programs.
  • It simplifies the overlay procedure of loading a large program into main storage.
  • It provides more checkpoints to measure progress.
  • It provides a framework for complete testing, more accessible to test
  • It produced the well designed and more readable program.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Disadvantages of Modularity

A
  • Execution time maybe, but not certainly, longer
  • Storage size perhaps, but is not certainly, increased
  • Compilation and loading time may be longer
  • Inter-module communication problems may be increased
  • More linkage required, run-time may be longer, more source lines must be written,
    and more documentation has to be done
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

is achieved by developing
functions that perform only one kind of task and do not excessively interact with other
modules. Independence is important because it makes implementation more accessible
and faster. The independent modules are easier to maintain, test, and reduce error
propagation and can be reused in other programs as well. Thus, functional
independence is a good design feature which ensures software quality.

A

Functional Independence:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

It measures the relative function strength of a module.

A

Cohesion

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

It is measured using two criteria:

A

Cohesion:
Coupling:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

It measures the relative interdependence among modules.

A

Coupling:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
The fundamental of Information hiding suggests that modules can be characterized by the design decisions that protect from the others, i.e., In other words, modules should be specified that data include within a module is inaccessible to other modules that do not need for such information.
Information hiding
21
To design a system, there are two possible approaches:
Top-down Approach Bottom-up Approach
22
A good system design strategy is to organize the program modules in such a method that are easy to develop and latter too, change. Structured design methods help developers to deal with the size and complexity of programs. Analysts generate instructions for the developers about how code should be composed and how pieces of code should fit together to form a program.
Strategy of Design
23
SOLID Principles
(Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion)
24
Additional Software Design Principles
* SOLID Principles (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) * DRY (Don’t Repeat Yourself) * Encapsulation Principle * Principle of Least Astonishment (PoLA) * You Aren’t Gonna Need It (YAGNI) * Keep It Simple, Stupid (KISS)
25
DRY
(Don’t Repeat Yourself)
26
(PoLA)
Principle of Least Astonishment (
27
(YAGNI)
You Aren’t Gonna Need It
28
Different Designs in Software
Architectural Pattern Design Pattern
28
KISS
Keep It Simple, Stupid
29
explains a system’s core ideas and characteristics with respect to its relationships, environment, and other design principles. It includes a software system’s organizational structure, behavioral components, and composition of those components into more complex subsystems.
Software architecture
30
defines the high-level structure and organization of a software system. It outlines the fundamental components, their interactions, and the overall layout of the system. It guide decisions about the system’s scalability, performance, and maintainability. They focus on the system’s macro-level aspects and establish a framework for the design and implementation of the entire application.
software architecture pattern
31
6 Different Architectural Patterns
* Layered Pattern Client-server architecture event-driven architecture Microservices Monolithic MV Pattern
32
Separates application into clients (user interfaces) and servers (data processing) to manage data sharing and user interactions. Ideal for distributed systems like web-based services.
Client-server architecture
32
It is one of the most common types of architecture in software engineering. Organizes software into horizontal layers, each responsible for distinct functionalities like presentation, business logic, and data storage. Enables modular development and maintenance, commonly used in web applications.
Layered Pattern
33
Emphasizes communication between components through asynchronous events, triggered by user actions or data changes. Used in real-time systems and graphical user interfaces.
event-driven architecture
34
Structures applications as a collection of small, independently deployable services, enabling scalability and rapid development. Common in cloud-based systems.
Microservices
35
An older approach where all components of an application are tightly integrated into a single codebase and are deployed together. While less common now, it's still seen in some legacy systems.
Monolithic
35
It is an umbrella term that encompasses variants of this architecture pattern, and they differ in terms of the type and level of coupling between the components.
MV* Pattern
36
are an important concept in software development. They provide tested answers to common design issues, helping developers reduce code structure and improve maintainability. Design patterns allow you to construct resilient and scalable systems while also supporting excellent software architectural practices.
Design Pattern
37
is a general, recurring solution to a commonly encountered problem in software design that is utilized in software engineering.
Design Pattern
38
It is not a comprehensive design that can be implemented in code straight immediately.
Design Pattern
39
It is a description or model for issue solving that may be used in a variety of settings.
Design Pattern
40
are similar to cooking recipes in that they provide a tried-and-true approach to producing consistent results without having to start from scratch each time.
Design Pattern
41
Attempt to generate things in a manner appropriate to the situation.
Creational Design Patterns
42
Types of Design Pattern
1. Creational Design Patterns 2. Structural Patterns 3. Behavioral Design Patterns
43
Are concerned with the generation of objects, ensuring that they are formed in a situationally appropriate manner and providing flexibility in how objects are instantiated.
Creational Design Patterns
44
Concerned with object composition, specifying how to combine items to achieve additional functionality
Structural Patterns
44
It is a formula for combining many objects and classes to create a larger structure.
Structural Patterns
45
It's similar to building a house based on a blueprint.
Structural Patterns
46
These patterns tell us how to incorporate the distinct components of a system in a way that is simple to update or grow without affecting the overall system.
Structural Patterns
46
These patterns help resolve typical issues with how parts of codeshare work, disguise what they do, and stay organized.
Behavioral Design Patterns
47
When developers adopt these patterns, it's like putting together a jigsaw, with the pieces fitting together effortlessly.
Behavioral Design Patterns
48
This makes the software more organized, easy to alter, and less likely to break when we add or change things.
Behavioral Design Patterns
49
is an essential phase of the Software Development Life Cycle. The list of requirements that you develop in the definition phase is used to make design choices. In the design phase, one or more designs are created to achieve the project result. Depending on the project subject, the design phase products include dioramas, flow charts, sketches, site trees, HTML screen designs, photo impressions, prototypes, and UML schemas.
Design Phase in SDLC
50
All the details about the system design phase are mentioned in the software requirement specification document. It helps development teams in the implementation phase for error-free system development.
true
51
A thorough analysis and requirement helps to prepare better designs at once. Many companies follow agile methodology for software development.
Design Phase in SDLC
52
Many types of designs are created in this phase of the software development process. Depending on the business requirements and the client’s needs, the design is improved many times. Moreover, developers build a minimum viable product and get feedback from real customers.
Design Phase in SDLC
53
A software developer checks all required documents for a better production environment. Since designing defines the entire system architecture, no development team moves forward without it.
true
54
The design of a software system falls into two categories.
1) High-Level Design (HLD): 2) Low-Level Design (LLD):
55
It includes the functional logic of the modules. You have to collect the details of the interface, database tables, and type and size. Furthermore, a listing of error messages, and addresses dependency issues.
2) Low-Level Design (LLD):
56
It includes a brief description and the name of each module. So, you have to analyze the functionality of each module. Moreover, key elements are used to identify the database tables.
1) High-Level Design (HLD):
57
At this stage, developers define the technical details of the product. They are as follows.
* Screen design * Sketches * System interfaces * UI/UX designs * Databases * Prototypes
58
Roles in design phaseq
Client. * UX designer. * Project manager. * Business analyst. * Software developer. * Quality assurance (QA) specialist.
59
Provides business-related information, reviews materials prepared by the team, and approves project milestones.
Client
60
Ensures that the user’s interaction with the product is logical by creating user-centered product interface designs
UX designer.
61
Leads the project and makes decisions to ensure a successful outcome (project organization, task allocation, budget planning, progress monitoring, and others).
Project manager.
62
Helps clients translate their requirements into product features, create an original code for the product
* Software developer.
63
Creates product requirements for UX designers and reviews the designs they make
Business Analyst
64
Involved in analyzing requirements and testing product designs to ensure a lack of performance issues.
* Quality assurance (QA) specialist.
65
Requirements Visualization in Design Phase
Rapid Prototyping Wireframes
65
Starting with a clean, spare wireframe design also gives UI/UX designers room to iterate. They can collect early feedback from user testing on core UX/UI elements, without distracting users with visual design details. Design teams try out different concepts, user flows, and templates as they work toward the ultimate user experience.
true
66
basic blueprints that help teams align on requirements, keeping UX design conversations focused and constructive.
wireframe
67
Your wireframe shows the design team and stakeholders the bare- bones outlines of essential webpages, components, and features, including: * Screen layouts * Navigation bars * Components of UX and UI design * Interactive elements
true
68
prioritizes speed, so it’s limited in scope—but even a quick mockup can stress-test and improve a product design.
rapid prototyping
69
Test your prototype with target users and key stakeholders to learn whether it meets expectations.
* Review.
69
The three-step rapid prototyping process is basically a loop that repeats until you’ve got a prototype that resonates with your users. The main steps are:
Build. * Review. * Refine.
70
Create mock-ups of a design concept or flow, keeping your users’ needs and company’s goals in mind.
Build
71
Adjust the prototype based on the feedback you receive.
* Refine.