Software Engineering Notes - 3 - 1713175886935
Software Engineering Notes - 3 - 1713175886935
Design Engineering
introduction
Design engineer
A design engineer is an engineer focused on the engineering design process in any of the
Design engineers tend to work on products and systems that involve adapting and using
Design concepts should be communicated clearly to the design team and stakeholders so
In product management, a design concept is a short description of the idea behind the
In other words, a design concept provides a brief explanation of your product idea and why
you believe the product will be worth designing, developing, and releasing to the market.
Software Design Process – Software Engineering
The software design process can be divided into the following three levels or
phases of design:
Interface Design
Architectural Design
Detailed Design
Continue…
Interface Design
its environment.
This phase proceeds at a high level of abstraction with respect to the inner
workings of the system i.e, during interface design, the internal of the
systems are completely ignored, and the system is treated as a black box.
2.Architectural Design
2.Architectural Design
In architectural design, the overall structure of the system is chosen, but the
Detailed Design
Design is the specification of the internal elements of all major system
components, their properties, relationships, processing, and often their
algorithms and the data structures
The detailed design may include:
Decomposition of major system components into program units.
Allocation of functional responsibilities to units.
User interfaces.
Unit states and state changes.
Data and control interaction between units.
Data packaging and implementation, including issues of scope and visibility of
program elements.
Algorithms and data structures.
design Model
Design Model continue
Software design patterns are communicating objects and classes that are
Creational Design Pattern abstract the instantiation process. They help in making a
system independent of how its objects are created, composed and represented.
Structural Design Patterns
Structural Design Patterns are concerned with how classes and objects are
The software needs the architectural design to represents the design of software.
IEEE defines architectural design as “the process of defining a collection of hardware and software
components and their interfaces to establish the framework for the development of a computer
system.”
The software that is built for computer-based systems can exhibit one of these many architectural
styles
Each style will describe a system category that consists of :
A lot of patterns were tried and tested. Most of them have successfully solved
various problems. In each pattern, the components are organized differently for
1. Layered Pattern :
As the name suggests, components(code) in this pattern are separated into
layers of subtasks and they are arranged one above another.
Each layer has unique tasks to do and all the layers are independent of one
another. Since each layer is independent, one can modify the code inside a
layer without affecting others.
It is the most commonly used pattern for designing the majority of software.
This layer is also known as ‘N-tier architecture’. Basically, this pattern has 4
layers.
Presentation layer (The user interface layer where we see and enter data into
an application.)
Business layer (this layer is responsible for executing business logic as per the
request.)
Application layer (this layer acts as a medium for communication between the
‘presentation layer’ and ‘data layer’.
Data layer (this layer has a database for managing data.)
2. Client-Server Pattern :
2. Client-Server Pattern :
The client-server pattern has two major entities. They are a server and multiple
clients.
Here the server has resources(data, files or services) and a client requests the server
for a particular resource. Then the server processes the request and responds back
accordingly.
Examples of software developed in this pattern:
Email.
WWW.
File sharing apps.
Banking, etc…
3. Event-Driven Pattern :
3. Event-Driven Pattern :
Event-Driven Architecture is an agile approach in which services (operations)
of the software are triggered by events.
Well, what does an event mean?
When a user takes action in the application built using the EDA approach, a
state change happens and a reaction is generated that is called an event.
Eg: A new user fills the signup form and clicks the signup button on Facebook
and then a FB account is created for him, which is an event.
4. Microkernel Pattern :
4. Microkernel Pattern :
Microkernel pattern has two major components. They are a core system and
plug-in modules.
The core system handles the fundamental and minimal operations of the
application.
The plug-in modules handle the extended functionalities (like extra features)
and customized processing.
5. Microservices Pattern :
The collection of small services that are combined to form the actual
application is the concept of microservices pattern. Instead of building a
bigger application, small programs are built for every service (function) of an
application independently. And those small programs are bundled together to
be a full-fledged application.
So adding new features and modifying existing microservices without
affecting other microservices are no longer a challenge when an application is
built in a microservices pattern.
WebApp Design
Web app design is the process of creating a website application that delivers
a seamless user experience (UX) and meets users’ core needs with a clear,
Interface Design
Where am I? The interface should
provide an indication of the WebApp that has been accessed
Inform the user of location in the content hierarchy
What can I do now? The interface should always help the user understand his current options
what functions are available?
what links are live?
what content is relevant?
Where have I been, where am I going? The interface must facilitate navigation.
Provide a “map” (implemented in a way that is easy to understand) of where the user has been and what
paths may be taken to move elsewhere within the WebApp.
Aesthetic Design
Aesthetic Design
Aesthetic design, also called graphic design.
Layout Issues :
Don’t be afraid of white space.
Emphasize content.
Organize layout elements from top-left to bottom right.
Group navigation, content, and function geographically within the page.
Don’t extend your real estate with the scrolling bar.
Consider resolution and browser window size when designing layout.
Content Design
Content Design
Develops a design representation for content objects
For WebApps, a content object is more closely aligned with a data object for
conventional software.
Represents the mechanisms required to instantiate their relationships to one
another.
Analogous to the relationship between analysis classes and design components.
A content object has attributes that include content-specific information
Implementation-specific attributes that are specified as part of design
Architecture Design
Architecture Design
Content architecture focuses on the manner in which content objects (or composite objects such as Web
pages) are structured for presentation and navigation.
The term information architecture is also used to predict structures that lead to better organization, labeling,
navigation, and searching of content objects.
WebApp architecture addresses the manner in which the application is structured to manage user
interaction, handle internal processing tasks, effect navigation, and present content.
Architecture design is conducted in parallel with interface design, aesthetic design and content
design.
Content architecture :
Four different content structures :
(1) Linear structures
(2) Grid structure
(3) Hierarchical structures
(4) Networked or “pure web” structure
WebApp architecture
WebApp architecture
WebApp infrastructure models that decouple the user interface from the WebApp
Navigation Design
Begins with a consideration of the user hierarchy and related use cases.
Each actor may use the WebApp somewhat differently and therefore have different
navigation requirements
As each user interacts with the WebApp, it encounters a series of navigation
semantic units (NSUs)
NSU—“a set of information and related navigation structures that collaborate in the
fulfillment of a subset of related user requirements”
Navigation Design
Component-Level Design
Perform localized processing to generate content and navigation capability in a dynamic fashion
Provide computation or data processing capability that are appropriate for the WebApp’s business
domain
Follow these five steps to structure your web app design—adapting the
Web app design is a circular process: repeat steps and move back and forth in
line with workflow constraints, as well as the user insights you discover
1. Discover key user and market needs
Begin by understanding your users and product market. Ask yourself key web
app design questions to guide your research, including:
Who will use this web app?
What goals do our users have?
What are our main organizational goals with this web app?
How will our web app stand out from the competition?
2. Define your solutions
Once you’ve conducted user and market discovery research,
synthesize your key learnings by creating user personas, defining
problem statements, and mapping out an ideal customer journey.
Next, generate ideas to solve the key user problems you’ve
identified. Use brainstorming techniques to ideate web app features
and elements that will address your users’ most urgent needs.
3. Create a backlog for your web app design and collaborate
Once you’ve defined the solutions your web app will offer, and have a clear
sense of your priorities, you can plan out the web app design process by
creating a backlog—a list of ideas for new design features, updates to
existing features, bug fixes, and infrastructure optimizations.
Include a plan for the next stages of the product design process, including
development, testing, and further user discovery.
4. Build and iterate
Next, focus on developing solutions you can test and roll
out with real users. Start with mockups, wireframes, and
prototypes that model the basic web abb navigation
architecture and UX elements. Then, test these with
current or potential users and incorporate their feedback
into future iterations.
web application design is the stage of software development that focuses on
the user interface (UI) and overall user experience (UX). The focus of web app
design is fully on the users:
How users experience the web app
Whether the web app responds clearly to user needs
If the web app makes it easy for users to find what they are looking for
How to design a web app that users
will do - 7 steps
How to design a web app that users will love - 7 steps
1. Set design goals
The first step of web application design is to specify your goals. Without clear
goals, you won’t be able to design a web app that meets your needs. To draft
Before you can design compelling web applications, you need to understand
the market, your potential customers, and what the competition is doing.
After you have a sense for the market, the competition, and who your users are - and perhaps even what
their needs and expectations are, it’s time to dig even deeper. Take your user research to the next level by
During this stage of the process, a UI designer takes a blank canvas and begins
A team can test the usability of the prototype as soon as it is finished. Unlike
QA testing and A/B testing, the major objective of usability testing is to get
interface is and whether the user can accomplish their objectives using the
product.
7. Refine and update