Backend BM
Backend BM
School: APADE
Class: Level 4 SOD
Module Name: Backend System Design
Learning Hours: 100
Trainer: Ronald MUGABO
2.1 System structure design tools are properly identified based on analysis
report and design methodology
2.Develop
2.2 The hardware & software technologies are properly identified based on
System Structure system requirements
2.3 The system structure is neatly drawn based on the system requirements
and design methodology
3.1 The data flow of the system is appropriately developed based on the
system design Requirements
3. Build System
3.2 Physical Data Model is accurately designed based on the analysis report
Design
and system structure
1.1. FURPS requirements are effectively gathered based on system application requirements
1.2. Main objects are properly identified based on the system analysis methodology
1.3. System interactions are clearly described based on identified objects
1.4. System Backend Requirements are appropriately reported in line with software
requirements document
1.1. FURPS requirements are effectively gathered based on system application
requirements
• Gathering FURPS Requirements (Aletexsoft, 2021)
✓ Definition of key terms
Backend: The back end refers to parts of a computer application or a program's
code that allow it to operate and that cannot be accessed by a user. Most data and
operating syntax are stored and accessed in the back end of a computer system.
System: comprises interacting parts cooperating to accomplish a single objective
or a group of related goals.
Server: A server is a hardware device or software that processes requests sent
over a network and replies to them. The computer system that accepts requests
for online files and transmits those files to the client is referred to as a “server”
in the context of the Internet.
Database: is an organized collection of structured information, or data, typically
stored electronically in a computer system.
Operating System: is the program that, after being initially loaded into the
computer by a boot program, manages all of the other application programs in
a computer.
System Development Life Cycle (SDLC): is a structured process that is used
to design, develop, and test good-quality software.
API: Application Programming Interface, are mechanisms that enable two
software components to communicate with each other using a set of
definitions and protocols.
JSON: JavaScript Object Notation, is a lightweight data interchange format that
provides a standardized and efficient way for different systems to exchange data.
Framework: a collection of reusable software components that make it more
efficient to develop new applications.
UML: Unified Modelling Language, It is a generic developmental modelling
language used for analysis, design and implementation of software systems. The
purpose of UML is to provide a simple and common method to visualise a
software system's inherent architectural properties.
FURPS (Functionality, Usability, Reliability, Performance and Supportability) is
framework that helps software engineers and testers categorize and evaluate
software requirements.
✓ System development life cycle (SDLC)
Phases
This process involves detecting the possible bugs, defects, and errors, searching for
vulnerabilities, etc., and can sometimes take up even more time compared to the app-
building stage.
Once the product is ready to go, it’s time to make it available to its end users and
deploy it to the production environment.
At this stage, the software undergoes final testing through the training or pre-
production environment, after which it’s ready for presentation on the market.
During the first couple of months, developers might face problems that weren’t
detected during initial testing, so they should immediately react to the reported issues
and implement the changes needed for the software’s stable and convenient usage.
These are the approaches that can help you to deliver a specific software model with
unique characteristics and features. Most developers and project managers opt for one of
these 6 approaches. Hybrid models are also popular.
This approach implies a linear type of project phase completion, where each stage has
its separate project plan and is strictly related to the previous and next steps of system
development.
Typically, each stage must be completed before the next one can begin, and extensive
documentation is required to ensure that all tasks are completed before moving on to the
next stage. This is to ensure effective communication between teams working apart at
different stages.
2. Iterative Model
The Iterative model incorporates a series of smaller “waterfalls,” where manageable portions
of code are carefully analyzed, tested, and delivered through repeating development cycles.
Getting early feedback from an end user enables the elimination of issues and bugs in the
early stages of software creation.
The Iterative model is often favored because it is adaptable, and changes are comparatively
easier to accommodate.
3. Spiral Model
The Spiral model best fits large projects where the risk of issues arising is high. Changes are
passed through the different SDLC phases again and again in a so-called “spiral” motion.
It enables regular incorporation of feedback, which significantly reduces the time and costs
required to implement changes.
4. V-Model
Verification and validation methodology requires a rigorous timeline and large amounts
of resources. It is similar to the Waterfall model with the addition of comprehensive
parallel testing during the early stages of the SDLC process.
The verification and validation model tends to be resource-intensive and inflexible. For
projects with clear requirements where testing is important, it can be useful.
Mostly used for creating and delivering a wide range of ideas, this model perfectly fits the
clients who don’t have a clear idea or vision of what their final product should look like.
A more concrete vision of project completion is gained via delivering different system
variations that may more accurately define the final output.
6. Agile Model
The Agile model prioritizes collaboration and the implementation of small changes based
on regular feedback. The Agile model accounts for shifting project requirements, which
may become apparent over the course of SDLC.
Benefits of SDLC
Here are the benefits that the system development life cycle provides:
• Process flexibility
• Lower costs and strict time frames for product delivery
• Increased time and costs for the • A high volume of documentation project
development if a complex which can slow down projects model is required
• Requires many different specialists
• Server
• Database
•Logic
Top Backend Technologies
Python and its Frameworks
Python is an interpreted, object-oriented, high-level programming language with dynamic
semantics. Its high-level built in data structures, combined with dynamic typing and dynamic
binding, make it very attractive for Rapid Application Development, as well as for use as a
scripting or glue language to connect existing components together.
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. Decision table
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
The process of gathering and analyzing accurate data from various sources to find answers
to research problems, trends and probabilities, etc., to evaluate possible outcomes.
• It helps you focus your limited energy and resources on the pieces that have the most
impact.
• It helps you analyze trends better, as to how customer opinions and behaviour change
over time.
• You can make quicker, more effective decisions based on the data collected.
• It enables you to segment audiences and curate dedicated marketing strategies for
each segment.
• Feedback data let’s you resolve issues and to improve your product/services where its
most needed.
Primary data collection is the act of gathering raw data collected for a specific research.
Primary data collection methods can be further divided into two:
The qualitative research method basically depends on the non – calculable elements like the
emotions, opinions and feelings. This method does not involve any numbers or calculations
whatsoever. A fine example of a qualitative data collection method would be open-ended
feedback like a survey form you send out to customers.
2. Quantitative Method
In simple words, Secondary data collection takes place when you collect data from a
secondary source rather than from the original one. This kind of data can be sourced from
online portals, books and journals that have been already published. It is often the easier and
cheaper method when compared to primary data collection.
Primary Data: Data that has been generated by the researcher himself/herself,
surveys, interviews, experiments, specially designed for understanding and solving the
research problem at hand.
Secondary Data: Using existing data generated by large government Institutions, healthcare
facilities etc. as part of organizational record keeping. The data is then extracted from more
varied datafiles.
Supplementary Data: A few years ago the Obama Administration judged that any research
that is done using Federal Public funds should be available for free to the public. Moreover
Data Management Plans should be in place to store and preserve the data for almost eternity.
These data sets are published as Supplementary Materials in the journal lliterature, and data
sets can be downloaded and manipulated for research.
Mixed methods research. When quantitative and qualitative research methods are used.
Surveys Quickly and/or easily • can complete • might not get careful
gets lots of information anonymously feedback
from people in a non-
threatening way • inexpensive to • wording can bias
administer client's responses
• many sample
questionnaires
already exist
Interviews • Understand • get full range • can take ime
someone's and depth of
• can be hard to analyze
impressions or information • and compare
experiences
develops
• can be costly
• Learn more relationship
about answers • interviewer can bias
with client
to client's responses
questionnaires
• can be flexible
with client
• can adapt to
events as they
occur
• can influence
behaviors of program
participants
• can be expensive
Focus • Explore a topic in • quickly and • can be hard to analyze
Groups depth through reliably get responses
group discussion
common
• need good facilitator
impressions
for safety and closure
• can be efficient
• difficult to schedule 6-
way to get
8 people together
much range and
depth of
information in
short time
Web servers support HTTP (Hypertext Transfer Protocol), SMTP (Simple Mail Transfer
Protocol) and FTP (File Transfer Protocol).
Application Server
It is system software that resides between the operating system (OS) on one side, the
external resources (such as a database management system [DBMS], communications and
Internet services) on another side and the users’ applications on the third side.
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
A data server is a type of hardware that enables you to install database software – a
relational Database Management System (DBMS).
This specialist database application gives you two vital capabilities
• The first is the right back-end infrastructure to store all your data in organised,
customisable tables.
• The second is client-facing services
The client being you, your employees and other stakeholders – enabling you and
authorised personnel to retrieve, change or update specific files wherever and whenever
you want. External Services and API
An external API is a software interface provided by a third-party service that allows
developers to integrate their applications with external systems. It enables access to
functionalities and data of the external service, facilitating seamless integration and
expanding the capabilities of applications by leveraging external services and resources.
Message queues or event Streams
Messaging Queues: Messages remain in the queue until they are consumed or until they
expire based on some policy.
• Typically ensure that messages are delivered in the order they are received.
• Messages are often consumed once and only once by a single consumer.
Streaming: Data in streaming platforms is often persisted for a specified period, allowing
consumers to replay the data if required.
• Maintains data order across multiple partitions.
• Allows multiple consumers to read the same data simultaneously, facilitating a
publish-subscribe model.
• Report of the System Backend Requirements (Bandakkanavar, 2021) ✓
Executive summary
An executive summary is a short introduction that summarises your business plan. Designed
to provide a brief but compelling overview of your plan, it should do the following:
Describe the purpose of your business.
Highlight your target market.
Explain what gap in the market it aims to fill.
Outline basic start-up costs and other important financial details.
✓ Detailed analysis of the Current State
A current state analysis is the evaluation of a business' processes to determine their
effectiveness. By identifying the strengths and weaknesses of various procedures, these
evaluations help businesses improve processes to increase profits and overall
efficiency. ✓ Findings on Gaps and issues
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.
✓ Recommendations
A recommendation is a suggestion or proposal for something that should be done, as
derived from the findings.
• Policy suggestions
2.1. System structure design tools are properly identified based on analysis report and design
methodology
2.2. The hardware & software technologies are properly identified based on system
requirements
2.3. The system structure is neatly drawn based on the system requirements and design
methodology
2.1. System structure design tools are properly identified based on analysis report and
design methodology
2.1.1. Identification of system design tools
2.1.1.1. UML (Unified Modeling Language)
Unified Modeling Language (UML) is a general-purpose modeling language. The main aim
of UML is to define a standard way to visualize the way a system has been designed. It is
quite similar to blueprints used in other fields of engineering. UML is not a programming
language , it is rather a visual language.
1. Visual Modeling: UML uses graphical notations (diagrams) to depict the system's
structure, interactions, and behavior, making it easier for developers and stakeholders to
understand the design.
3. Supports Object-Oriented Design (OOD): UML works particularly well with object-
oriented programming languages like Java, C++, and Python.
Components of UML:
UML includes diagrams that can be categorized into two main types:
1. Structural Diagrams: These depict the static aspects of a system, showing the system’s
architecture, components, and relationships between objects.
Examples:
2. Behavioral Diagrams: These show the dynamic behavior of objects in a system, how
they interact, and how the system behaves over time.
Examples:
o Use Case Diagram: Represents the interactions between users (actors) and
the system, showing system functionality from the user's perspective.
1. Class Diagram: Models the static structure by showing classes, their attributes,
methods, and relationships (inheritance, association, aggregation, etc.).
Class Diagram showing customers, order, Product, OrderLine and CorporateCustomer
2. Use Case Diagram: Represents the functionalities of a system from the user's
perspective, showing the interactions between actors (users) and the system.
1. Communication: UML provides a common language that allows team members (developers,
architects, stakeholders) to communicate complex ideas more clearly.
3. System Design and Analysis: UML aids in both the analysis and design phases, allowing
developers to break down complex systems into manageable components.
• Reusability: Well-designed UML diagrams can be reused across different projects or for
system upgrades, reducing redundancy.
2.1.1.2. Algorithm
An algorithm is a set of defined steps designed to perform a specific objective. Algorithms are
structured sets of instructions designed to solve specific problems or perform particular tasks.
They function through a series of well-defined steps, each contributing to the ultimate goal.
Here, we break down the typical stages involved in the functioning of an algorithm:
1. Input. The first step involves defining the inputs that the algorithm will use. Inputs
are the data on which the algorithm will operate. It could be anything from a single
value to a complex data structure.
2. Processing. This is the core phase where the algorithm performs operations on the
inputs using a series of computational steps. This phase is guided by logical and
arithmetic calculations to process the data effectively. Within the processing phase,
there are often crucial substeps:
3. Output. After processing the inputs through various computational and conditional
steps, the algorithm produces an output. This output is the result of the algorithm’s
operations and is used to solve the problem or perform the task at hand.
In the world of computing and data science, creating a good algorithm is a fundamental goal.
A well-crafted algorithm can significantly enhance the efficiency and effectiveness of a system.
There are several principles that underpin whether an algorithm is effective and fit for use:
• Stability. Stability is crucial; it ensures that the algorithm performs reliably and
consistently under various conditions, maintaining its accuracy and reliability over
time, even with varied inputs.
Creating an algorithm can be a meticulous process that involves a deep understanding of the
problem at hand and the available computational resources. Here are the detailed steps along
with the tools and technologies that can be employed to create a successful algorithm:
1. Identify the problem. Clearly define the problem you want to solve. It is essential to
understand the problem's intricacies and requirements to develop an effective
algorithm.
2. Analyze the problem. Dive deep into the problem to gather all necessary
information. Utilize analytical tools such as Python libraries (like NumPy and pandas)
for data analysis to understand the data structure and patterns better.
3. Design the algorithm. Create a step-by-step procedure to solve the problem. At this
stage, you can use flowchart software like Lucidchart or Microsoft Visio to visually
map out the algorithm's flow and structure. Developing a pseudocode can also be
beneficial, as it allows you to outline the algorithm's logic in a simplified manner.
5. Implement the algorithm. Translate your design into a working algorithm using a
programming language suitable for your project. Common choices include Python,
Java, or C++. Ensure to follow best coding practices for readability and
maintainability.
6. Test the algorithm. Rigorously test the implemented algorithm using various testing
tools like JUnit for Java or PyTest for Python. Verify the algorithm with different
inputs to ensure it produces the correct output consistently.
7. Optimize the algorithm. Post-testing, analyze the algorithm's performance and
optimize it for better efficiency. Profiling tools, such as Python’s cProfile, can help
identify bottlenecks, guiding improvements
10. Maintain and update the algorithm. Post-deployment, maintain the algorithm,
updating it as necessary to adapt to changing conditions and requirements. Use
version control systems like Git to manage updates efficiently
2.1.1.3. Flowchart
https://venngage.com/blog/flowchart-symbols/
Advantages of Flowchart:
• Easy to understand.
Disadvantages of Flowchart:
https://www.geeksforgeeks.org/an-introduction-to-flowcharts/
A data flow diagram offers a visual representation that maps the flow of information within a
system, emphasizing processes, data stores, and external entities. It helps security teams
identify and analyze data pathways, ensuring secure data handling and optimized processes.
3. Data Stores: Often represented by two horizontal lines, these indicate data
repositories like databases or other storage mechanisms where data rests.
Levels of DFD:
o Characteristics:
o In a library system, the context diagram would show a single process, like
"Library Management System," with data flows between entities such as
"Patron" and "Book Supplier."
2. Level 1 DFD:
o Characteristics:
▪ Breaks the single process from the Level 0 DFD into multiple, related
sub-processes.
▪ Identifies major data stores that store data used by the system.
Example:
o In the library system, the Level 1 DFD might break the "Library Management
System" into sub-processes such as "Manage Books," "Manage Users,"
"Loan Books," and "Manage Suppliers," with data stores such as "Book
Inventory" and "User Database."
▪ Focuses on a single process from the Level 1 DFD and breaks it down
into smaller, more detailed processes.
▪ Typically, not all processes from Level 1 will need a Level 2 DFD.
Only complex processes may need further breakdown.
Example:
o In the library system, the "Loan Books" process might be broken down into
smaller processes like "Check User Eligibility," "Update Book Availability,"
and "Record Loan Transaction," each with its own data flows and data stores.
1. Balancing: Each level should maintain consistency with the previous level. Inputs
and outputs for a process at one level should match those of the same process in the
higher level.
2. Decomposition: As you move to lower levels (e.g., from Level 1 to Level 2), you
decompose processes to provide more detail.
3. External Entities: External entities typically appear in all levels, as they interact
with the system as a whole.
4. Data Stores: Data stores are introduced at Level 1 and below and can appear in
multiple levels of DFDs if necessary.
• A logical data model, which is more detailed than a conceptual data model,
illustrating specific attributes and relationships among data points. While a
conceptual data model does not need to be designed before a logical data model, a
physical data model is based on a logical data model.
• A physical data model, which provides the blueprint for a physical manifestation --
such as a relational database -- of the logical data model. One or more physical data
models can be developed based on a logical data model.
1. Entities, which are objects or concepts that can have data stored about them. Entities
refer to tables used in databases.
5. Connecting lines.
Start by identifying the main entities in your system. Entities are objects or concepts that
have data to be stored. For example, in a university database, entities might include
"Student,"
"Course," and "Instructor."
Step 2: Establishing relationships
Attributes provide additional information about entities. Add relevant attributes to the
entities identified in the previous steps.
Specify the properties and characteristics of each attribute. For example, if you have an
attribute called "Age" for the "Student" entity, define its data type (integer, string, etc.) and
any constraints associated with it.
In this final step, we focus on refining the ER diagram to enhance clarity and
readability. Organize the entities and relationships in a logical and intuitive manner.
Group related entities together and arrange them in a way that reflects their connections.
https://www.techtarget.com/searchdatamanagement/definition/entity -relationship-diagram-
ERD
https://miro.com/diagramming/how-to-draw-an-er-diagram/
1. Easy conversion of business flow to test case: Any complex business flow can be
easily converted into test scenarios and test cases using this technique.
2. Works iteratively: Decision tables work iteratively which means the table created at
the first iteration is used as input tables for the next tables. The iteration is done only
if the initial table is not satisfactory.
3. Simple to understand: Simple to understand and everyone can use this method to
design the test scenarios & test cases.
4. Provides complete test case coverage: It provides complete coverage of test cases
which helps to reduce the rework on writing test scenarios & test cases.
2. Constructing the decision table matrix. Once we identify the conditions and
actions, we construct the decision table matrix. The matrix is made up of rows and
columns. Each row represents a particular scenario based on the conditions, and
each column represents the potential actions. The intersections between the rows
and columns define the rules for each scenario.
3. Defining rules for each scenario. We need to set the rules that specify the expected
actions for each combination of conditions. These rules help us determine the
software’s behavior under various conditions, making it easier to understand and
validate its responses.
Advantages
https://www.geeksforgeeks.org/software-engineering-decision-table/
https://www.baeldung.com/cs/software-testing-decision-table
A Use Case Diagram in Unified Modeling Language (UML) is a visual representation that
illustrates the interactions between users (actors) and a system.
It captures the functional requirements of a system, showing how different users engage with
various use cases, or specific functionalities, within the system.
When to apply Use Case Diagram?
Use case diagrams are useful in several situations. Here’s when you should consider using
them:
• When you need to gather and clarify user requirements, use case diagrams help
visualize how different users interact with the system.
• During the system design phase, use case diagrams help outline user interactions and
plan features, ensuring that the design aligns with user needs.
• When defining what is included in the system versus what is external, use case
diagrams help clarify these boundaries.
Actors are external entities that interact with the system. These can include users, other
systems, or hardware devices. In the context of a Use Case Diagram, actors initiate use cases
and receive the outcomes. Proper identification and understanding of actors are crucial for
accurately modeling system behavior.
2. Use Cases
Use cases are like scenes in the play. They represent specific things your system can do. In
the online shopping system, examples of use cases could be “Place Order,” “Track
Delivery,” or “Update Product Information”. Use cases are represented by ovals.
3. System Boundary
The system boundary is a visual representation of the scope or limits of the system you are
modeling. It defines what is inside the system and what is outside. The boundary helps to
establish a clear distinction between the elements that are part of the system and those that
are external to it. The system boundary is typically represented by a rectangular box that
surrounds all the use cases of the system.
The purpose of system boundary is to clearly outlines the boundaries of the system, indicating
which components are internal to the system and which are external actors or entities
interacting with the system.
1. Association Relationship
• Actor: Customer
• Association: A line connecting the “Customer” actor to the “Transfer Funds” use
case, indicating the customer’s involvement in the funds transfer process.
2. Include Relationship
The Include Relationship indicates that a use case includes the functionality of another use
case. It is denoted by a dashed arrow pointing from the including use case to the included
use case. This relationship promotes modular and reusable design.
• Include Relationship: The “Compose Post” use case includes the functionality of
“Add Image.” Therefore, composing a post includes the action of adding an image.
3. Extend Relationship
The Extend Relationship illustrates that a use case can be extended by another use case under
specific conditions. It is represented by a dashed arrow with the keyword “extend.” This
relationship is useful for handling optional or exceptional behavior.
• Extend Relationship: The “Select Seat” use case may extend the “Book Flight”
use case when the user wants to choose a specific seat, but it is an optional step.
•
4. Generalization Relationship
The Generalization Relationship establishes an “is-a” connection between two use cases,
indicating that one use case is a specialized version of another. It is represented by an
arrow pointing from the specialized use case to the general use case.
• Generalization Relationship: Both “Rent Car” and “Rent Bike” are specialized
versions of the general use case “Rent Vehicle.”
Below are the main steps to draw use case diagram in UML:
• Step 1: Identify Actors: Determine who or what interacts with the system. These
are your actors. They can be users, other systems, or external entities.
• Step 2: Identify Use Cases: Identify the main functionalities or actions the
system must perform. These are your use cases. Each use case should represent a
specific piece of functionality.
• Step 3: Connect Actors and Use Cases: Draw lines (associations) between actors
and the use cases they are involved in. This represents the interactions between
actors and the system.
Step 4: Add System Boundary: Draw a box around the actors and use cases to
represent the system boundary. This defines the scope of your system.
• Step 5: Define Relationships: If certain use cases are related or if one use case is
an extension of another, you can indicate these relationships with appropriate
notations.
• Step 6: Review and Refine: Step back and review your diagram. Ensure that it
accurately represents the interactions and relationships in your system. Refine as
needed.
• Step 7: Validate: Share your use case diagram with stakeholders and gather
feedback. Ensure that it aligns with their understanding of the system’s
functionality.
Let’s understand how to draw a Use Case diagram with the help of an Online Shopping
System:
• Actors:
o Customer
o Admin
• Use Cases:
o Browse Products
o Add to Cart
o Checkout
o Manage Inventory (Admin)
• Relations:
o The Customer can browse products, add to the cart, and complete
the checkout.
Avoiding common mistakes ensures the accuracy and effectiveness of the Use Case
Diagram.
Here are key points for each mistake:
Crafting clear and effective Use Case Diagrams is essential for conveying system
functionality and interactions. Here are some best practices to consider:
• Use Case Diagram focus on capturing the core functions of the system, avoiding
extraneous details.
• They uses a uniform naming scheme for use cases and actors throughout the
diagram to enhance clarity and prevent misunderstandings.
They ensure uniformity in the appearance of elements such as ovals (for use cases),
stick figures (for actors), and connecting lines to create a polished presentation.
• They help in organizing use cases into coherent groups that represent distinct
modules or subsystems within the overall system.
• Use Case Diagrams adopt an iterative method, updating the diagram as the system
changes or as new information emerges.
The Use Case Diagram offers numerous benefits throughout the system development
process.
Here are some key advantages of using Use Case Diagrams:
• Use Case Diagrams offer a clear visual representation of a system’s functions and
its interactions with external users. This representation helps stakeholders,
including those without technical expertise, in grasping the system’s overall
behavior.
• Use Case Diagram illustrate the different ways users engage with the system,
contributing to a thorough comprehension of its functionalities.
• In the design phase, Use Case Diagrams help outline how users (actors) will
interact with the system. They support the planning of user interfaces and aid in
structuring system functionalities. For more details, visit this link:
https://www.geeksforgeeks.org/use-case-diagram/
Class diagrams are a type of UML (Unified Modeling Language) diagram used in software
engineering to visually represent the structure and relationships of classes in a system.
Class diagrams are a type of UML (Unified Modeling Language) diagram used in software
engineering to visually represent the structure and relationships of classes within a system
i.e. used to construct and visualize object-oriented systems.
•
In these diagrams, classes are depicted as boxes, each containing three compartments for
the class name, attributes, and methods. Lines connecting classes illustrate associations,
showing relationships such as one-to-one or one-to-many.
What is a class?
class notation is a graphical representation used to depict classes and their relationships in
object-oriented modeling.
1. Class Name:
• The name of the class is typically written in the top compartment of the class
box and is centered and bold.
2. Attributes:
3. Methods:
4. Visibility Notation:
Parameter Directionality
In class diagrams, parameter directionality refers to the indication of the flow of information
between classes through method parameters. It helps to specify whether a parameter is an
input, an output, or both. This information is crucial for understanding how data is passed
between objects during method calls.
There are three main parameter directionality notations used in class diagrams:
• In (Input):
o An input parameter is a parameter passed from the calling object (client) to the
called object (server) during a method invocation.
• Out (Output):
o An output parameter is a parameter passed from the called object (server) back
to the calling object (client) after the method execution.
1. Association
Let’s consider a simple system for managing a library. In this system, we have two main
entities: Book and Library. Each Library contains multiple Books, and each Book belongs
to a specific Library. This relationship between Library and Book represents an
association.
The “Library” class can be considered the source class because it contains a reference to
multiple instances of the “Book” class. The “Book” class would be considered the target class
because it belongs to a specific library.
2. Directed Association
A directed association in a UML class diagram represents a relationship between two classes
where the association has a direction, indicating that one class is associated with another in a
specific way.
• The source class is the “Teacher” class. The “Teacher” class initiates the association
by teaching a specific course.
• The target class is the “Course” class. The “Course” class is affected by the
association as it is being taught by a specific teacher.
3. Aggregation
Aggregation is represented by a diamond shape on the side of the whole class. In this kind of
relationship, the child class can exist independently of its parent class.
Let’s understand aggregation using an example:
The company can be considered as the whole, while the employees are the parts. Employees
belong to the company, and the company can have multiple employees. However, if the company
ceases to exist, the employees can still exist independently.
4. Composition
Imagine a digital contact book application. The contact book is the whole, and each contact
entry is a part. Each contact entry is fully owned and managed by the contact book. If the
contact book is deleted or destroyed, all associated contact entries are also removed.
This illustrates composition because the existence of the contact entries depends entirely on
the presence of the contact book. Without the contact book, the individual contact entries lose
their meaning and cannot exist on their own.
5. Generalization(Inheritance)
Inheritance represents an “is-a” relationship between classes, where one class (the subclass or
child) inherits the properties and behaviors of another class (the superclass or parent).
Inheritance is depicted by a solid line with a closed, hollow arrowhead pointing from the
subclass to the superclass.
In the example of bank accounts, we can use generalization to represent different types of
accounts such as current accounts, savings accounts, and credit accounts.
The Bank Account class serves as the generalized representation of all types of bank
accounts, while the subclasses (Current Account, Savings Account, Credit Account) represent
specialized versions that inherit and extend the functionality of the base class.
6. Realization (Interface Implementation)
Realization indicates that a class implements the features of an interface. It is often used in
cases where a class realizes the operations defined by an interface. Realization is depicted by
a dashed line with an open arrowhead pointing from the implementing class to the interface.
Let’s consider the scenario where a “Person” and a “Corporation” both realizing an “Owner”
interface.
7. Dependency Relationship
A dependency exists between two classes when one class relies on another, but the
relationship is not as strong as association or inheritance. It represents a more loosely
coupled connection between classes. Dependencies are often depicted as a dashed arrow.
• Person Class: Represents an individual who reads a book. The Person class depends
on the Book class to access and read the content.
• Book Class: Represents a book that contains content to be read by a person. The
Book class is independent and can exist without the Person class.
The Person class depends on the Book class because it requires access to a book to read
its content. However, the Book class does not depend on the Person class; it can exist
independently and does not rely on the Person class for its functionality.
A usage dependency relationship in a UML class diagram indicates that one class (the client)
utilizes or depends on another class (the supplier) to perform certain tasks or access certain
functionality.
The client class relies on the services provided by the supplier class but does not own or
create instances of it.
• Usage dependencies represent a form of dependency where one class depends on
another class to fulfill a specific need or requirement.
• The client class requires access to specific features or services provided by the
supplier class.
• In UML class diagrams, usage dependencies are typically represented by a dashed
arrowed line pointing from the client class to the supplier class.
• The arrow indicates the direction of the dependency, showing that the client class
depends on the services provided by the supplier class.
Consider a scenario where a “Car” class depends on a “FuelTank” class to manage fuel
consumption.
• The “Car” class may need to access methods or attributes of the “FuelTank” class to
check the fuel level, refill fuel, or monitor fuel consumption.
• In this case, the “Car” class has a usage dependency on the “FuelTank” class because
it utilizes its services to perform certain tasks related to fuel management.
• This is the only UML that can appropriately depict various aspects of the OOPs
concept.
• Proper design and analysis of applications can be faster and efficient.
• Understanding Relationships:
Communication:
o This can help ensure consistency between the design and the actual
implementation.
• Code Generation:
Drawing class diagrams involves visualizing the structure of a system, including classes, their
attributes, methods, and relationships. Here are the steps to draw class diagrams:
1. Identify Classes:
• Start by identifying the classes in your system. A class represents a blueprint for
objects and should encapsulate related attributes and methods.
• For each class, list its attributes (properties, fields) and methods (functions,
operations). Include information such as data types and visibility (public,
private, protected).
3. Identify Relationships:
• Draw a rectangle (class box) for each class identified. Place the class name in
the top compartment of the box. Divide the box into compartments for
attributes and methods.
• Inside each class box, list the attributes and methods in their respective
compartments. Use visibility notations (+ for public, – for private, # for
protected, ~ for package/default).
6. Draw Relationships:
• Draw lines to represent relationships between classes. Use arrows to indicate
the direction of associations or dependencies. Different line types or
notations may be used for various relationships.
7. Label Relationships:
• Label the relationships with multiplicity and role names if needed. Multiplicity
indicates the number of instances involved in the relationship, and role names
clarify the role of each class in the relationship.
• While you can draw class diagrams on paper, using digital tools can provide more
flexibility and ease of modification. UML modeling tools, drawing software, or
even specialized diagramming tools can be helpful.
• System Design:
o During the system design phase, class diagrams are used to model the static
structure of a software system. They help in visualizing and organizing
classes, their attributes, methods, and relationships, providing a blueprint for
system implementation.
• Code Generation:
o Some software development environments and tools support code generation
based on class diagrams. Developers can generate code skeletons, reducing
manual coding efforts and ensuring consistency between the design and
implementation.
o Testers use class diagrams to understand the relationships between classes and
plan test cases accordingly. The visual representation of class structures helps
in identifying areas that require thorough testing.
• Reverse Engineering:
o Class diagrams can be used for reverse engineering, where developers analyze
existing code to create visual representations of the software structure. This is
especially helpful when documentation is scarce or outdated.
https://www.geeksforgeeks.org/unified-modeling-language-uml-class-diagrams/
Decision trees are a popular and powerful tool used in various fields such as machine
learning, data mining, and statistics. They provide a clear and intuitive way to make decisions
based on data by modeling the relationships between different variables. This article is all
about what decision trees are, how they work, their advantages and disadvantages, and their
applications.
Each internal node corresponds to a test on an attribute, each branch corresponds to the result
of the test, and each leaf node corresponds to a class label or a continuous value.
1. Root Node: Represents the entire dataset and the initial decision to be made.
2. Internal Nodes: Represent decisions or tests on attributes. Each internal node has one
or more branches.
4. Leaf Nodes: Represent the final decision or prediction. No further splits occur at these
nodes.
1. Selecting the Best Attribute: Using a metric like Gini impurity, entropy, or information
gain, the best attribute to split the data is selected.
2. Splitting the Dataset: The dataset is split into subsets based on the selected attribute.
3. Repeating the Process: The process is repeated recursively for each subset, creating a
new internal node or leaf node until a stopping criterion is met (e.g., all instances in a
node belong to the same class or a predefined depth is reached).
• Simplicity and Interpretability: Decision trees are easy to understand and interpret.
The visual representation closely mirrors human decision-making processes.
• No Need for Feature Scaling: Decision trees do not require normalization or scaling
of the data.
• Overfitting: Decision trees can easily overfit the training data, especially if they are
deep with many nodes.
• Instability: Small variations in the data can result in a completely different tree being
generated.
• Bias towards Features with More Levels: Features with more levels can dominate
the tree structure.
Symbols Derscription
Chance node
Terminal node
Branches
Arrow
• Decision node: A point in the decision tree where a choice needs to be made.
Represents decisions that split the tree into branches, each representing a possible
choice.
• Terminal (or end) node: The end point of a decision path. Represents the final
outcome of a series of decisions and chance events, such as success or failure.
• Branches: Lines that connect nodes to show the flow from one decision or chance
node to the next. Represent the different paths that can be taken based on decisions
and chance events.
• Arrows: Indicate the direction of flow from one node to another. Show the
progression from decisions and chance events to outcomes.
Classification Trees
Classification trees are used when the target variable is categorical. The tree splits the dataset
into subsets based on the values of attributes, aiming to classify instances into classes or
categories. For example, determining whether an email is spam or not spam.
Regression Trees
Regression trees are employed when the target variable is continuous. They predict outcomes
that are real numbers or continuous values by recursively partitioning the data into smaller
subsets. For example, predicting the price of a house based on its features.
• Identify the goal: Clearly articulate what decision you need to make. This could be a
choice between different strategic options, such as launching a product , entering a
new market, or investing in new technology.
• Scope: Determine the boundaries of your decision. What factors and constraints are
relevant? This helps in focusing the decision-making process and avoiding
unnecessary complexity.
• Collect information: Gather all the necessary information related to your decision.
This might include historical data, market research, financial reports, and expert
opinions.
• Identify key factors: Determine the critical variables that will influence your
decision. These could be costs, potential revenues, risks, resource availability, or
market conditions.
• Decision points: Identify all the points where a decision needs to be made. Each
decision point should represent a clear choice between different actions.
• Possible outcomes: List all potential outcomes or actions for each decision point.
Consider both positive and negative outcomes, as well as their probabilities and
impacts.
• Root node: Start with the main decision or question at the root of your tree. This
represents the initial decision point.
• Branches: Draw branches from the root to represent each possible decision or action.
Each branch leads to a node, which represents subsequent decisions or outcomes.
• Nodes: At the end of each branch, add nodes that represent the next decision point or
the final outcome. Continue branching out until all possible decisions and outcomes
are covered.
• Impact assessment: Evaluate the impact or value of each outcome. This might
involve estimating potential costs, revenues, or other metrics relevant to your
decision.
• Expected value calculation: For each decision path, calculate the expected value by
multiplying the probability of each outcome by its impact, and summing these values.
o Example: For a decision to launch a product, you might have a 60% chance of
success with an impact of $500,000, and a 40% chance of failure with an impact
of -$200,000.
• Compare paths: Compare the expected values of different decision paths to identify
the most favorable option.
• Prune irrelevant branches: Remove branches that do not significantly impact the
decision. This helps in simplifying the decision tree and focusing on the most critical
factors.
• Simplify the tree: Aim to make the decision tree as straightforward as possible while
retaining all necessary information. A simpler tree is easier to understand and use.
2. Gather quality data: Gather relevant and accurate data that will be used to build
and validate the decision tree. Ensure the data is representative and covers all
necessary factors influencing the decision.
3. Keep it simple: Aim for simplicity in the decision tree structure. Avoid unnecessary
complexity that can confuse users or obscure key decision points.
5. Validate and verify: Validate the data used to build the decision tree to ensure its
accuracy and reliability. Use techniques such as cross-validation or sensitivity
analysis to verify the robustness of the tree.
6. Interpretability: Use clear and intuitive visual representations of the decision tree.
This aids in understanding how decisions are made and allows stakeholders to follow
the logic easily.
1. Visual clarity: It presents decisions and their possible outcomes in a clear, visual
format, making complex choices easier to understand at a glance.
6. Flexibility: They can be easily updated with new information or adjusted to reflect
changing circumstances, keeping the decision-making process dynamic and relevant.
Understanding these advantages and disadvantages helps in determining when to use decision
trees and how to mitigate their limitations for effective machine learning applications.
Advantages Disadvantages
Easy to interpret and visualize. Can overfit complex datasets without proper
pruning.
Can handle both numerical and categorical Small changes in data can lead to different
data without requiring data normalization. tree structures.
https://creately.com/guides/decision-tree-guide/
https://www.geeksforgeeks.org/decision-tree/
2.2. Identification of Hardware and software technology
2.2.1. Computer Hardware
In order to use EdrawMax, you will need to have a minimum of:
• 1GB of memory (RAM), 4 GB recommended
• 5GB of free hard disk space for application files
• Internet connection for product activation and Live Updates
• Laptop or Monitor, mouse, and keyboard
2.2.2. System software
• Windows 7 and above; macOS v10.13 to macOS v13; Work on Apple M1.M2;
and Linux.
2.2.3. Application Software
2.2.3.1. Microsoft Office
Microsoft 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.
2.2.3.2. Visual paradigm
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. You can download it from here:
https://www.visual-paradigm.com/download/
2.2.3.3.E-Drawmax
EdrawMax Pro is an all-in-one diagram application that allows you to create flow
charts, mind maps, org charts, network diagrams and floor plans with a rich gallery of
examples and templates. EdrawMax enables students, teachers and business
professionals to reliably create and publish many kinds of diagrams to represent any
ideas. It's an all-in-one graphics software that makes it simple to create professional
looking flowcharts, network diagrams, organizational charts, business presentations,
building plans, mind maps, fashion designs, UML diagrams, workflows, program
structures, web design diagrams, electrical engineering diagrams, directional maps,
database diagrams and more. You can download it from this link:
https://www.edrawmax.com/
2.3. Application of SSADM (Structured System Analysis and Design Methods)
2.3.1. Objective of SSADM (Structured Systems Analysis and Design Methodology)
Definition of SSADM
Structured systems analysis and design method (SSAADM) refers to a methodology
to control and guide the process of system development in the information systems
industry. Developed in the early 1980s for the British government, SSADM became
the standard methodology for all public sector information system procurements.
Benefits of SSADM
• Timelines: Theoretically, SSADM allows one to plan, manage and control a
project well. These points are essential to deliver the product on time.
• Usability: Within SSADM special emphasis is put on the analysis of user
needs. Simultaneously, the systems model is developed and a comprehensive
demand analysis is carried out. Both are tried to see if they are well suited to
each other.6
• Respond to changes in the business environment: As in SSADM
documentation of the project’s progress is taken very seriously, issues like
business objectives and business needs are considered while the project is
being developed. This offers the possibility to tailor the planning of the project
to the actual requirements of the business.
• Effective use of skills: SSADM does not require very special skills and can
easily be taught to the staff. Normally, common modelling and diagramming
tools are used. Commercial CASE tools are also offered in order to be able to
set up SSADM easily.
• Better quality: SSADM reduces the error rate of IS by defining a certain
quality level in the beginning and constantly checking the system.
• Improvement of productivity: By encouraging on-time delivery, meeting
business requirements, ensuring better quality, using human resources
effectively as well as trying to avoid bureaucracy, SSADM improves the
overall productivity of the specific project and the company.
• Cuts costs: SSADM separates the logical and the physical systems design. So
the system does not have to be implemented again with new hard -or software.
https://www.grin.com/document/106034
2.3.2. SSADM Techniques
2.3.2.1. Logical Data modeling
Within this process the data requirements of an IS are investigated, identified,
modelled and documented. The logical data structure (LDS) is formed. It gives
information on the entities that need to be put down and on the relationships between
these entities.13 Logical Data Modelling is mainly carried out in the first two stages
of the SSADM development. So, for the feasibility stage, a higher Data Flow
Diagram (DFD) and an Entity Relation Diagram are normally produced.
2.3.2.2. Data flow Modeling
While Data Flow Modelling focuses on IS requirements, Data Flow Modelling deals
with identifying, modelling and documenting how data flows around and within an
IS. Again a comprehensive DFD is produced.
This DFD shows the connection between various processes within the IS. The
transformation of the processes, however, are more likely to be represented in a
distinct description of processes. Furthermore, the DFD shows the data stores, which
could be directories, folders, servers and the way they are accessed. A description of
the external entities (persons or companies that do not belong to the systems but are
relevant to it) should be included, too. Finally, data flows between processes, data
stores and external entities are also represented.
2.3.2.3. Entity Behavior modeling
The process of Entity Event Modelling deals with the business events that have an
impact on each entity and its surrounding. This information is put down in a so called
Entity Life Histories file.
Finally, for each process, data flow, data store and external entity there is an entry in
the so called data dictionary. This data dictionary is the central catalogue of data
within an IS. It shows the structure, storage, connections, origin and use of data. The
data dictionary aims to give the possibility of describing the elementary data in an
appropriate verbal way.
2.3.3. Implementation of stages for drawing SSADM
Stage 0: Feasibility study
Investigation of economical and technical feasibility. The problems are defined and
the project identified. The best business option is chosen out of up to 5 propositions.
In SSADM the feasibility stage is not imperative.
Stage 1: Investigation of the current environment
Definition of broad requirements, investigation of current data and processing. The
project is being identified and costs calculated. This stage is especially important as
any omissions will have a bad effect on the whole project.1
Stage 2: Business Systems Options
Formulation of business systems requirements. Evaluation of the implication and
benefit of each proposed option. Stage 3: Requirements specification
Identification of functional and non-functional requirements in detail. Proposal of new
methods and techniques in order to describe processing and data structures.
Produce a logical design of the proposed systems.
Stage 4: Technical systems options:
Definition and selection Maintenance of specific technical options, such as different
methods of implementation.
Stage 5: Logical design:
May be simultaneously to stage 4. User dialogues, update processes, enquiry
processes are defined and selected. Stage 6: Physical design:
After producing a physical design, creating a function and data design, the SSADM
cycle is completed and the applications are ready for delivery.
https://www.grin.com/document/106034
2.4. Application of Object-Oriented Analysis and Design (tutorialspoint, n.d.)
2.4.1. Introduction
Some of the terminologies that are often encountered while studying Object Oriented
Concepts include:
Object-Oriented Analysis
Object-Oriented Analysis (OOA) is the process of understanding and analyzing the system
requirements by looking at the problem scenario in terms of objects.
These objects represent real-world entities or concepts that are relevant to the system being
developed.
During OOA, the goal is to identify the objects, their attributes, behaviors, and relationships,
without focusing on how the system will be implemented.
OOD involves specifying how data attributes are organized within the objects.
This includes determining the types of data each object will hold and how they relate to one
another.
OOD requires a procedural description for each operation that an object can perform.
This involves detailing the steps or processes involved in carrying out specific tasks.
Below diagram shows a design pyramid for object-oriented systems. It is having the
following four layers.
• Because objects and their interactions need to be carefully explained and handled, it
might complicate a software system.
• Because objects must be instantiated, managed, and interacted with, this may result in
additional overhead and reduce the software’s speed.
• For beginner software engineers, OOAD might have a challenging learning curve
since it requires a solid grasp of OOP principles and methods.
• It can be a time-consuming process that involves significant upfront planning and
documentation. This can lead to longer development times and higher costs.
• OOAD can be more expensive than other software engineering methodologies due to
the upfront planning and documentation required.
https://www.geeksforgeeks.org/object-oriented-analysis-and-design/
2.4.2. Advantage and disadvantages
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.
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.
2.4.3. Phases in Object-Oriented Software development
We know that the Object-Oriented Modelling (OOM) technique visualizes things in
anapplication by using models organized around objects. Any software development
approach goes through the following stages: Analysis, Design and implementation.
2.4.3.1. Analysis
In this stage, the problem is formulated, user requirements are identified, and then a
model is built based upon real–world objects. The analysis produces models on how
the desired system should function and how it must be developed. The models do not
include any implementation details so that it can be understood and examined by any
non–technical application expert.
2.4.3.2. Design
Object-oriented design includes two main stages, namely, system design and object
design.
System Design:
In this stage, the complete architecture of the desired system is designed. The system
is conceived as a set of interacting subsystems that in turn is composed of a hierarchy
of interacting objects, grouped into classes. System design is done according to both
the system analysis model and the proposed system architecture. Here, the emphasis
is on the objects comprising the system rather than the processes in the system.
Object Design
In this phase, a design model is developed based on both the models developed in the
system analysis phase and the architecture designed in the system design phase. All
the classes required are identified. The designer decides whether:
• New classes are to be created from scratch,
• any existing classes can be used in their original form, or
• new classes should be inherited from the existing classes.
The associations between the identified classes are established and the hierarchies of
classes are identified. Besides, the developer designs the internal details of the classes
and their associations., the data structure for each attribute and the algorithms for the
operations.
2.4.3.3. Implementation
In this stage, the design model developed in the object design is translated into code in
an appropriate programming language or software tool. The databases are created and
the specific hardware requirements are ascertained. Once the code is in shape, it is
tested using specialized techniques to identify and remove the errors in the code.
Learning outcome 3: Build System Design
A data flow diagram (DFD) is a graphical or visual representation that uses a standardized set
of symbols and notations to describe a business's operations through data movement. They're
often elements of a formal methodology, such as Structured Systems Analysis and Design
Method (SSADM). Superficially, DFDs can resemble flow charts or Unified Modeling
Language (UML), but they aren't meant to represent details of software logic.
Elements of DFD
DFD notions and symbols vary according to the methodology model employed. Some
organizations have adopted their own conventions, though this isn't recommended.
• External entities: Information enters from or exits the system being described.
• Flows: Define the movement of information to, from and within the system being
described.
• Stores: Places where information is maintained or held, most often databases or
database tables.
• Processes: Transform information.
External Entity
Process
Data Store
Data Flow
Levels of DFDs
A data flow diagram can dive into progressively more detail by using levels and layers,
zeroing in on a particular piece. DFD levels are numbered 0, 1 or 2, and occasionally go to
even Level 3 or beyond. The necessary level of detail depends on the scope of what you are
trying to accomplish.
Level 0 (Context)
DFD Level 0 is also called a Context Diagram. It’s a basic overview of the whole system or
process being analyzed or modeled. It’s designed to be an at-a-glance view, showing the
system as a single high-level process, with its relationship to external entities. It should be
easily understood by a wide audience, including stakeholders, business analysts, data analysts
and developers.
DFD Level 1
DFD Level 1 provides a more detailed breakout of pieces of the Context Level Diagram. You
will highlight the main functions carried out by the system, as you break down the high-level
process of the Context Diagram into its subprocesses.
DFD Level 2 (Functional decomposition)
DFD Level 2 then goes one step deeper into parts of Level 1. It may require more text to
reach the necessary level of detail about the system’s functioning.
https://www.lucidchart.com/pages/data-flow-diagram
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.
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.
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.
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.”
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.”
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.
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.
• 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.
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.
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.
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.
Physical database design consists of defining database objects and their relationships.
• Tables: Tables are logical structures maintained by the database manager and are
made up of columns and rows. Databases store persistent data in tables, but there are
also tables that are used for presenting results, summary tables and temporary tables.
• Constraints: Within any business, data must often adhere to certain restrictions or
rules. For example, an employee number must be unique. The database manager
provides constraints as a way to enforce such rules.
• Indexes: An index is a set of pointers that are logically ordered by the values of one
or more keys. The pointers can refer to rows in a table.
• Triggers: A trigger defines a set of actions that are performed in response to an insert,
update, or delete operation on a specified table. When such an SQL operation is
executed, the trigger is said to have been activated. Triggers are optional and are
defined using the CREATE TRIGGER statement.
• 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.
• Cursor: 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.
• 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.
https://www.ibm.com/docs/en/db2/10.5?topic=concepts-database-objects
https://www.geeksforgeeks.org/database-objects-in-dbms/
✓ Design Database
Database design is the organization of data according to a database model. The designer
determines what data must be stored and how the data elements interrelate.
▪ Provides Access with the information it requires to join the information in the tables
together as needed.
▪ Helps support and ensure the accuracy and integrity of your information.
A well-structured database:
Divide your information items into major entities or subjects, such as Products or Orders.
Each subject then becomes a table.
Decide what information you want to store in each table. Each item becomes a field, and is
displayed as a column in the table. For example, an Employees table might include fields
such as Last Name and Hire Date.
Choose each table’s primary key. The primary key is a column that is used to uniquely
identify each row. An example might be Product ID or Order ID.
Look at each table and decide how the data in one table is related to the data in other tables.
Add fields to tables or create new tables to clarify the relationships, as necessary.
Analyse your design for errors. Create the tables and add a few records of sample data. See if
you can get the results you want from your tables. Make adjustments to the design, as
needed.
Apply the data normalization rules to see if your tables are structured correctly.
https://en.wikipedia.org/wiki/Database_design
3. Let's start by creating the first entity Route. Select Entity in diagram toolbar and click
on the diagram to create an entity. Name the entity Route and press Enter to confirm.
4. Create columns in Route. Let's start with a primary key. Right-click on entity Route
and select New Column from popup menu.
5. Enter +id : varchar(10) and press Enter. Note that the + sign means that the column
is a primary key. Varchar is the column type and 10 is the length.
6. Enter fare : float and press Enter, then Esc to create another column.
7. Create entity Stop. A bus route has many bus stops, while a stop can be shared by
many routes. Therefore, there is a many-to-many relationship between Route and
Stop. Place the mouse pointer over the Route entity. Drag out
Name the new entity Stop, You can see that a linked entity Route_Stop is
automatically created in between Route and Stop, with foreign key added.
PK id int(10)
name varchar(255)
terminus blob
10.
The diagram should now become:
11. A route has multiple bus schedules. Create an entity Schedule from Route with a one-
to-many relationship. Move the mouse pointer to Route. Press and drag out the
Resource Catalog icon. Select One-to-Many Relationship -> Entity to create entity
Schedule.
PK id int(10)
departure date
arrive date
13. A schedule is handled by a bus. Create an entity Bus from Schedule, with an one-to-
one relationship. Create the following columns in Bus:
Key Name Type
PK vehicle_id int(10)
fleet_id varchar(10)
last_main date
14.
The diagram should become:
15. A bus is driven by a bus driver. Create entity Driver from Bus with a one-to-one
relationship. Add the following columns to Driver:
PK id int(10)
name varchar(255)
employ_date date
16.
This is the final ERD.
3.3. Documentation of system design
A software design document is created at the beginning of your project. This document
includes all the specifications of the software you want to build. You might also call it a
technical specification document. Whatever you call it, this document contains information
combining the purpose of your new software and your plan for how you will build it. This
includes your timeline and goals.
A software product is a highly interconnected system with many dependent parts. So, when
you create your software design document, you need to include the following integral
elements in your documentation. This will ensure that it’s complete.
Introduction and Stakeholders
Introduce your new software project and list exactly who will be involved in your team.
Undoubtedly, your team will be cross-functional, and you can designate who will be
responsible for which aspects of software development. Then, team members know who they
can approach with any questions.
System Overview
Describe how the software system works and how you intend it to function. Connect this with
your ultimate aims and the benefits for your users. Include the particular specifications of the
system that you know you will need.
Consider the scope and context of your software, which relates to the overall aims of your
business. It includes how the software fits into your business’s strategy and why this project
is necessary. You’re filling out the “why” of your team’s decision to embark on the project.
Architectural Design
Being explicit about the proposed architectural design of your software is essential for teams
that want to build working software. You may be able to cobble something together without a
plan, but it won’t be as good if you don’t create this blueprint for your system. Software
architecture documentation is essential for functioning systems.
Detailed Design
Include a section on a detailed design of your software so you can delve into a more detailed
discussion of your system architecture. You will need to discuss your components and maybe
even subcomponents.
Many software products have a user interface. You’ll need to include instructions and
wireframes for your proposed UI. These will contribute to your overall user experience (UX).
Planning out how users will move through the interface, discover features, and unlock value
is crucial.
Error Handling and Recovery
Include instructions for how the system should handle errors and recover data in the event of
an incident. Your document will tell you how to design the system in the most effective way.
This will help you avoid errors and risk corrupting the system due to bad coding.
Dependencies
Part of the design process is taking into account dependencies. Include these in the SDD so
you can design a system that avoids breaking other components. This avoids system crashes
later on and removes the need to face difficult decisions about which features to keep. Don’t
slip into dependency hell.
https://document360.com/blog/software-design-document/
1. Introduction: Provides an overview of the project, its objectives, and the stakeholders
involved.
2. Scope: Defines the boundaries of the project and lists the features and functionalities
to be included.
3. Functional Requirements: Details the specific functions the software must perform
to meet the user’s needs.
4. User Interface (UI) Design: Describes the layout, structure, and interactions within
the user interface.
5. Data Requirements: Specifies the data inputs, outputs, storage, and processing
requirements.
8. Testing Criteria: Sets the criteria for acceptance testing to ensure that the system
meets the specified requirements.
https://essentialdata.com/what-is-a-functional-specification-document-fsd/
• Timeline
• Internal standards
• Impact
• Work involved
• Budget
It may also include diagrams, mockups, and other visual aids to help the team understand the
project’s scope and details.
A functional specification outlines the software’s features and functionality from a user’s
perspective. In contrast, a technical specification focuses on the technical details such as
hardware and software requirements, data architecture, and programming languages used.
In other words, the functional specification answers the “what” of the software, while the
technical specification answers the “how.”
Both documents are essential for a successful software development project, and they should
be written with care to ensure everyone on the team understands the project’s objectives and
requirements.
IT Technical Specification
IT technical specification addresses technical projects, IT infrastructure issues, and system
updates for the IT team. This document type is commonly used in IT infrastructure projects,
such as server upgrades, network installations, and software implementations.
The website technical specification outlines the technical requirements for developing a
website. It covers aspects such as design, functionality, and user experience. It describes the
website architecture, design elements, functionality, content management system, and third-
party integrations providing a clear roadmap for the project team.
This gives clarity to any software development project. It describes the software application’s
technical requirements, including the software architecture, programming languages,
database schema, and user interface design.
In addition, it should describe any external systems or services that the software application
will interact with and how it will integrate with them. It should also outline the software
development process, including coding standards, testing metrics and requirements, and
version control procedures
This flexible and adaptable document outlines the technical requirements for each iteration or
sprint in Agile development. Unlike traditional technical specification documents, it is
created and updated incrementally throughout the software project development process. The
document is lightweight, includes a description of technical requirements, and reflects the
Agile principles of simplicity and adaptability.
It is critical to ensure the development team clearly understands technical requirements and
roles, providing a roadmap for delivering working software that meets customer needs.
It serves as a blueprint for a product, outlining its general specifications and intended uses. It
includes a product summary, a description of features and functionality, technical
specifications, and design requirements. The document can guide the design and development
processes, make revisions based on user testing and customer input, and ensure the final
product meets user needs and expectations.
It is advisable to use tables and charts to make it clearer and more understandable for the
design and product team members.
This specification provides detailed information about the technical aspects of equipment,
including manufacturing, power requirements, and safety considerations. It helps ensure the
safe and efficient operation of equipment. The document typically includes information about
equipment dimensions, materials, maintenance and repair procedures, and training or
certification requirements.
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. https://document360.com/blog/technical-specification-document/
4. Database design Document: the design work product that officially documents
the design of the databases that will be part of an application.
Objectives
The typical objectives of a database design document are to: Formally document the logical
and physical design of all application databases.
Benefits
The typical benefits of a database design document are to:
• Make it easier for developers to integrate their executable software with the databases.
• Provide a consistency check on the domain object model document.
https://www.opfro.org/Components/WorkProducts/DesignSet/DatabaseDesignDocument/Dat
abaseDesignDocument.html
The use case is made up of a set of possible sequences of interactions between systems and
users in a particular environment and related to a particular goal. The method creates a
document that describes all the steps taken by a user to complete an activity.
A use case explains how users interact with a product or system. It outlines the flow of user
inputs, establishing successful and failed paths to meeting goals. This allows product teams to
better understand what a system does, how it performs, and why errors occur. You can write
one out or diagram a use case model for visual thinkers.
Use cases vary in complexity depending on your audience or system. But across the board,
your use case should identify a few key components. The most important ones include:
• Actor: anything exhibiting behavior that interacts with a system, such as a single user,
a team, or another piece of software
Actors, systems, and goals build the foundation for a use case. When you begin tracking
system interactions, a few new elements come into play:
• Primary actor: the actor who initiates a system’s function to reach a goal
• Basic flows: use cases where systems work as intended to reach a goal
• Alternate flows: different outcomes based on when and how a system veers off
course
Writing a use case sounds complex, but only requires understanding your system and its
users. You can write a use case by following these six steps:
Start by describing your system, or the product or service you and your team will build. Focus
your description on what your system does for users. In a business use case, you can keep this
background general and explain what it accomplishes. For a system use case, give an under-
the-hood description of how your product functions.
• What can you learn about the system from other documents like project charters?
2. Identify the actors
Actors generally refer to users and customers but can apply to any outside force that
engages with your system. Your actor needs well-defined behaviors explaining how and
why actors use your system.
Use cases highlight the outcome actors want from a system. Remember to focus on your
actors’ wants over the system’s capabilities to understand why users come to your system. In
some cases, customers want to use systems for more than one objective. Listing each of these
objectives creates a more robust use case.
4. Create a scenario
In a use case, scenarios are the sequence of actions customers take when using a system and
the flow of effects from that interaction. Your basic flows cover scenarios where a system
works as intended. A user approaches the system, enters the right inputs, and your system
helps them reach their goals.
Start with these successful, basic flows to create a baseline. You can use process
mapping techniques to identify potential issues in the next flows.
After writing a successful scenario, write alternate flows that lead to different outcomes.
Typically, alternate flows involve the misuse of a system that keeps actors from reaching their
goals. However, you can also note internal errors that cause a system to break down or
unintended ways systems can reach goals.
Alternate flows show how different actors use a system and succeed or fail. They give a more
nuanced view of everything your system can do to help you troubleshoot.
6. Repeat steps 2–5 to compile your use case
With enough variation of actors, goals, and scenarios, you can show how your
system functions. Compiling these flows together gives you a use case, which can
improve development and inform other documents like project status reports.
With simple systems, you can change a few elements to see every potential outcome.
However complex systems may have too many elements to see each outcome. In cases
like this, you can focus on testing the most common interactions.
• Explains value: Use cases explain a system’s features in plain terms. So, when
pitching your plans to stakeholders, a use case makes your system easier to
understand.
• Predicts costs: A use case outlines the complexity of a system. More complexity
may come with additional features or safeguards. By learning how complex your
system is, you can estimate development costs.
• Improves planning: Without a use case, designers and developers focus on what a
system does, not how it does it. However, use cases help teams consider all the ways
to implement features and safeguards.
• Shares alternative uses: Not all alternative flows in a system lead to failed
outcomes. Mapping out different scenarios finds new solutions to old problems or
expands your understanding of what a system can accomplish.