Back End Design NOTES
Back End Design NOTES
TEACHER’S LEARNING
GUIDE
SCHOOL: GLORY ACADEMY
Prepared by: Eng. Innocent N
1
Table Of Contents
2
3
Gathering FURPS Requirements
FURPS is an acronym that stands for functionality, usability, reliability, performance, and
security.
To understand the back end, or the “server side,” you also have to know the front end and
how the two interact. The front end, also called “client-side” programming, is what
happens in the browser—everything the end users see and interact with. The back end, on
the other hand, happens on the server (on site, or in the cloud) and databases. It’s the
machinery that works behind the scenes—everything the end user doesn’t see or directly
interact with, but that powers what’s happening.
It’s important to note that this convenient way of divvying up development has changed
significantly over the past 10 to 15 years with the explosive growth of JavaScript, which
wasn’t as ubiquitous on the front end as it is now, or as common on the back end, thanks
to Node.js. There’s more overlap between the two, especially when it comes to a
JavaScript developer’s role on a fully JavaScript-powered stack.
4
Here’s a visual to give you an idea of how front-end and back-end development flow.
You can see how the server-side (in the green box) manages all those requests that come
from users’ clicks. Front-end scripts volley those requests over to the server side to be
processed, returning the appropriate data to the front end. This often happens in a
constant loop of requests and responses to the server.
Now, let’s take a look at how back-end architecture works—the software and machinery
that take over in step four in the above graphic.
5
The “traditional” back end is a mix of the server, databases, APIs, and operating systems
that power an app’s front end. For an in-depth look at the software that ties it all
together, read our article on Server-Side Scripting. The back end of applications can look
very different from application to application, whether it’s the use of cloud-based servers
and data warehouses, containerization with a service like Docker, Backend -as-a-Service
(BaaS) providers, or APIs to replace more complex processing.
2. System:
Definition: A system is a set of interconnected components working together to achieve
a common goal. In the context of software, a system comprises both frontend (user
interface) and backend components.
6
It is an organized set of doctrines, ideas, or principles usually intended to explain the
arrangement or working of a systematic whole.
3. Server:
Definition: A server is a computer or software that provides services or resources to
other computers or clients in a network. In web development, servers handle requests
from clients and manage data processing.
Database servers, print servers, mail servers, file servers, application servers, web servers, and
game servers are a few examples of servers.
In the client/server programming model, a server program awaits and fulfills requests
from client programs, which might be running in the same, or other computers. A given
application in a computer might function as a client with requests for services from other
programs and as a server of requests from other programs.
The term server can refer to a physical machine, a virtual machine or to software that is
performing server services. The way that a server works varies considerably depending on how
the word server is being used.
7
Of your back-end stack’s four components, whether it’s on-site or in the cloud, the server
acts as the lifeblood of the network. These high-powered computers provide shared
resources that networks need to run, including file storage, security and encryption,
databases, email, and web services. Once you’ve gotten the basics down about on-site
servers, expand your knowledge with a look at virtualization, how servers get provisioned
to house multiple apps, and containerization, another way servers provision their
operating systems out to house compartmentalized applications.
8
4. Database:
Definition: A database is a structured collection of data organized in a way that
facilitates efficient storage, retrieval, and management. Databases are used to store and
manage the data that applications rely on.
9
Middleware
10
5. Operating System:
Definition: The operating system is software that manages hardware and other software
on a computer. It provides services for computer programs and acts as an intermediary
between users and the computer hardware.
An operating system (OS) is system software that manages computer hardware and
software resources, and provides common services for computer programs.
The systems development life cycle (SDLC) is the overall process for developing information
systems from planning and analysis through implementation and maintenance. The SDLC is the
foundation for all systems development methodologies and there are literally hundreds of
different activities associated with each phase in the SDLC.
Typical activities include determining budgets, gathering system requirements, and writing
detailed user documentation. The activities performed during each systems development
project will vary. The SDLC begins with a business need, followed by an assessment of the
functions a system must have to satisfy the need, and ends when the benefits of the system no
longer outweigh its maintenance costs.
11
This is why it is referred to as a ‘lifecycle’. The SDLC is comprised of seven distinct phases:
planning, analysis, design, development, testing, implementation, and maintenance. This
section takes a detailed look at a few of the more common activities performed during the
phases of the systems development life cycle along with common issues facing software
development projects .
12
7. API (Application Programming Interface):
Definition: An API is a set of rules and protocols that allows one software application to
interact with another. It defines how software components should communicate,
making it easier for developers to integrate different systems.
13
You can’t talk about the back-end portion of an application these days without
touching on APIs (application programming interfaces) and how they connect
software, applications, databases, and services together seamlessly. APIs play an
integral role in how most server-side software architectures are built, oftentimes
replacing more complicated programming to allow software to communicate and data
to be transferred.
In Other words
Application refers to any software with a distinct function. Interface can be thought of as a
contract of service between two applications. This contract defines how the two communicate
with each other using requests and responses.
There are four different types of APIs commonly used in web services: public, partner, private
and composite.
14
What is JSON object notation in JavaScript?
JavaScript Object Notation (JSON) is a standard text-based format for representing structured
data based on JavaScript object syntax. It is commonly used for transmitting data in web
applications (e.g., sending some data from the server to the client, so it can be displayed on a
web page, or vice versa).
9. Framework:
Definition: A framework is a pre-built set of tools, libraries, and best practices that
provides a foundation for developing software. It helps developers by offering a
structure to build upon, reducing the need to write repetitive code.
UML (Unified Modeling Language) images are visual representations of the UML diagrams used
for modeling software systems. These diagrams can include class diagrams, sequence diagrams,
use case diagrams, and more. They are used to help developers and stakeholders understand
the structure and behavior of a system.
15
11. FURPS (Functionality, Usability, Reliability, Performance, and Supportability):
Definition: FURPS is an acronym used to categorize software requirements into five key areas:
Functionality (features and capabilities), Usability (user interface and user experience),
Reliability (system stability and fault tolerance), Performance (speed and efficiency), and
Supportability (maintainability and documentation).
These definitions should help in understanding the key terms as you proceed with gathering
FURPS requirements for your software project. If you have specific questions about any of
these terms or need further clarification, feel free to ask!
Software Development life cycle (SDLC) is a spiritual model used in project management that
defines the stages include in an information system development project, from an initial
feasibility study to the maintenance of the completed application.
There are different software development life cycle models specify and design, which are
followed during the software development phase. These models are also called "Software
16
Development Process Models." Each process model follows a series of phase unique to its type
to ensure success in the step of software development.
Waterfall Model
The waterfall is a universally accepted SDLC model. In this method, the whole process of software
development is divided into various phases.
The waterfall model is a continuous software development model in which development is seen
as flowing steadily downwards (like a waterfall) through the steps of requirements analysis,
design, implementation, testing (validation), integration, and maintenance.
Linear ordering of activities has some significant consequences. First, to identify the end of a
phase and the beginning of the next, some certification techniques have to be employed at the
end of each step. Some verification and validation usually do this mean that will ensure that the
output of the stage is consistent with its input (which is the output of the previous step), and that
the output of the stage is consistent with the overall requirements of the system.
17
RAD Model
RAD or Rapid Application Development process is an adoption of the waterfall model; it targets
developing software in a short period. The RAD model is based on the concept that a better
system can be developed in lesser time by using focus groups to gather system requirements.
o Business Modeling
o Data Modeling
o Process Modeling
o Application Generation
o Testing and Turnover
Spiral Model
The spiral model is a risk-driven process model. This SDLC model helps the group to adopt
elements of one or more process models like a waterfall, incremental, waterfall, etc. The spiral
technique is a combination of rapid prototyping and concurrency in design and development
activities.
Each cycle in the spiral begins with the identification of objectives for that cycle, the different
alternatives that are possible for achieving the goals, and the constraints that exist. This is the
first quadrant of the cycle (upper-left quadrant).
The next step in the cycle is to evaluate these different alternatives based on the objectives and
constraints. The focus of evaluation in this step is based on the risk perception for the project.
The next step is to develop strategies that solve uncertainties and risks. This step may involve
activities such as benchmarking, simulation, and prototyping.
V-Model
In this type of SDLC model testing and the development, the step is planned in parallel. So, there
are verification phases on the side and the validation phase on the other side. V-Model joins by
Coding phase.
Incremental Model
The incremental model is not a separate model. It is necessarily a series of waterfall cycles. The
requirements are divided into groups at the start of the project. For each group, the SDLC model
is followed to develop software. The SDLC process is repeated, with each release adding more
functionality until all requirements are met. In this method, each cycle act as the maintenance
phase for the previous software release. Modification to the incremental model allows
18
development cycles to overlap. After that subsequent cycle may begin before the previous cycle
is complete.
Agile Model
Any agile software phase is characterized in a manner that addresses several key assumptions
about the bulk of software projects:
1. It is difficult to think in advance which software requirements will persist and which will
change. It is equally difficult to predict how user priorities will change as the project
proceeds.
2. For many types of software, design and development are interleaved. That is, both
activities should be performed in tandem so that design models are proven as they are
created. It is difficult to think about how much design is necessary before construction is
used to test the configuration.
3. Analysis, design, development, and testing are not as predictable (from a planning point
of view) as we might like.
Iterative Model
Big bang model is focusing on all types of resources in software development and coding, with
no or very little planning. The requirements are understood and implemented when they come.
This model works best for small projects with smaller size development team which are working
together. It is also useful for academic software development projects. It is an ideal model where
requirements are either unknown or final release date is not given.
19
Prototype Model
The prototyping model starts with the requirements gathering. The developer and the user meet
and define the purpose of the software, identify the needs, etc.
A 'quick design' is then created. This design focuses on those aspects of the software that will be
visible to the user. It then leads to the development of a prototype. The customer then checks
the prototype, and any modifications or changes that are needed are made to the prototype.
Looping takes place in this step, and better versions of the prototype are created. These are
continuously shown to the user so that any new changes can be updated in the prototype. This
process continue until the customer is satisfied with the system. Once a user is satisfied, the
prototype is converted to the actual system with all considerations for quality and security.
What is a framework?
20
A programming framework is a set of reusable software components that provide a foundation
for building applications. It includes pre-written code, libraries, and tools that help developers
create software applications more efficiently. Therefore, consulting firms often recommend
using the most popular ones to reduce development costs and speed up the time to market.
Python is one of the most popular and effective programming languages that contain vast
libraries and frameworks for almost every technical domain. Python frameworks automate the
implementation of several tasks and give developers a structure for application development.
Django
Django is a popular open-source full-stack Python framework that includes all the necessary
Python features by default.
Web2Py
Flask
Bottle
Bottle is a micro-framework for prototyping and building simple personal applications. It was
originally meant for building APIs and is considered by developers as one of the finest Python
web frameworks. It also allows developers to work closely with the hardware to build small and
simplistic personal use apps. CherryPy
21
CherryPy is an open-source Python framework that follows a minimalist approach for building
web applications. Released in 2002, it is one of the oldest Python frameworks still popular
today. Unlike other frameworks, you don't need to install the apache server to run CherryPy.
The best thing about this framework is that it allows you to use any type of technology for
creating templates and data access.
1.Laravel
On top of the list is Laravel. It is among one of the most widely used PHP frameworks. It
offers various benefits for businesses, including its robust security to authentication features
along with various useful libraries. This framework is known for its easy-to-read syntax, powerful
features, and developer-friendly environment.
By this, it means that when you hire PHP developers, it allows them to make eye-pleasing web
solutions.
Its features, like routing, ORM, authentication, caching, and more, simplify complex tasks and
promote code reusability.
Its active community ensures regular updates and excellent documentation.
Robust testing capabilities ensure bug-free web solutions.
2.CodeIgniter
If you are developing a web solution from scratch, this framework will save a lot of time for you.
22
Why Use CodeIgniter?
3.Symfony
It is a highly flexible PHP framework that uses a modular component system. Due to its advanced
features and ease of building large-scale applications with complex requirements, it is a highly
recommended framework.
Major companies like BlaBlaCar, Spotify, Magento, etc., use this robust PHP framework. In 2005,
it was launched, and since then, it has gained extensive enlightenment among web developers.
4.CakePHP
Cake PHP was the first PHP MVC framework created, but still, with the evolving time, it is most
widely used in web development. It will help you develop web solutions loaded with visually
impressive features. On top of that, the framework emphasizes convention over the
configuration approach. By this, it means that it decreases the number of decisions that a Cake
PHP development company is required to make without losing flexibility and do not repeat
yourself (DRY) principles.
23
Why use CakePHP?
With built-in features like ORM, validation, caching, and so on, it simplifies development and
promotes code reusability.
Due to the security features of this framework, it is a good choice for commercial web
applications.
It offers a scaffolding feature that automates code generation for rapid prototyping.
5.Phalcon
It is a full-stack PHP framework and is comparatively different from others. Its source code is
written in C and C++ coding styles. But you don’t have to worry about that as it is implemented
as a web server extension in C language.
This high-performance-oriented PHP framework is popularly known for its speed and low
overhead cuts. It is very well-documented and easy to use.
we will look into the features, advantages, and applications of the following Java Frameworks.
Spring
Hibernate
Struts
24
Wicket
GWT
Dropwizard
Play
Vaadin
Blade
Grails
A JavaScript Framework is a very important part of modern web development. There is no one
framework for the codes, as every JavaScript framework serves a different purpose. The
frameworks are easy to apply as every application or website has some common features. It
thus makes the task less laborious and time taking.
1. Angular
2. React
React was introduced in 2013 and was developed by Facebook. It is a reusable framework and
is used for building interactive user interfaces.
3. Vue.js
4. Node.js
25
5. Polymer
6. Backbone.js
Backbone JavaScript framework is used in the case of Single Page Applications. It is popular due
to its features which allow complex functions with comparatively lesser codes. However,
debugging could be an issue at times.
1. Ruby on Rails
Ruby on Rails is not only one of the most popular Ruby frameworks for web
development, it's also one of the most well-known web development frameworks
regardless of language.
2. Sinatra
Sinatra is more of a DSL than a full-fledged framework. Sinatra lets you quickly create
small web applications with minimal effort.
3. Hanami
Hanami is a Ruby on Rails alternative for building feature-rich, full-stack web apps.
Like Rails, it's an MVC framework and supports many features that Rails does, like
routing, controllers/actions, models, views, migrations, validations, mailers, and
assets.
26
4. Grape
Sometimes, you might want to add REST API capabilities to an existing web app—for
example, if you have a full-stack Rails web app and you now want to offer a REST API
so that you can build an Android app for it.
5. Cuba
Cuba is a microframework for web development. It's lightweight and offers minimal
features.
System Analysis, “the process of studying a procedure or business in order to identify its goals
and purposes and create systems and procedures that will achieve them in an efficient way.”
27
2. System Flow Chart:
A system flowchart is a pictorial or diagrammatic representation of the logical flow of
operations and information of an organization. It depicts the clear relationship between input
processing and output considering the entire system. A set of standard symbols are commonly
used for the construction of system flow charts.
3. Decision Tree:
Some decisions involve a series of steps. The outcome of the first decision guides the second;
the third decision depends on the outcome of the second, and so on. In such type of situations
of decision making uncertainty surrounds each step, so we face uncertainty, piled on
uncertainty.
28
Decision trees are the model to deal with such kind of problems. They are also very important
in decision making in a probabilistic situation where various opinions (or alternatives) can be
drawn (as if they are the branches of a tree) and the final outcomes can be understood.
4. Simulation:
The simulation model describes the operation of the system in terms of individual events,
components of the system. Mainly, it involves the development of a model which is mostly
mathematical in nature rather than directly describing the behavior of the overall system.
In particular, the system is divided into elements whose behavior is predicted in terms of
probability distributions.
29
The inter-relationships between the elements also are built into the model. Thus, simulation
provides a means of dividing the model building job into smaller component parts and then
combining these parts in their natural order and allowing the computer to present the effect of
their interaction on each other.
Simulation is nothing more or less than the technique of performing sampling experiments on
the model of the system. The experiments are done on the model rather than on the real
system itself only because the experiments on the real system would be too inconvenient,
expensive and time-consuming.
5. Decision Tables:
Decision tables are a graphical method of representing a sequence of logical decisions. It is
prepared in a tabular form. It lists all possible conditions and associated set of actions. A
decision table consists of the four parts-condition stub, condition entries, action stub, and
action entries.
Data Gathering
Data gathering is the first and most important step in the research process, regardless of the
type of research being conducted. It entails collecting, measuring, and analyzing information
about a specific subject and is used by businesses to make informed decisions.
30
Types of data
Before we can start the discussion on data gathering, we need to review the types of data you
can collect. All data can be divided into two categories, qualitative or quantitative. Further, data
Qualitative data
This type of data can’t be measured or expressed as a number. It s less structured than
information that is descriptive in nature and can consist of words, pictures, or symbols, which is
You indicated that you prefer product A. Why is that your favorite laundry detergent?
Quantitative data
Quantitative data is structured and can be analyzed statistically. Expressed in numbers, the data
can be used to measure variables. The results are objective and conclusive. Questions used to
collect quantitative data are usually “how many,” “how much,” or “how often?”
Once weekly
31
Every two weeks
Once a month
Other
1
2
3
First-party data
First-party or primary data is collected directly from your research participants. It’s valuable
data because it is gathered straight from your sources—which eliminates the issues of
misinterpretation and errors. First-party data is the most useful and reliable data for your
research.
Survey responses
Web analytics
Reviews
Email analytics
Interviews
Focus groups
32
Experiments
Observations
The information you can collect from first-party sources includes demographics, purchasing
Second-party data
Second-party or secondary data is data that has already been collected by someone else in the
past. It is less reliable because you cannot be certain of the methodology of the data collection.
It also was performed with a different hypothesis in mind, so analyses may not align well with
Previous research
Books
Websites
Libraries
Newspapers
Public records
Second-party data may be collected before primary data to help find knowledge gaps or to
33
Third-party data
With third-party data, you’re looking at data sets that are put together from various sources.
This type of data has usually been gathered by companies that don’t have direct relationships
FURPS is an acronym that stands for functionality, usability, reliability, performance, and
security. The “F” letter in FURPS refers to the functional requirements that have defined
previously and the remaining letters describe the nonfunctional requirements.
The back-end developer is responsible for the underlying code that powers an application,
website, or other software system. They are responsible for ensuring that the code they write is
clean, efficient, and meets the needs of the front-end developers.
34
Defining the scope of a backend system involves determining the specific functionalities and
features that the system will encompass. This includes identifying the data processing, storage,
and retrieval capabilities, as well as the integration with other systems and services.
The scope of a backend system can vary depending on the specific requirements of the project,
but generally includes tasks such as:
Database
Types of databases
There are many different types of databases. The best database for a specific organization
depends on how the organization intends to use the data.
Relational databases
Relational databases became dominant in the 1980s. Items in a relational database are
organized as a set of tables with columns and rows. Relational database technology provides
the most efficient and flexible way to access structured information.
Object-oriented databases
Information in an object-oriented database is represented in the form of objects, as in
object-oriented programming.
Distributed databases
A distributed database consists of two or more files located in different sites. The database
may be stored on multiple computers, located in the same physical location, or scattered
over different networks.
35
Data warehouses
A central repository for data, a data warehouse is a type of database specifically designed
for fast query and analysis.
NoSQL databases
A NoSQL, or nonrelational database, allows unstructured and semistructured data to be
stored and manipulated (in contrast to a relational database, which defines how all data
inserted into the database must be composed). NoSQL databases grew popular as web
applications became more common and more complex.
Graph databases
A graph database stores data in terms of entities and the relationships between entities.
OLTP databases. An OLTP database is a speedy, analytic database designed for large
numbers of transactions performed by multiple users.
These are only a few of the several dozen types of databases in use today. Other, less common
databases are tailored to very specific scientific, financial, or other functions. In addition to the
different database types, changes in technology development approaches and dramatic
advances such as the cloud and automation are propelling databases in entirely new directions.
Some of the latest databases include
Cloud databases
A cloud database is a collection of data, either structured or unstructured, that resides on a
private, public, or hybrid cloud computing platform. There are two types of cloud database
models: traditional and database as a service (DBaaS). With DBaaS, administrative tasks and
maintenance are performed by a service provider.
Multimodel database
Multimodel databases combine different types of database models into a single, integrated
back end. This means they can accommodate various data types.
Document/JSON database
Designed for storing, retrieving, and managing document-oriented information, document
databases are a modern way to store data in JSON format rather than rows and columns.
36
Self-driving databases
The newest and most groundbreaking type of database, self-driving databases (also known
as autonomous databases) are cloud-based and use machine learning to automate database
tuning, security, backups, updates, and other routine management tasks traditionally
performed by database administrators.
APIs
API stands for Application Programming Interface. In the context of APIs, the word Application
refers to any software with a distinct function. Interface can be thought of as a contract of
service between two applications.
Servers
A server is a computer program or device that provides a service to another computer program
and its user, also known as the client.
37
In a data center, the physical computer that a server program runs on is also frequently
referred to as a server.
Frameworks
Backend frameworks are server-side frameworks designed to make tasks easier for
developers. They provide tools, libraries, and other components that help developers
create the framework for a website or application. Backend frameworks can automate
some aspects of web development, making it faster and simpler.
Interactions between systems are a necessity, a source of opportunity, and a source of difficulty
and complication in building, implementing, and maintaining IT-reliant systems in organizations.
38
Main components of System Interaction
Web server
Web Server Definition
A web server is a computer system capable of delivering web content to end users over the
internet via a web browser.
The end user processes a request via a web browser installed on a web server. The
communication between a web server or browser and the end user takes place using Hypertext
Transfer Protocol (HTTP). The primary role of a web server is to store, process, and deliver
requested information or webpages to end users. It uses:
Physical Storage: All website data is stored on a physical web server to ensure its safety. When
an end user enters the URL of your website or searches it using a keyword on a browser, a
request is generated and sent to the web server to process the data.
Web servers are primarily used to process and manage HTTP/HTTPS requests and responses
from the client system.
A web server can also perform several other functions, such as:
39
o Store and protect website data: A web server can store and protect critical website data from
unauthorized users.
o Control bandwidth to regulate network traffic: A web server can help eliminate the downtime
caused by high web traffic. Web hosts can set bandwidth to manage the rate of data
transmission over the internet and minimize the excess network traffic.
o Server-side web scripting: The server-side web scripting feature enables users to create
dynamic web pages using scripting languages such as Ruby, Python, and PHP.
o Virtual hosting: Web servers can also be used as virtual servers to run multiple applications,
websites, data, and other services.
Web browser: The role of web browsers such as Firefox, Chrome, or Internet Explorer is to find
the web server on which your website data is located. Once the browser finds your server, it
reads the request and processes the information.
Application Server
The function of the application server is to act as host (or container) for the user’s business
logic while facilitating access to and performance of the business application.
Database Server
40
A database server is a type of hardware that runs database software. Database software helps
users or companies store, manage, retrieve, update or change files, information logs and other
forms of digital data.
External services means services supplied to the Company from external suppliers, including
but not limited to, suppliers of Parts, component repair or overhaul, aircraft painting, interior
repair, non-destructive testing and logistics.
External Services and API refer to the services and interfaces that are provided by third-party
applications and platforms to allow developers to integrate their own applications with these
services. This allows for greater functionality and interoperability between different systems.
1. Google Maps API - allows developers to integrate Google Maps into their own
applications
2. Facebook API - provides access to Facebook's social graph and other features for
developers
3. Twitter API - allows developers to access Twitter's data and functionality
4. Amazon Web Services - provides a wide range of cloud-based services and APIs for
developers
41
Message queue services
The focus is on the sequence of the messages when they are saved. Messages are
only appended to the end of the stream.
The back-end developer is responsible for the underlying code that powers an application,
website, or other software system. They are responsible for ensuring that the code they write is
clean, efficient, and meets the needs of the front-end developers.
Executive summary
An executive summary provides an overview of the main points of a larger report. It is often
written to share with individuals who may not have time to review the entire report. The reader
should be able to make a decision based only on reading the executive summary.
A research gap is a question or a problem that has not been answered by any of the existing
studies or research within your field. Sometimes, a research gap exists when there is a concept
or new idea that hasn't been studied at all.
42
Recommendations
Software recommendations are suggestions for specific software programs or
applications that are tailored to meet the needs of a particular user or organization.
These recommendations are often based on factors such as the user's requirements,
budget, and technical specifications.
There are various websites and platforms that provide software recommendations,
including Capterra, G2, and TrustRadius, where users can find reviews and ratings for
different software products. These platforms also offer comparison tools to help users
make informed decisions when choosing software for their specific needs.
As for code related to software recommendations, here is an example of a simple
Python function that takes in user requirements and returns a recommended software
program:
def recommend_software(requirements):
# Logic to determine the best software based on requirements
recommended_software = "Example Software"
return recommended_software
CONCLUSION :
Now that you know what back-end development involves, let’s distill these concepts into
a list of skills a back-end developer should possess.
43
Back-end web developers: The most common job for back-end developers is to
build the back end of a website. They are responsible for building and
maintaining the database, server, and business logic behind a website.
Full-stack developers: Full-stack developers have a working knowledge of both
the front-end and back-end of a technology stack. On small projects they may be
the sole developer building a minimum viable product. On larger projects they
are team leaders assisting with integration between the front and back end of an
app.
Java developers: From websites to desktop applications, back-end developers
who specialize in Java are in high-demand in the enterprise app industry.
Software developers: Depending on the job description, this could be
another Java developer job or any of the other languages we listed above.
Software development roles usually refer to non-website applications such as
desktop apps.
44
Identification of System Design Tools (tutsmaster, 2020)
UML (Unified Modeling Language):
UML, short for Unified Modeling Language, is a standardized modeling language consisting of
an integrated set of diagrams, developed to help system and software developers for
specifying, visualizing, constructing, and documenting the artifacts of software systems, as
well as for business modeling and other non-software systems.
45
UML is widely used in the software development industry as a way to communicate and
understand system designs and requirements. It allows for clear and consistent communication
between stakeholders, including developers, designers, and clients.
Algorithm:
What are algorithms in backend programming?
Search Algorithms
Search algorithms are used to search particular elements from a data structure. There are
several types of search algorithms, and the practical approach of each algorithm differs
46
depending on the data structure. Some most common search algorithms include deep-first
search and breadth-first search.
Sorting Algorithms
Sorting algorithms help to arrange an array of data in a particular order according to the
functional requirement. Typically, most sorting algorithms categorize groups of data in an
increasing or decreasing order. For example, using the lowest-highest pricing filter or most
popular search filter feature in an ecommerce app. Some common sorting algorithms include
bubble sort, insertion sort, merge sort, and quick sort.
Hash Algorithm
The hash algorithm functions similarly to the search algorithm. Hashing algorithm represents a
logical technique of mapping keys and values into the hash table by utilizing a hash function.
Hashing algorithm is used for facilitating fast data retrieval.
Iterative and recursive algorithms are based on a similar control structure. The main difference
is that iteration functions with a repetitive structure, while recursion leverages a selection
structure. A recursive algorithm calls a function or module again and again until the stopping
condition is satisfied. An iterative algorithm utilizes looping statements, for example, for loop-
while loop or do-while loop.
Randomized Algorithm
Randomized algorithms utilize random logic, such as numbers or choices, to determine the next
step. Randomized algorithms typically reduce the time and space complexity.
1. We use these algorithms to reduce space and time complexity. There are two types of
randomized algorithms:
47
2. Las Vegas algorithms
3. Monte-Carlo algorithms
4. Flowchart:A flowchart is a type of diagram that represents an algorithm, workflow or
process. The flowchart shows the steps as boxes of various kinds, and their order by
5. connecting the boxes with arrows. This diagrammatic representation illustrates solution
A data flow diagram (DFD) maps out the flow of information for any process or system. It uses
defined symbols like rectangles, circles and arrows, plus short text labels, to show data inputs,
outputs, storage points and the routes between each destination.
48
Entity Relation Diagram (ERD):
Entity Relationship Diagram – ER Diagram in DBMS. An Entity–relationship model (ER
model) describes the structure of a database with the help of a diagram, which is known as
Entity Relationship Diagram (ER Diagram).
An entity is a "thing" or "object" in the real world that is distinguishable from other objects.The
Entity - Relationship Model (E - R Model) is based on a collection of basic objects,called
entities,and the relationship among these objects.
49
* Rectangles represent entities
* Diamonds represent relationship among entities
* Ellipse represents attributes ( characteristics of entities)
* Lines represents link of attributes to entities to relationships
Here student and college are two different entities "things" or "Objects" and there is only one
relationship between these two entities - i.e.,details.It means student details are in ID.When
student details are opend it specify the student - name,student - class,student - city Known as
attributes:(Characteristics to be possessed by entities).Likewise,college shoul specify the
attributes:college - ID and college - name.
Context Diagram:
Context diagrams show the interactions between a system and other actors (external factors)
with which the system is designed to interface.
Decision Table:
A decision table is a brief visual representation for specifying which actions to perform
depending on given conditions.
50
Use Case Diagram:
Use-case diagrams describe the high-level functions and scope of a system. These diagrams also
identify the interactions between the system and its actors. The use cases and actors in use-
case diagrams describe what the system does and how the actors use it, but not how the
system operates internally.
Class Diagram:
Class diagrams are the blueprints of your system or subsystem. You can use class diagrams to
model the objects that make up the system, to display the relationships between the objects,
and to describe what those objects do and the services that they provide.
51
Decision Tree:
A decision tree is one of the most powerful tools of supervised learning algorithms used for
both classification and regression tasks. Identification of Hardware and Software Technology.
52
Identification of Hardware and software technology
Computer Hardware
Hardware refers to the external and internal devices and equipment that enable you to
perform major functions such as input, output, storage, communication, processing, and more.
There are two types of computer hardware: external and internal. External hardware devices
include monitors, keyboards, printers, and scanners, whereas internal hardware devices include
motherboards, hard drives, and RAM.
System software
System software is a program designed to run a computer's hardware and applications and
manage its resources, such as its memory, processors, and devices. It also provides a platform
for running application software, and system software is typically bundled with a computer's
operating system.
53
Application Software
Definition
o Microsoft Office
icrosoft Office is a suite of applications designed to help with productivity and completing
common tasks on a computer. You can create and edit documents containing text and images,
work with data in spreadsheets and databases, and create presentations and posters. Word.
54
o Visual paradigm
Description:
Visual Paradigm is a software application designed for software development teams to model
business information systems and manage development processes. In addition to modeling
support, this technology provides report generation and code engineering capabilities including
code generation.
o E-Draw max
Edraw Max is a 2D business technical diagramming software which helps create flowcharts,
organizational charts, mind map, network diagrams, floor plans, workflow diagrams, business
charts, and engineering diagrams.
o Browser
A browser is a software program used to locate and display information on the Internet or an
intranet. Browsers are most often used to access Web pages. Most can display graphics,
photographs and text; multimedia information (e.g., sound and video) may require additional
software, often referred to as “plug-ins.”
Objective of SSADM
SSADM focuses on the Analysis and Design stages of the Systems Development Life Cycle
(SDLC). SSADM combines three methods, complementing each other within a systems
development cycle: Logical Data Modelling, Data Flow Modelling, Entity Event Modelling.
SSADM Techniques
A logical data model establishes the structure of data elements and the
relationships among them. It is independent of the physical database
that details how the data will be implemented. The logical data model
serves as a blueprint for used data. The logical data model takes the
elements of conceptual data modeling a step further by adding more
information to them.
55
The logical data model incorporates all of the elements of information
that are vital in the running of the day to day business.
A data flow diagram (DFD) maps out the flow of information for any
process or system. It uses defined symbols like rectangles, circles and
arrows, plus short text labels, to show data inputs, outputs, storage
points and the routes between each destination. Data flowcharts can
range from simple, even hand-drawn process overviews, to in-depth,
multi-level DFDs that dig progressively deeper into how the data is
handled. They can be used to analyze an existing system or model a new
one. Like all the best diagrams and charts, a DFD can often visually “say”
things that would be hard to explain in words, and they work for both
technical and nontechnical audiences, from developer to CEO. That’s why
DFDs remain so popular after all these years. While they work well for
data flow software and systems, they are less applicable nowadays to
visualizing interactive, real-time or database-oriented software or
systems.
56
o Entity Behavior modeling
The three most important techniques used in SSADM are: logical data modeling The process of
identifying, modeling, and documenting the data requirements of the system under design. The
57
result is a data model containing entities (things a business needs to record information about),
attributes (facts about entities), and relationships (associations between entities). data flow
modeling The process of identifying, modeling, and documenting how data moves within an
information system. In data flow modeling, processes (activities that transform data from one
format to another), data stores (holding areas for data), external entities (what sends data to
the system or receives data from the system) , and data flows (what sends data to the system
or receives data from the system). which data can flow).
Introduction
Object-oriented analysis and design (OOAD) is a technical approach for analyzing and designing
an application, system, or business by applying object-oriented programming, as well as using
visual modeling throughout the software development process to guide stakeholder
communication and product quality.
1. Reusability: OOAD emphasizes the use of reusable components and design patterns,
which can save time and effort in software development.
2. Scalability: OOAD can help developers design software systems that are scalable and can
handle changes in user demand and business requirements over time.
3. Maintainability: OOAD emphasizes modular design and can help developers create
software systems that are easier to maintain and update over time.
58
4. Flexibility: OOAD can help developers design software systems that are flexible and can
adapt to changing business requirements over time.
5. However, there are also some potential disadvantages to using OOAD:
6. Complexity: OOAD can be complex and may require significant expertise to implement
effectively.
7. Time-consuming: OOAD can be a time-consuming process that involves significant upfront
planning and documentation.
8. Rigidity: Once a software system has been designed using OOAD, it can be difficult to
make changes without significant time and expense.
9. Cost: OOAD can be more expensive than other software engineering methodologies due
to the upfront planning and documentation required.
10. Overall, OOAD can be an effective approach to designing and implementing software
systems, particularly for complex or large-scale projects. However, it’s important to weigh
the advantages and disadvantages carefully before adopting this approach.
Object-Oriented Analysis (OOA) is the first technical activity performed as part of object-
oriented software engineering. OOA introduces new concepts to investigate a problem. It is
based on a set of basic principles, which are as follows-
1. The information domain is modeled.
2. Behavior is represented.
3. The function is described.
4. Data, functional, and behavioral models are divided to uncover greater detail.
5. Early models represent the essence of the problem, while later ones provide
implementation details.
The above notes principles form the foundation for the OOA approach.
Object-Oriented Design (OOD): An analysis model created using object-oriented analysis is
transformed by object-oriented design into a design model that works as a plan for software
creation. OOD results in a design having several different levels of modularity i.e., The major
system components are partitioned into subsystems (a system-level “modular”), and data
manipulation operations are encapsulated into objects (a modular form that is the building
block of an OO system.). In addition, OOD must specify some data organization of attributes
and a procedural description of each operation.
59
Shows a design pyramid for object-oriented systems. It is having the following four layers.
1. The Subsystem Layer : It represents the subsystem that enables software to achieve user
requirements and implement technical frameworks that meet user needs.
2. The Class and Object Layer : It represents the class hierarchies that enable the system to
develop using generalization and specialization. This layer also represents each object.
3. The Message Layer : It represents the design details that enable each object to
communicate with its partners. It establishes internal and external interfaces for the
system.
4. The Responsibilities Layer : It represents the data structure and algorithmic design for all
the attributes and operations for each object.
The Object-Oriented design pyramid specifically emphasizes specific product or system design.
Note, however, that another design layer exists, which forms the base on which the pyramid
rests. It focuses on the core layer the design of the domain object, which plays an important
role in building the infrastructure for the Object-Oriented system by providing support for
human/computer interface activities, task management.
Some of the terminologies that are often encountered while studying Object-Oriented
Concepts include:
1. Attributes: a collection of data values that describe a class.
2. Class: encapsulates the data and procedural abstractions required to describe the content
and behavior of some real-world entity. In other words, A class is a generalized description
that describes the collection of similar objects.
60
3. Objects: instances of a specific class. Objects inherit a class’s attributes and operations.
4. Operations: also called methods and services, provide a representation of one of the
behaviors of the class.
5. Subclass: specialization of the super class. A subclass can inherit both attributes and
operations from a super class.
6. Superclass: also called a base class, is a generalization of a set of classes that are related to
it.
Advantages of OOAD:
1. Improved modularity: OOAD encourages the creation of small, reusable objects that can
be combined to create more complex systems, improving the modularity and
maintainability of the software.
2. Better abstraction: OOAD provides a high-level, abstract representation of a software
system, making it easier to understand and maintain.
3. Improved reuse: OOAD encourages the reuse of objects and object-oriented design
patterns, reducing the amount of code that needs to be written and improving the quality
and consistency of the software.
4. Improved communication: OOAD provides a common vocabulary and methodology for
software developers, improving communication and collaboration within teams.
5. Reusability: OOAD emphasizes the use of reusable components and design patterns,
which can save time and effort in software development by reducing the need to create
new code from scratch.
6. Scalability: OOAD can help developers design software systems that are scalable and can
handle changes in user demand and business requirements over time.
7. Maintainability: OOAD emphasizes modular design and can help developers create
software systems that are easier to maintain and update over time.
8. Flexibility: OOAD can help developers design software systems that are flexible and can
adapt to changing business requirements over time.
9. Improved software quality: OOAD emphasizes the use of encapsulation, inheritance, and
polymorphism, which can lead to software systems that are more reliable, secure, and
efficient.
Disadvantages of OOAD:
1. Complexity: OOAD can add complexity to a software system, as objects and their
relationships must be carefully modeled and managed.
2. Overhead: OOAD can result in additional overhead, as objects must be instantiated,
managed, and interacted with, which can slow down the performance of the software.
3. Steep learning curve: OOAD can have a steep learning curve for new software developers,
as it requires a strong understanding of OOP concepts and techniques.
61
4. Complexity: OOAD can be complex and may require significant expertise to implement
effectively. It may be difficult for novice developers to understand and apply OOAD
principles.
5. Time-consuming: OOAD can be a time-consuming process that involves significant upfront
planning and documentation. This can lead to longer development times and higher costs.
6. Rigidity: Once a software system has been designed using OOAD, it can be difficult to
make changes without significant time and expense. This can be a disadvantage in rapidly
changing environments where new technologies or business requirements may require
frequent changes to the system.
7. Cost: OOAD can be more expensive than other software engineering methodologies due
to the upfront planning and documentation required.
Master Software Testing and Automation in an efficient and time-bound manner by mentors
with real-time industry experience. Join our Software Automation Course and embark on an
exciting journey, mastering the skill set with ease!
As discussed previously, object-oriented programming has been around since the 1990s. Formal
design processes when using objects involves many complex stages and are the debate of much
research and development.
Consider the general cycle that a programmer goes through to solve a programming problem:
Formulate the problem - The programmer must completely understand the problem.
Analyse the problem - The programmer must find the important concepts of the problem.
Design - The programmer must design a solution based on the analysis.
62
Code - Finally the programmer writes the code to implement the design.
o Design
o Implementation
63
Development of Data Flow
A Data Flow Diagram (DFD) is a traditional visual representation of the information flows within
a system. A neat and clear DFD can depict the right amount of the system requirement
graphically. It can be manual, automated, or a combination of both
Elements of DFD
Elements that may be included in a flowchart are a sequence of actions, materials or services
entering or leaving the process (inputs and outputs), decisions that must be made, people who
become involved, time involved at each step, and/or process measurements.
Each data store should have at least one data flow in and one data flow out.
Level 0 (Context)
Level 0 DFD: This is the highest-level DFD, which provides an overview of the entire system. It
shows the major processes, data flows, and data stores in the system, without providing any
details about the internal workings of these processes.
64
Level 1
Level 1 DFD: This level provides a more detailed view of the system by breaking down the major
processes identified in the level 0 DFD into sub-processes. Each sub-process is depicted as a
separate process on the level 1 DFD. The data flows and data stores associated with each sub-
process are also shown.
- 1-level DFD: In 1-level DFD, the context diagram is decomposed into multiple
bubbles/processes. In this level, we highlight the main functions of the system and
breakdown the high-level process of 0-level DFD into subprocesses.
65
Level 2 (Function decomposition)
Level 2 DFD: This level provides an even more detailed view of the system by breaking down
the sub-processes identified in the level 1 DFD into further sub-processes. Each sub-process is
depicted as a separate process on the level 2 DFD. The data flows and data stores associated
with each sub-process are also shown.
- 2-level DFD: 2-level DFD goes one step deeper into parts of 1-level DFD. It can be used
to plan or record the specific/necessary detail about the system’s functioning.
Software tools
Microsoft office
Microsoft Office is a suite of applications designed to help with productivity and completing
common tasks on a computer.
visual paradigm
66
Visual Paradigm is a powerful, cross-platform and yet easy-to-use design and management
tool for IT systems. Visual Paradigm provides software developers the cutting edge
development platform to build quality applications faster, better and cheaper! It facilitates
excellent interoperability with other CASE tools and most of the leading IDEs which excels
your entire Model-Code-Deploy development process in this one-stop-shopping solution.
E-draw
What is the other meaning of draw?
Now that you know what makes up a data flow diagram, let’s see how easy it is to make one
using our powerful, online tool. We provide a ton of templates to use as a starting point. In this
how-to, we’re going to create a Level 0 DFD for an online shopping experience. Log in to your
account (if you don’t have one, sign up to try Lucidchart free for a week) and follow the steps
below to make a DFD.
In the Documents section, click on the orange +Document button and double-click on the Blank
ERD & Data Flow diagram.
67
2. Name the data flow diagram
Click on the Blank ERD & Data Flow header in the top left corner of the screen. A pop-up screen
opens, type the name of your diagram in the text box and click OK. The name of your DFD
appears in the top left corner of the screen.
68
3. Add an external entity that starts the process
In the left column of the screen, you’ll notice a lot of shapes and symbols. We’ve already
created the four symbols you’ll need to make a DFD. You can also add images to the diagram.
Scroll through the list of symbols until you get to the bottom and see the heading Data Flow.
These are all the DFD symbols you need. (Note: Mouse over each shape to see what they
represent: process, data stores, data flow, and external entities). We have symbols for Yourdon
and Coad, Yourdon and DeMarco, and Gane and Sarson methods. Click and hold External Entity
and drag it onto the workspace.
69
Click the highlighted text in the box and type the name of the external entity. For our example,
we’re typing “customer.” You can use the curved arrow in the top left corner of the square to
rotate the symbol. Delete a symbol by clicking it and pressing delete on your keyboard.
Click and hold on a process symbol and drag it to where you want it on the workspace. Type the
name of the process. We’re calling this process “add product to cart.”
70
5. Add a data store to the diagram
Click and hold on a data store symbol and drag it to where you want it on the workspace. Type
the data store name. We’re naming ours “shopping cart.”
Drag-and-drop the appropriate symbols to add all the external entities, processes, and data
stores to your diagram. Move symbols around by clicking and holding on them, and then drag
them to a new location. Click on a symbol to resize it, then click and hold the blue box in one of
the corners and drag the corner to make the shape bigger or smaller. Use the background graph
as a guide for alignment and sizing.
71
7. Add data flow to the DFD
Double-click on an entity, process, or data store, and then click and hold one of the orange
circles and drag the line to the appropriate symbol.
72
Tip: If you prefer to create the data flow process as you complete the diagram, click on an
entity, process, or data store and then click and hold one of the orange circles and drag the line
to draw an arrow. Release the mouse button and a box with DFD symbols will appear. Click on
the shape you want to add and it will automatically be created.
Add a name to describe the data flow by double-clicking on the arrow line. An option to type
text will appear, type the data flow name.
Once you have the basic design of your diagram, you can add colors to symbols, change fonts,
and adjust arrows. Here’s how to:
Add colors to symbols: Click on a symbol on the diagram and then click the color-fill icon and
choose a color.
Tip: To make multiple symbols the same color, click the first item and then hold the shift key
and click the remaining shapes. Next, click the color-fill icon and choose a color.
73
Change the font: Choose Select All from the Edit option in the menu. Click the font box,
choose a new font, and click it. All text in the diagram will be updated. You can use the other
shortcuts (font color, size, bold, italic, underline, and alignment) to customize the font even
more.
Adjust arrow style: Click an arrow to select it. Next, click the arrow icon in the menu bar and
choose one of the nine other styles.
74
Tip: To change the style of all the arrows, choose Select All from the Edit menu.
At the top of the symbols column, you’ll see a large letter T. Click it and drag it to where you
want to add a title to the diagram. Type the title, and if you’d like to, adjust the font and type
size using the shortcut keys at the top of the screen.
75
You can easily share your DFD with others either via email, link, social media (Facebook,
Twitter, Google+, and LinkedIn), or embed it on a website. Click the blue Share button in the
top right corner of the screen and a pop-up will appear. Choose how you’d like to share the DFD
and enter the appropriate information.
76
When you add a collaborator by sending a link to the DFD via email, you can work on the data
flow diagram simultaneously and use the chat feature (the yellow quote icon in the top right
corner of the screen) to have discussions.
The easiest way to make a data flow diagram online
There you have it, the easiest way to make a data flow diagram online. Since Lucidchart is a
web-based app, your diagram is automatically saved, and you can access it virtually anywhere
you have an Internet connection. When you share your DFD with colleagues, you’ll never have
to wonder if they can open the file or access it. Best of all, if you give them permission to edit
they can make changes to the DFD and add comments. Sign up for a free trial and see how easy
it is to use Lucidchart.
77
Application of Physical Data Model
Physical database design consists of defining database objects and their relationships.
Tables
Constraints
Indexes
Triggers
Sequences
Views
Usage lists
You ca use Data Definition Language (DDL) statements or tools such as IBM® Data Studio to
create these database objects. The DDL statements are generally prefixed by the keywords
CREATE or ALTER.
Understanding the features and functionality that each of these database objects provides is
important to implement a good database design that meets your current business's data
storage needs while remaining flexible enough to accommodate expansion and growth over
time.
78
Sequences
A sequence is a database object that allows the automatic generation of values, such
as cheque numbers. Sequences are ideally suited to the task of generating unique key
values. Applications can use sequences to avoid possible concurrency and
performance problems resulting from column values used to track numbers. The
advantage that sequences have over numbers created outside the database is that the
database server keeps track of the numbers generated. A crash and restart will not
cause duplicate numbers from being generated.
Views
A view is an efficient way of representing data without the need to maintain it. A view
is not an actual table and requires no permanent storage. A "virtual table" is created
and used.
Cursors
A cursor is used in an application program to select a set of rows and then process that
returned data one row at a time. When a SELECT statement in an embedded SQL
application returns multiple rows of data, you need a mechanism that makes this
returned data or result set available to your application program, one row after
another.
Member subsets overview
A member subset is a database object that expresses a relationship between a
database alias and a server list. The server list is composed of a set of members in a
DB2 instance.
Usage lists
A usage list is a database object that records each DML statement section that
references a particular table or index. A section is the executable form of the query.
Statistics are captured for each statement section as it executes. Use usage lists when
you want to determine which DML statements, if any, affected a table or index.
Design Database
Tables
Relationships
Relationships are meaningful associations between tables that contain related information —
they’re what make databases useful. Without some connection between tables in a database,
you may as well be working with disparate spreadsheet files rather than a database system.
As we covered in our short overview of databases, databases are collections of tables, and
those tables have fields (also known as columns). Every table contains a field known as
79
an entity (or primary) key, which identifies the rows within that table. By telling your database
that the key values in one table correspond to key values in another, you create a relationship
between those tables; these relationships make it possible to run powerful queries across
different tables in your database. When one table’s entity key gets linked to a second table, it’s
known as a foreign key in that second table.
Identifying the connections you’ll need between tables is part of the data modeling and schema
design process — that is, the process of figuring out how your data fits together, and how
exactly you should configure your tables and their fields. This process often involves creating a
visual representation of tables and their relationships, known an entity relationship diagram
(ERD), with different notations specifying the kinds of relationships. Those relationships
between your tables can be:
One-to-one
One-to-many
Many-to-many
Giving some thought to how your tables should relate to each other also helps ensure data
integrity, data accuracy, and keeps redundant data to a minimum.
One-to-one relationship
In a one-to-one relationship, a record in one table can correspond to only one record in
another table (or in some cases, no records). One-to-one relationships aren’t the most
common, since in many cases you can store corresponding information in the same table.
Whether you split up that information into multiple tables depends on your overall data model
and design methodology; if you’re keeping tables as narrowly-focused as possible (like in
a normalized database), then you may find one-to-one relationships useful.
80
Example one-to-one relationship
Let’s say you’re organizing employee information at your company, and you also want to keep
track of each employee’s computer. Since each employee only gets one computer and those
computers are not shared between employees, you could add fields to your Employee table
that hold information like the brand, year, and operating system of each computer. However,
that can get messy from a semantic standpoint — does computer information really belong in a
table about employees? That’s for you to decide, but another option is to create
a Computers table with a one-to-one relationship to the Employee table, like in the diagram
below:
In this case, the entity key from our Employee table serves as the foreign key for
the Computers table. You may have computers that aren’t yet assigned to employees, and
this modeling ensures that you can still keep records for them the Computer table. And if an
employee leaves the company, you’ll only need to update one field, and you can easily link a
computer to a new employee.
81
The exact formatting of the lines used to connect tables in an ERD (known as crow’s foot
notation) varies; sometimes you’ll see plain lines indicating a one-to-one relationship, other
times those lines will have crosshatches like in figure 1.
One-to-one relationships can be also useful for security purposes, like if you want to store
sensitive customer information in a separate table, which you link to your
main Customers table with a foreign key.
One-to-many relationship
One-to-many relationships are the most common type of relationships between tables in a
database. In a one-to-many (sometimes called many-to-one) relationship, a record in one table
corresponds to zero, one, or many records in another table.
For example, think about tables for customers and their orders, like in Metabase’s Sample
Database, where one record from the People table can be linked to many records in
the Orders table. In this case, one customer can place many orders, and those multiple order
records will all link back to a single record in the People table. That connection is codified
through the User_ID field, which is a primary key in the People table and a foreign key in
the Orders table. The diagram below shows how these two tables relate to each other:
82
Fig. 2. A one-to-many relationship between the Sample Database's People and Orders tables.
While the one person can be linked to many orders, the reverse is not true — orders are only
linked to a single record in the People table, and don’t have many customers.
Many-to-many relationship
A many-to-many relationship indicates that multiple records in a table are linked to multiple
records in another table. Those records may only be associated with a single record (or none at
all) but the key is that they can and often are linked to more than one. Many-to-many
relationships aren’t very common in practical database use cases, since adhering to
normalization often involves breaking up many-to-many relationships into separate, more
focused tables.
In fact, your database system may not even allow for the creation of a direct many-to-many
relationship, but you can get around this by creating a third table, known as a join table, and
create one-to-many relationships between it and your two starting tables.
83
In this sense, the Orders table in Metabase’s Sample Database acts as a join table, creating an
intermediate link between People and Products . An ERD of the Sample Database would look
something like the image below, where each relationship is specified by the type of line used to
connect the tables:
Technically speaking the Products and Orders tables have a one-to-many relationship, in
that one product can be associated with many orders. But according to our fake company’s
database, people seem to only order a single product (they’ll buy like five Lightweight Wool
Computers for whatever reason). A real-world (and perhaps more business-savvy)
implementation of this database would probably include a join table between the two, making
it so orders could contain many different products.
84
Documentation of system design
Definition
The System Design Document describes the system requirements, operating environment,
system and subsystem architecture, files and database design, input formats, output layouts,
human-machine interfaces, detailed design, processing logic, and external interfaces.
The System Design Document (SDD) describes how the functional and nonfunctional
requirements recorded in the Requirements Document, the preliminary user-oriented
functional design recorded in the High Level Technical Design Concept/Alternatives document,
and the preliminary data design documented in the Logical Data ..
The Functional Specification Document (FSD) is written by the project's Business Analyst
and provides detailed information on how the system solution will function based on what the
requested behavior is.
Technical Specification Document(TSD)
This specification outlines the details of a product’s design and the technical requirements for
its development. It is a roadmap for engineers and developers to follow during the design and
implementation phase.
The document specifies the technical attributes and requirements of the product, including the
tools, technologies, and programming languages that will be used. It also describes the
intended user experience, including the product’s features and functionality.
The Database Design Document maps the logical data model to the target database
management system with consideration to the system's performance requirements.
85
86
Use case Document
A use case document is a standardized document that describes a use case in detail. It includes
the steps, preconditions, assumptions and expected outcomes or results. On the other hand, a
use case is a general term that describes a specific scenario or interaction between a user or
system and a product or service.
System documentation
System documentation provides an overview of the system and helps engineers and
stakeholders understand the underlying technology. It usually consists of the requirements
document, architecture design, source code, validation docs, verification and testing info, and
maintenance or help guides.
87
User documentation
88
However, there is a simple way to categorize them on the basis of the problems they solve.
Keeping that angle in mind, user documentation can be classified into the following types :
Installation/Setup Guide
Getting started with certain products, like enterprise software applications, gadgets, fixtures,
etc., requires some level of technical expertise.
To that end, manufacturers provide such products with comprehensive installation or setup
guides, including detailed, step-by-step instructions to make the overall process user-
friendly.
With the help of these tutorials, businesses ensure that the end-users don’t mess up when
starting their journeys with their products.
This refers to the complete, in-depth user guide that comes with any product with even the
slightest learning curve for any product.
Most of the time, whenever someone talks about user documentation, they’re referring to
these user manuals.
Reference Guides
89
These user documents come with software products, and are intended for more experienced
end-users.
A reference document sheds light on the functionality of any one aspect or feature of a
product. That way, if any user, who already knows a great deal about the product at hand,
can get quick information about certain features without having to skim through the entire
user manual.
Some may argue that there aren’t any differences between the two, and that the only point
of difference is that user documentation comes under the broad umbrella of technical
documentation.
However, for simplicity’s sake, and to ensure that you don’t confuse both, user
documentation is meant for the end-user, whereas technical documentation is meant for
everyone else.
Take a software product as an example. Its technical documentation could include the
following:
90
Process Documentation – these break down the product journey in properly
structured formats for the product team.
Market Strategy – this is created by the product marketing team to provide a north-
star and a game plan to bring a new product to the market.
All of the aforementioned types of documentation have one thing in common – none of
them are meant for the end-user.
That’s where user documentation comes in. It’s not meant for the technical, marketing, and
other strategic stakeholders directly involved with the product, but rather for the people
who will actually use it.
For that reason, naturally, user documentation requires a different “level” of language (more
on this later).
91
What Makes User Documentation Great?
There are a lot of elements that go into accomplishing the ultimate goal of helping users
figure out an otherwise complicated process.
These include:
1. Simple Language
When it comes to any form of technical writing, perhaps the most important thing is the
simplicity of language.
92
This is especially true for documentation targeted at end-users, who don’t have much
technical knowledge.
There’s no room for jargon. Even the most advanced features should be broken down in the
simplest way possible to effectively explain its functionality and how to get the most out of
it.
2. A Good Flow
The second most crucial element of all successful user documentation is having a logical flow
(or outline, if you will).
The goal is to deliver a coherent experience to your users in a way that makes sense, by
solving one problem at a time.
For instance, if you’re selling an enterprise software, you wouldn’t want to start with the
advanced features right off the bat.
Instead, you’d want to start off by helping them get set up, break down the user interface,
and then take them through the individual features and what they can accomplish with
them.
3. Use of Visuals
The best user documentation has visuals.
Visuals can help simplify a complicated process and make it easier to understand. To that
end, in addition to written instructions of a process, it’s highly recommended that you
also show the users how it’s down.
Examples of visuals can include illustrations, screenshots, GIFs, or even short tutorial videos .
93
4. Accessibility
All the digital documentation should be accessible to everyone. This includes optimizing your
content in a way that it shows up properly on both desktop and mobile devices, and can be
communicated to users who are blind or deaf.
For example, if you have your user documentation on a website, you might want to include
an option that allows visually-impaired users to listen to the instructions.
Similarly, for those with audio impairment, ensure that the written content is clearly visible.
5. More Resources
Finally, your user documentation should include additional resources that the user might
find useful.
Any sort of link that leads to online help or contact details that get them in touch with a
support team works.
These details should be included throughout the documentation, or towards the end of the
document.
Determine the Audience and the Problems – first and foremost, you need to
determine who your audience is and their level of understanding. In addition, you
need to figure out what potential problems they might face when using your product .
94
Figure Out the Format – based on the accessibility of your audience, you need to
figure out what format you’re going to use for the documentation. A good format is
to pool all the resources into a knowledge base (51% of customers prefer online
technical support).
Create a Solid Outline – this goes back to having that logical flow. A good tip is to
start off with a rough table of contents, so that you don’t miss out on anything
important.
Finalize the Design – finally, decide on a compelling design that also helps you convey
your thoughts in the easiest way possible.
Start Solving One Problem at a Time – once you’ve decided on an outline and your
design, it’s time to craft the documentation. Craft every sentence based on the
reading level of your users, incorporate visuals, throw in some FAQs, and start solving
their problems.
Finally, edit away your user documentation for any potential errors.
Ending Note
Companies that invest in effective user documentation tend to experience higher customer
retention, higher success rates, and longer customer lifecycles.
However, creating one isn’t as simple as typing up a few step-by-step instructions. It entails:
And that’s just the surface. Those three things themselves entail a lot.
95
Finally, companies also need to consistently update and improve their documentation based
on the journeys of their products.
All things considered, without decent user documentation, your product is essentially
incomplete.
96
97
98
99
100
101