Unit 4
Design Engineering
Q. 1) Describe the Design process.
Sol: Design process -
The design of the software is an iterative process by which specifications are converted into a "blueprint" for software construction. That is, at a high level of abstraction the architecture is expressed, a level that can be traced to the basic purpose of the system and more comprehensive details, functional and behavioural specifications.
Subsequent refinement contributes to design representations at far lower levels of abstraction as design iterations occur. These can still be traced to specifications, but more subtle is the relation.
Software Quality Guidelines and Attributes
With a series of technical reviews, the consistency of the emerging design is evaluated in the design process. The three attributes that serve as a guide to the assessment of a successful design:
● All specific requirements found in the requirements model must be enforced by the design and all implied requirements desired by the stakeholders must be accommodated.
● For those who generate code and for those who evaluate and subsequently help the program, the design must be a readable, understandable guide for
● The design should provide a full picture of the program, addressing the details, functional, and behavioural domains from an implementation perspective.
Quality Guidelines - The software, to determine the consistency of a design representation, Technical standards for good design must be set by the team. The guidelines are the following:
2. Architecture should be modular, that is, logically partitioning the program into elements or subsystems.
3. Separate representations of data, architecture, interfaces, and components should be included in a design.
4. A design can lead to data structures that are ideal for the implementation of the classes and are derived from recognizable data patterns.
5. A layout can lead to elements that exhibit distinct functional features.
6. A design can lead to interfaces that reduce the complexity of ties with the external world and between components.
Quality Attribute - A collection of software quality attributes has been developed by Hewlett-Packard, FURPS-functionality, accessibility, reliability, efficiency, and supportability, provided the acronym.
For all software design, the FURPS quality attributes reflect an objective:
Q. 2) What do you mean by Abstraction?
Sol: Abstraction -
When you consider every problem to be a modular solution, several levels of
abstraction may be posed. At the highest level of abstraction, using the language of the problem set, a solution is described in general terms. A more detailed explanation of the solution is provided at lower levels of abstraction. Finally, the solution is described in a way that can be explicitly applied at the lowest level of abstraction.
A procedural abstraction relates to a set of instructions that have a particular and restricted purpose. These functions are indicated by the name of procedural abstraction, but precise specifics are suppressed. Data abstraction is a set of named data representing a data object.
Q. 3) What are the design models?
Sol: Design model -
As design activities are performed as part of the software process, the process component indicates the evolution of the design model. As each aspect of the analysis model is converted into a design equivalent and then iteratively refined, the abstraction dimension reflects the level of detail.
The dashed line shows the limit between the analysis and the models of architecture. The model of research slowly blends into the template and it is less apparent to provide a strong distinction.
The concept model components use UML diagrams that have been used in the research model. The difference is that, as part of the design, these diagrams are refined and elaborated; more implementation-specific specifics are given, and architectural layout and style, components within the architecture, and interfaces between the components and the outside are provided. Much of the world is highlighted.
Fig: Dimension of the design model
However, you should remember those model elements displayed along the horizontal axis are not always sequentially created. When the concept has been fully developed, the implementation model is typically delayed.
Data Design Element
Like other things in software engineering, data design (sometimes referred to as data architecture) generates a data and/or knowledge model that is Described at a high abstract level. This data model is then refined into more and more implementation-specific representations that the computer-based system can process.
A significant part of software design has always been the structure of data. For the development of high-quality applications, the design of data structures and the associated algorithms needed to manipulate them is important at the software component level. At the application stage, the transformation into a database of a data model is central to the achievement of a system's business objectives.
The compilation of information collected in various databases and reorganized into a "data warehouse" at the business level allows data mining or exploration of knowledge that can have an impact on the performance of the organization itself.
Architectural Design Elements
The design of the architecture for applications is the equivalent of the ground plan of a home. An overall view of the house is provided to us by the floor plan. Elements of architectural design offer us an overall view of the program.
The model of architecture is derived from three sources:
(1) the application domain details for the software which is to be built;
(2) basic criteria model elements for the problem at hand, such as data flow diagrams or groups of analysis, their relationships and collaborations; and
(3) availability of styles and patterns of architecture.
The element of architectural design is typically defined as a collection of interconnected subsystems. Each subsystem can have its architecture.
Interface Design Elements
The user interface design is similar to a series of detailed sketches for a house's doors, windows, and external utilities. The Configuration of the Interface Software elements represents the flow of information into and out of the system and how it is transmitted between the components identified as part of the architecture.
Three essential elements of interface design are available:
These elements of the interface design allow the software to communicate externally and allow internal communication and cooperation between the components that populate the architecture of the software.
Definitive information about the organization to which information is sent or received is needed for the design of external interfaces. Internal interface design is closely associated with design at the component level.
Component-Level Design Elements
The design of the component-level for applications is for each room in a building, the equivalent of a collection of detailed drawings (and specifications). The component-level software architecture thoroughly defines the internal specifics of each component of the software.
The component-level architecture specifies data structures for all local data objects and algorithmic information for all processing within a component and an interface that allows access to all component operations to achieve this (behaviors).
A part is represented in UML diagrammatic form in the sense of object-oriented software engineering.
To represent processing logic, a UML operation diagram can be used. It is possible to depict detailed procedural flow for a variable using either pseudocode or some other diagrammatic type (e.g. flowchart or box diagram). The algorithmic framework complies with the guidelines for structured programming (i.e., a set of constrained procedural constructs).
Deployment-Level Design Elements
Deployment-level design elements show how the physical computing environment that will help the program will assign software features and subsystems.
Fig: UML Development diagram
A UML deployment diagram is developed during the design and then refined. The diagram shown is in descriptor form. This implies that the deployment diagram displays the computing environment, but does not define configuration information directly.
Q. 4) Describe Software architectures and also write the importance.
Sol: Software architecture -
Many different qualities come to mind when you consider the architecture of a house. You are speaking about the general form of the physical structure at the most basic level. However, architecture is much more than that.
But architecture is still " thousands of decisions, both big and small " Any of these choices are made in design early on and can have a significant influence on all other design behaviour.
The device structure or structure that includes software components, the externally observable properties of those components, and the relationship between them is the software architecture of a program or computing system.
Architecture acts as a framework blueprint. It provides an abstraction for managing the complexities of the system and establishing a process of communication and coordination between components.
To satisfy both technological and operational requirements, it describes a standardized approach while maximizing common quality attributes such as performance and protection.
What is Architecture
Software architecture must model a system's configuration and how data and procedural components function together with each other.
The device structure or frameworks containing the software components, the externally observable properties of those components, and the relationships between them, are the software architecture of a program or computer system.
The design is not operational software. Instead, it's a representation that allows you to
The role of "software components" in any architectural representation is emphasized by this definition
A software component can be anything as simple as a program module or object-oriented class in the sense of architectural design, but it can also be generalized to include databases and 'middleware' that allow clients and servers to configure a network. Component properties are those features that are important for an understanding of how the components interact with other components.
Internal properties (e.g., algorithm details) are not defined at the architectural level. Component relationships can be as basic as a procedure call from one module to another or as complex as a protocol for accessing a database.
Why is Architecture Important
Three key reasons for the value of software architecture:
Q. 5) Define Architectural styles.
Sol: Architectural style -
Architectural style defines a type of system that covers
2. a collection of connectors that allow components to "communicate, coordinate and cooperate";
3. Restrictions that determine how to incorporate components to shape the system;
4. Semantic models allow a designer to comprehend a system's overall properties by analyzing the known properties of its parts.
An architectural style is a modification based on an entire system's architecture. The aim is to create a framework for all elements of the system.
An architectural pattern imposes a transformation on the nature of architecture, like an architectural theme. However, in a variety of fundamental ways, a pattern varies from a style:
● A pattern's reach is less broad, concentrating in its entirety on one aspect of the architecture rather than the architecture;
● A pattern imposes an architecture rule specifying how the program can manage some element of its infrastructure level functionality (e.g., concurrency).
● In the context of architecture, architectural trends seek to fix particular behavioural problems (e.g., how real-time applications handle synchronization or interrupt).
Patterns may be used to shape the overall structure of a system in accordance with an architectural design.
Q. 6) What do you mean by object-oriented architecture?
Sol: Object-oriented architectures -
Data and the operations that must be applied to modify the data are encapsulated by the components of a device. Via message passing, communication, and synchronization between components are achieved.
Layered architectures - Some different layers are defined, each accomplishing operation that progressively becomes closer to the machine instruction set. At the outer layer, components service user interface operations. At the inner layer, components perform operating system interfacing.
Intermediate layers provide utility services and application software functions. These architectural styles are only a small subset of those available.
Once requirements engineering uncovers the characteristics and constraints of the system to be built, the architectural style and/or combination of patterns that best fits those characteristics and constraints can be chosen.
For example, a layered style (appropriate for most systems) can be combined with a data-centered architecture in many database applications
Q. 7) What is component-level design for Webapps?
Sol: A element of a WebApp is
- Content Design
- Functional Design
Content Design at the Component Level
Functional Design at the Component Level
Modern Web applications have increasingly advanced processing features that—
You can design and develop WebApp functional components that are identical to software components for traditional software to achieve these (and many other) capabilities.
Q. 8) Define component level design elements.
Sol: Design model -
The design of the component-level for applications is for each room in a building, the equivalent of a collection of detailed drawings (and specifications). The component-level software architecture thoroughly defines the internal specifics of each component of the software.
The component-level architecture specifies data structures for all local data objects and algorithmic information for all processing within a component and an interface that allows access to all component operations to achieve this (behaviors).
A part is represented in UML diagrammatic form in the sense of object-oriented software engineering.
To represent processing logic, a UML operation diagram can be used. It is possible to depict detailed procedural flow for a variable using either pseudocode or some other diagrammatic type (e.g. flowchart or box diagram). The algorithmic framework complies with the guidelines for structured programming (i.e., a set of constrained procedural constructs).
Q. 9) What are the basic concepts of Design?
Sol: Design concepts -
Throughout the history of software engineering, design principles have evolved. Each principle provides a basis for the software designer from which more advanced methods of design can be implemented. Below is a brief description of essential principles in software design that encompass both conventional and object-oriented software creation.
When you consider every problem to be a modular solution, several levels of
abstraction may be posed. At the highest level of abstraction, using the language of the problem set, a solution is described in general terms. A more detailed explanation of the solution is provided at lower levels of abstraction.
2. Architecture
The architecture of the software alludes to "the general layout of the software and How the context provides a structure with logical integrity”. Architecture is, in its simplest form, the arrangement or organization of software components (modules), how these components communicate, and the data structure used by the components.
3. Design Patterns
A pattern is a so-called insight nugget that transmits the essence of a known In a certain context, amid conflicting problems, solutions to a recurrent problem. Stated
A design pattern defines a design framework that addresses a specific design problem within a particular context and amid "forces" that may influence the way the pattern is implemented and used.
4. Separation of Concerns
Separation of concerns is a principle of design that implies that if it is subdivided into pieces that can each be solved and/or optimized separately, any complex problem can be addressed more easily.
This leads to a divide-and-conquer strategy; when you break it into manageable bits, it is easier to solve a complicated problem. With respect to device modularity, this has significant consequences.
5. Modularity
The most common manifestation of separation of worries is modularity.
Software is split into separately named and addressable components that are combined to fulfill problem requirements also called modules.
Modularity is the single attribute of software that enables a program to be intellectually manageable," it has been stated."
6. Information Hiding
The theory of hiding information implies that modules are "Characterized by design decisions that hide from everyone else." In other words, modules should be defined and configured so that information stored within a module (algorithms and data) is inaccessible to other modules that do not require such information.
7. Functional Independence
The idea of functional independence is a direct outgrowth of Separation of interests, modularity, and the principles of hiding knowledge and abstraction.
The creation of modules with "single-minded" features and an "aversion" to undue contact with other modules achieves functional independence. In other words, you can design software such that each module addresses a particular subset of requirements and, when viewed from other sections of the program structure, has a simple interface.
8. Refinement
Stepwise refinement is a technique for top-down design. The creation of software is By successively refining procedural information levels. A hierarchy is defined by stepwise decomposing a macroscopic function statement (a procedural abstraction) until programming language statements are reached.
9. Aspects
A collection of "concerns" is discovered as the review of requirements occurs. These "Include requirements, use cases, features, data structures, quality of service problems, variants, boundaries of intellectual property, collaborations, trends, and contracts".
10. Refactoring
For several agile processes, a significant design task is the refactoring of a
The technique of reorganization simplifies a component's design (or code) without modifying its purpose or behaviour. "Refactoring is the process of modifying a software system in such a way that it does not change the code [design ]’s behaviour, but improves its internal structure."
11. Object-Oriented Design Concept
In modern software engineering, the object-oriented (OO) paradigm is commonly used. Concepts of OO architecture, such as classes and artefacts, inheritance, Messages, and, among others, polymorphism.
12. Design Classes
You can identify a collection of design classes as the design model evolves,
By providing design specifics that will allow the classes to be implemented, and implementing a software infrastructure that supports the business solution, they refine the study classes.
Q. 10) What is functional independence?
Sol: Functional independence -
The idea of functional independence is a direct outgrowth of Separation of interests, modularity, and the principles of hiding knowledge and abstraction.
The creation of modules with "single-minded" features and an "aversion" to undue contact with other modules achieves functional independence. In other words, you can design software such that each module addresses a particular subset of requirements and, when viewed from other sections of the program structure, has a simple interface.
Two qualitative measures are used to determine independence: cohesion and coupling
A single task is carried out by a cohesive module, requiring little contact with other modules in other parts of a program. Simply put, a coherent module can do only one thing (ideally).
Although you should always aim for high cohesion (i.e. single-mindedness), making a software component perform several functions is also important and advisable.
In a software structure, the coupling is an indication of interconnection between modules. Coupling relies on the complexity of the interface between modules, the point at which a module entry or reference is made, and what data moves through the interface.