CS322 System Analysis and Design Lecture Note
CS322 System Analysis and Design Lecture Note
FACULTY OF COMPUTING
DEPARTMENT OF COMPUTER SCIENCE
CS 322
System Analysis and Design
Unit 3
Lecturers:
Dr. FU Zambuk
June, 2025
Course outline
System Concept; System Development Life Cycle Analysis: Fact gathering Techniques, data
flow diagrams, Process description data modeling. System Design: Logical design leading to
functional specifications; rapid prototyping, Physical design leading to detailed
specifications, Structure Charts, form designs, automated Tools for design. Database
selection and integration issues. Software testing and software quality assurance, system
security. System performance evaluation; end user training; system delivery; Post
implementation review; maintenance and re-engineering. There should be a course project.
2
CHAPTER ONE
A system is an organized collection of components that work together to achieve a specific goal
or set of goals. Systems can be found in various domains, including natural, social, and
technological environments. In the context of information systems, a system typically refers to a
set of interrelated components that collect, process, store, and distribute information to support
decision making, coordination, control, analysis, and visualization within an organization.
1. Inputs:
o Definition: Inputs are the resources, data, or materials that are put into a system
to be processed.
o Examples: Raw data, user commands, energy, materials.
2. Processes:
o Definition: Processes are the activities or operations that transform inputs into
outputs.
o Examples: Data processing, computation, manufacturing steps, transformation of
raw materials.
3. Outputs:
o Definition: Outputs are the results produced by the system after processing the
inputs.
o Examples: Processed information, finished products, reports, decisions.
4. Feedback:
o Definition: Feedback is information about the output of a system that is used to
make adjustments or improvements to the inputs or processes.
o Examples: Performance reports, customer feedback, error messages.
5. Control:
o Definition: Control involves the mechanisms that monitor and regulate the
operation of a system to ensure it achieves its goals.
Examples: Quality control processes, management oversight, automated control
systems.
6. Environment:
o Definition: The environment encompasses everything outside the system that can
influence its operation and performance.
o Examples: External data sources, regulatory constraints, economic conditions.
7. Boundaries:
o Definition: Boundaries define the limits of the system and differentiate it from its
environment.
o Examples: Organizational boundaries, scope of a project, the perimeter of a
manufacturing plant.
Types of Systems:
1. Open Systems:
4
o Characteristics: Interact with their environment by receiving inputs and
producing outputs.
o Examples: Businesses, ecosystems, computer systems connected to the internet.
2. Closed Systems:
o Characteristics: Do not interact with their environment; all inputs and outputs
are contained within the system. o Examples: A clock, a sealed laboratory
experiment.
Information Systems:
Information systems specifically refer to systems designed to manage and process data to
provide useful information for decision-making within an organization. They consist of several
critical components:
1. Hardware: Physical devices and equipment that perform input, processing, storage, and
output activities. Examples: Computers, servers, peripherals.
2. Software: Programs and applications that control hardware and process data. o
Examples: Operating systems, database management systems, enterprise applications.
o Data: : Raw facts and figures that are processed into meaningful information.
Examples: Customer records, sales transactions, inventory levels.
4. People: Individuals who use and manage information systems. Examples: IT
professionals, end-users, system analysts.
5. Processes: Procedures and rules that define how data is collected, processed, and
distributed. Examples: Business processes, data entry protocols, reporting standards.
6. Networks: Communication systems that connect hardware components and allow data
sharing. Examples: Local Area Networks (LAN), Wide Area Networks (WAN), the internet.
6
o Description: Providing training and support to end-users and technical staff.
o Activities: Creating user manuals, conducting training sessions, and offering
ongoing support.
1. Technical Skills:
Proficiency in Programming Languages: Understanding of languages such as
Java, C#, Python.
Database Management: Knowledge of SQL, Oracle, and database design
principles.
o System Design Tools: Familiarity with tools like UML (Unified Modeling
Language), ERD (Entity-Relationship Diagrams).
2. Analytical Skills:
o Problem-Solving: Ability to analyze complex problems and develop effective
solutions.
o Critical Thinking: Evaluating various options and making sound decisions based
on analysis.
3. Communication Skills:
o Interpersonal Communication: Effectively communicating with stakeholders at
all levels.
o Technical Writing: Documenting requirements, designs, and test plans clearly
and concisely.
4. Project Management Skills:
o Planning and Scheduling: Developing and managing project plans and
schedules.
o Resource Management: Allocating and managing resources efficiently.
5. Business Skills:
o Domain Knowledge: Understanding the specific industry and business processes.
o Cost-Benefit Analysis: Evaluating the financial impact of system solutions.
6. Interpersonal Skills:
o Collaboration: Working effectively with cross-functional teams. o
8
The System Development Life Cycle (SDLC) is a structured approach used for developing
information systems. It provides a systematic process for planning, creating, testing, and
deploying information systems, ensuring that high-quality systems are delivered that meet or
exceed customer expectations. The SDLC consists of distinct phases, each with specific tasks
and deliverables. Understanding these phases helps in managing the complexity of system
development projects and improving project success rates.
1. Planning:
o Purpose: To define the scope, objectives, and feasibility of the project.
o Activities: Project initiation, feasibility analysis, project scheduling, resource
allocation.
Deliverables: Project charter, feasibility study report, project plan.
2. Analysis:
o Purpose: To gather detailed requirements and analyze business needs.
o Activities: Requirement gathering (interviews, surveys, document analysis),
requirement analysis, requirement documentation.
o Deliverables: System requirements specification (SRS), use cases, process
diagrams.
3. Design:
o Purpose: To create detailed system designs based on requirements gathered.
o Activities: System architecture design, database design, interface design,
specification of system components.
o Deliverables: Design documents, data models, UI/UX prototypes.
4. Implementation (Development):
o Purpose: To build and develop the system based on design specifications.
o Activities: Coding, integration of system components, development of
databases, creation of system interfaces.
o Deliverables: Source code, database schema, developed system modules.
5. Testing:
o Purpose: To ensure the system works as intended and is free of defects.
o Activities: Unit testing, integration testing, system testing, user acceptance
testing (UAT).
o Deliverables: Test plans, test cases, test scripts, defect reports.
6. Deployment:
o Purpose: To deliver the system to the users and make it operational.
o Activities: System installation, data migration, user training, deployment
planning.
o Deliverables: Deployed system, user manuals, training materials.
7. Maintenance:
o Purpose: To monitor, support, and enhance the system post-deployment.
o Activities: Bug fixing, system updates, performance tuning, new feature
integration.
10
o Deliverables: Maintenance reports, system updates, enhancement specifications.
Different SDLC models have been developed to address various project requirements and
constraints. Each model has its strengths and weaknesses, making them suitable for different
types of projects.
1. Waterfall Model:
o Description: A linear and sequential approach where each phase must be
completed before the next one begins.
o Strengths: Simple, easy to understand, well-suited for projects with clear
requirements.
o Weaknesses: Inflexible, difficult to accommodate changes, high risk if initial
requirements are not well-understood.
o Use Case: Suitable for projects with well-defined requirements and low
uncertainty.
2. V-Model (Validation and Verification Model):
o Description: An extension of the Waterfall model that includes corresponding
testing phases for each development stage.
o Strengths: Emphasizes verification and validation, ensures early detection of
defects. o Weaknesses: Similar to Waterfall, it can be rigid and challenging
to handle changes.
o Use Case: Suitable for projects where quality and reliability are critical.
3. Iterative Model:
o Description: Develops the system through repeated cycles (iterations), allowing
refinement through each iteration.
o Strengths: Flexible, allows for changes and refinements, reduces risk through
early iterations.
o Weaknesses: Can lead to scope creep, requires careful project management.
o Use Case: Suitable for complex projects where requirements may evolve over
time.
12
4. Spiral Model:
o Description: Combines iterative development with risk assessment. Each
iteration involves planning, risk analysis, engineering, and evaluation.
o Strengths: Focuses on risk management, iterative refinement, and client
feedback.
o Weaknesses: Can be complex to manage, requires significant risk assessment
expertise. o Use Case: Suitable for large, high-risk projects where risk
management is a priority.
o
5. Agile Model:
o Description: Emphasizes flexibility, collaboration, and customer feedback. Uses
iterative cycles called sprints to develop system increments.
o Strengths: Highly flexible, adaptive to changes, focuses on customer satisfaction.
o Weaknesses: Requires strong team collaboration, can be challenging in
fixedbudget projects.
o Use Case: Suitable for dynamic projects where requirements are expected to
change frequently.
o
6. DevOps Model:
o Description: Integrates development (Dev) and operations (Ops) to improve
collaboration, automate processes, and enhance the delivery pipeline.
o Strengths: Enhances collaboration, continuous delivery, and deployment, quick
feedback loops.
o Weaknesses: Requires cultural shift, high initial setup and integration costs.
o Use Case: Suitable for projects aiming for continuous integration and delivery.
15
CHAPTER TWO
Requirements Gathering
Requirements gathering is a critical step in the System Development Life Cycle (SDLC) that
involves collecting information from stakeholders to understand their needs and expectations for
a new system or enhancement to an existing system. The primary goal is to ensure that the final
system meets the users' requirements and provides value to the organization.
Scenario: A company decides to develop a new CRM system to better manage customer
interactions, sales processes, and marketing campaigns.
1. Identify Stakeholders:
o Stakeholders: Sales team, marketing team, customer service
representatives, IT department, senior management.
o Objective: Ensure all relevant perspectives are considered.
2. Conduct Interviews:
o Sales Team Interview:
Questions: What are the current challenges with the existing system?
What features would make your job easier?
Insights: Sales team needs better tracking of customer interactions and
integration with email. o Marketing Team Interview:
Questions: How do you currently manage campaigns? What reporting
capabilities do you need?
Insights: Marketing requires advanced segmentation and real-time
campaign performance tracking.
3. Facilitate Focus Groups:
o Description: Organize sessions with representatives from different teams to
discuss their needs collaboratively.
o Outcome: Identify common needs, such as a unified customer view and easy data
entry forms.
4. Distribute Surveys:
o Description: Create surveys to gather broader input from all stakeholders.
o Questions: Rate the importance of various features (e.g., mobile access, analytics,
integration with social media).
o Results: Quantitative data to prioritize features based on stakeholder preferences.
5. Observation and Shadowing:
o Description: Observe stakeholders as they use the current system to identify pain
points and inefficiencies.
o Findings: Customer service reps spend too much time switching between
systems, highlighting the need for integration.
6. Document Analysis:
o Description: Review existing documentation, such as process manuals, reports,
and system logs.
o Outcome: Understand current workflows and data usage patterns.
7. Workshops and Brainstorming Sessions:
o Description: Conduct collaborative workshops to generate ideas and solutions. o
Outcome: Detailed feature lists and workflow diagrams.
• Functional Requirements:
o Track customer interactions across multiple channels (email, phone, social
media).
o Provide a unified customer view accessible by sales, marketing, and customer
service.
o Enable advanced customer segmentation and targeted marketing campaigns.
• Non-Functional Requirements:
17
o System must be accessible via mobile devices. o Must support integration with
existing email and social media platforms. o Require high availability and data
security measures.
Scenario: An online retailer wants to enhance its e-commerce platform to improve user
experience and increase sales.
1. Identify Stakeholders:
o Stakeholders: Customers, product managers, IT team, customer support,
warehouse staff.
o Objective: Capture diverse viewpoints to ensure comprehensive requirements.
2. Customer Feedback and Surveys:
o Description: Collect feedback from customers through surveys and reviews.
o Questions: What features do you find most useful? What challenges do you face
while shopping online?
o Insights: Customers want faster checkout, personalized recommendations, and
better mobile usability.
3. Focus Groups with Customers:
o Description: Conduct focus groups to delve deeper into customer preferences and
pain points.
o Outcome: Customers express a need for a more intuitive navigation and
improved search functionality.
4. Interviews with Internal Stakeholders:
o Product Managers: Discuss feature priorities, competitive analysis, and strategic
goals. o Customer Support: Identify common customer complaints and frequent
support issues.
o Warehouse Staff: Understand inventory management challenges and fulfillment
process inefficiencies.
5. Competitive Analysis:
o Description: Analyze competitors' platforms to identify strengths and potential
improvements.
o Outcome: Identify industry best practices and innovative features that could be
incorporated.
6. Usability Testing:
o Description: Conduct usability tests with users to observe how they interact with
the current platform.
o Findings: Users struggle with the checkout process and often abandon their carts.
• Functional Requirements:
o Simplify the checkout process to reduce cart abandonment rates.
o Implement personalized product recommendations based on user behavior.
o Enhance search functionality with filters and auto-suggestions.
• Non-Functional Requirements:
o Ensure the platform is optimized for mobile devices. o Improve page load
times to enhance user experience.
o Implement robust security measures to protect user data.
Requirement elicitation techniques are methods used by system analysts to gather information
from stakeholders regarding their needs, preferences, and expectations for a system. These
techniques are crucial for understanding the scope and requirements of a project and play a
significant role in the success of system development efforts. Let's delve into these techniques,
exploring their meanings, features, merits, demerits, and practical applications:
1. Interviews:
Meaning: Interviews involve direct interaction between the system analyst and stakeholders to
gather information. This can be done one-on-one or in a group setting.
19
Features:
Advantage:
Disadvantage:
2. Questionnaires:
Features:
Advantage:
• Efficient for gathering data from a large and diverse group of stakeholders.
• Standardized responses facilitate quantitative analysis.
• Cost-effective compared to interviews in terms of time and resources.
Disadvantage:
Practical Application: Suitable for collecting baseline data, obtaining feedback on proposed
solutions, or conducting surveys to understand stakeholder preferences.
3. Workshops/Brainstorming Sessions:
Features:
Advantages:
Disadvantages:
• Requires careful planning and facilitation to manage diverse opinions and avoid conflicts.
• May be challenging to schedule and coordinate participation from all relevant
stakeholders.
• Dominant personalities or groupthink may influence outcomes.
21
Practical Application: Effective for exploring complex issues, generating innovative solutions,
and building consensus among stakeholders on project requirements and goals.
Requirements analysis and documentation is a crucial phase in the System Development Life
Cycle (SDLC) where system analysts gather, analyze, and document the needs and expectations
of stakeholders regarding a system or software project. This phase aims to ensure a clear
understanding of the desired system functionalities, features, and constraints before proceeding
with system design and development. Let's delve into this process in detail:
1. Requirements Analysis:
Process:
2. Requirements Documentation:
Features:
• Clear and Concise: Requirements should be articulated in a clear and concise manner,
avoiding ambiguity or ambiguity.
• Structured Format: Organize requirements systematically, typically including sections
such as functional requirements, non-functional requirements, and constraints.
• Traceability: Establish traceability links between requirements and other SDLC artifacts,
such as design documents and test cases, to ensure alignment and manage changes.
• Version Control: Maintain version control of requirements documents to track changes
and facilitate collaboration among project stakeholders.
Example: Continuing with the online banking system example, requirements documentation
would include detailed descriptions of functional requirements such as user authentication,
account balance inquiry, and transaction history retrieval. Non-functional requirements related to
performance, security, and usability would also be documented. Each requirement is assigned a
unique identifier, and traceability links are established with corresponding design documents and
test cases.
1. Alignment with Stakeholder Needs: Ensures that the developed system meets the
expectations and requirements of stakeholders.
2. Clarity and Consistency: Provides a clear and consistent understanding of system
functionalities, reducing ambiguity and misunderstandings.
23
3. Basis for Design and Development: Serves as a foundation for system design,
development, and testing activities, guiding the implementation process.
4. Risk Management: Helps identify and address potential risks and challenges early in the
project lifecycle, minimizing rework and cost overruns.
5. Change Management: Facilitates effective change management by providing a baseline
for assessing the impact of proposed changes on project scope and objectives.
CHAPTER THRE
Data Flow Diagrams (DFDs) are a graphical representation technique used in system analysis
and design to depict the flow of data within a system. They provide a visual representation of
how data moves through various processes and stores within a system, highlighting the
interactions between different components. Let's explore DFDs in detail:
1. Meaning:
Data Flow Diagram (DFD): A DFD is a graphical representation of a system that shows the
flow of data between processes, data stores, and external entities. It uses standardized symbols to
represent components and their interactions, helping stakeholders understand the system's data
flow and processing logic.
2. Features:
• Components: DFDs consist of four main components: processes, data stores, data flows,
and external entities.
• Hierarchical Structure: DFDs can be decomposed into multiple levels of detail, from a
high-level overview to detailed diagrams focusing on specific processes.
• Standardized Symbols: DFDs use standardized symbols such as circles for processes,
rectangles for data stores, arrows for data flows, and squares for external entities.
• Data Transformation: Processes in DFDs transform input data into output data through
various operations or computations.
3. Merits:
• Clarity: Provides a clear and intuitive visualization of data flow and processing logic
within a system.
• Communication: Facilitates communication between stakeholders by providing a
common visual language for discussing system requirements and design.
• Analysis: Helps identify inefficiencies, redundancies, and bottlenecks in data flow and
processing, enabling optimization.
• Documentation: Serves as a documentation tool for capturing system requirements,
design decisions, and implementation details.
4. Demerits:
• Complexity: DFDs can become complex and difficult to manage, especially for large
systems with numerous processes and data flows.
• Abstraction: May oversimplify certain aspects of the system, leading to ambiguity or
misunderstanding of system behavior.
• Static Representation: DFDs represent a snapshot of the system at a specific point in
time and may not capture dynamic aspects such as real-time interactions or system
behavior over time.
5. Practical Application:
Consider an online shopping system where customers browse products, add items to their cart,
and complete the checkout process. A DFD for this system may include:
• Processes:
o Search Products o Add to Cart
o Update Cart o Checkout
25
Data Stores:
o Product Database o Customer
Database o Shopping Cart
Data Flows:
o Product Information Flowing from
Product Database to Search Products
Process o Selected Products Flowing
from Search Products Process to Add to
Cart Process o Updated Cart Information
Flowing from Update Cart Process to
Shopping Cart
1. Meaning:
27
2. Features:
• Entities: Represent real-world objects or concepts within the system, such as customers,
products, or orders.
• Attributes: Describe the properties or characteristics of entities, such as customer name,
product price, or order date.
• Relationships: Illustrate the connections or associations between entities, such as one-
toone, one-to-many, or many-to-many relationships.
• Cardinality: Specifies the maximum and minimum number of occurrences of one entity
that may be related to another entity.
• Keys: Identify unique identifiers for entities, such as primary keys, which uniquely
identify each record within a table.
3. Merits:
• Clarity: Provides a clear and intuitive visualization of the database structure and
relationships between entities.
• Communication: Facilitates communication between stakeholders by providing a
common visual language for discussing database design.
• Analysis: Helps identify potential design flaws, normalization opportunities, and
optimization strategies.
• Documentation: Serves as documentation for capturing database requirements, design
decisions, and implementation details.
4. Demerits:
• Complexity: ERDs can become complex and difficult to manage, especially for large
databases with numerous entities and relationships.
• Abstraction: May oversimplify certain aspects of the database design, leading to
ambiguity or misunderstanding of data relationships.
• Static Representation: ERDs represent a static view of the database structure at a
specific point in time and may not capture dynamic aspects such as data changes or
system behavior over time.
5. Practical Application:
Consider a library management system where books are borrowed by library members. An ERD
for this system may include:
• Entities:
o Book (with attributes such as ISBN, title, and author) o Member (with attributes
such as member ID, name, and contact information) o Borrowing (with attributes
such as borrowing ID, borrow date, and return date) Relationships:
o One-to-Many Relationship between Book and Borrowing (One book can be
borrowed by many members)
o One-to-Many Relationship between Member and Borrowing (One member can
borrow many books)
o Cardinality constraints specifying that each borrowing must be associated with
exactly one book and one member.
29
Modeling Techniques: Use Case Diagrams
Use Case Diagrams are a graphical representation technique used in system analysis and design
to depict the interactions between users (actors) and a system. They provide a visual overview of
the functionality provided by a system from the perspective of its users. Let's explore Use Case
Diagrams in detail:
1. Meaning:
Use Case Diagram: A Use Case Diagram is a visual representation of the interactions between
users (actors) and a system, illustrating the various ways users interact with the system to
accomplish tasks or goals. It captures the functional requirements of the system from the
perspective of its users.
2. Features:
• Actors: Represent users, external systems, or other entities that interact with the system.
• Use Cases: Represent specific actions or tasks that users can perform within the system.
• Relationships: Show associations between actors and use cases, indicating which actors
are involved in each use case.
• System Boundary: Represents the boundary of the system under consideration,
distinguishing it from external entities.
• Include and Extend Relationships: Indicate dependencies between use cases, where one
use case includes or extends the functionality of another.
3. Merits:
4. Demerits:
31
5. Practical Application:
Consider an Automated Teller Machine (ATM) system where users can perform various banking
transactions. A Use Case Diagram for this system may include:
• Actors:
o Customer o Bank Administrator Use
Cases:
o Withdraw Cash o Deposit Funds o Check
Balance o Change PIN Relationships:
o Customer interacts with all use cases
o Bank Administrator may perform
administrative tasks such as managing ATM settings or
performing maintenance.
Modeling Techniques: Activity Diagrams
Activity Diagrams are a graphical representation technique used in system analysis and design to
model the flow of activities within a system. They depict the sequence of actions, decisions, and
control flows involved in completing a specific process or use case. Let's explore Activity
Diagrams in detail:
1. Meaning:
Activity Diagram: An Activity Diagram is a visual representation of the flow of activities within
a system or process, illustrating the sequence of actions, decisions, and control flows required to
accomplish a specific task or use case. It provides a clear and intuitive visualization of the
workflow, showing how activities are performed and how they interact with each other.
2. Features:
• Activities: Represent tasks or actions performed within the system, such as processing
data, making decisions, or sending notifications.
• Transitions: Show the flow of control between activities, indicating the sequence in
which activities are executed.
• Decisions (Branches): Represent decision points where the flow of control may diverge
based on certain conditions or criteria.
• Forks and Joins: Depict parallel or concurrent execution paths where multiple activities
can occur simultaneously or converge back into a single path.
• Start and End Nodes: Define the starting and ending points of the activity diagram,
indicating the initiation and completion of the process or use case.
3. Merits:
33
• Analysis: Helps identify dependencies, bottlenecks, and inefficiencies within the
workflow, guiding process improvement efforts.
• Communication: Enables effective communication between stakeholders by providing a
common visual language for discussing system processes and workflows.
• Validation: Supports validation and verification of system requirements, ensuring that
the system behaves as intended and meets user needs.
4. Demerits:
• Complexity: Activity Diagrams can become complex and difficult to interpret, especially
for processes with multiple decision points and parallel flows.
• Abstraction: May oversimplify certain aspects of the workflow, leading to ambiguity or
misunderstanding of process behavior.
• Limited Detail: Activity Diagrams provide a high-level overview of the workflow and
may not capture detailed business rules or system interactions.
5. Practical Application:
Consider the process of placing an order on an e-commerce website. An Activity Diagram for
this process may include:
Activities:
o Login to the website o Browse products o Add
items to the shopping cart o Proceed to checkout o Enter
shipping and payment information o Confirm order o Receive
order confirmation Transitions:
o Flow of control between activities, indicating the sequence in
which actions are performed. o Decision points where the flow of
control may diverge based on conditions, such as entering a discount
code or selecting a shipping option.
35
CHAPTER FOUR
1. Meaning of Normalization:
Normalization is typically carried out in stages, known as normal forms. The most commonly
used normal forms are:
• First Normal Form (1NF): Ensures that each column in a table contains atomic values,
and each row is unique.
• Second Normal Form (2NF): Eliminates partial dependencies by ensuring that all
nonkey attributes depend on the entire primary key.
• Third Normal Form (3NF): Removes transitive dependencies by ensuring that all
nonkey attributes depend only on the primary key and not on other non-key attributes.
• Boyce-Codd Normal Form (BCNF): Further refines 3NF by eliminating all non-trivial
functional dependencies.
• Fourth Normal Form (4NF), Fifth Normal Form (5NF), and so on: Address more
complex types of data redundancy and dependency.
3. Examples of Normalization:
Example: Consider a database for a library. The original design may include a single table with
columns for book ID, title, author, and borrower information. To normalize this database:
1. First Normal Form (1NF): Ensure each cell has a single value (atomicity). Break down
the borrower information into separate columns or tables.
2. Second Normal Form (2NF): Remove partial dependencies. If book ID determines both
title and author, move author information to a separate table.
3. Third Normal Form (3NF): Eliminate transitive dependencies. If author information
depends on book ID rather than book title, move it to a separate table.
Example:
Consider a database table storing information about students and their courses. The initial
unnormalized table might look like this:
37
Student ID Student Name Course ID Course Name Instructor
To achieve 1NF, we need to ensure that each cell contains atomic values, and each row is unique.
We'll split the table into two separate tables: one for students and another for courses.
Students Table:
1 Alice
2 Bob
3 Charlie
Courses Table:
Now, each table satisfies 1NF, with each cell containing atomic values, and each row being
unique.
1 Alice
2 Bob
3 Charlie
Courses Table:
Both tables already satisfy 2NF since there are no partial dependencies.
To achieve 3NF, we need to remove transitive dependencies by ensuring that all non-key
attributes depend only on the primary key and not on other non-key attributes.
In our example, the Courses table is already in 3NF because each non-key attribute (Course
Name, Instructor) depends solely on the Course ID, which is the primary key.
The Students table, however, contains a transitive dependency between Student ID and Student
Name. To resolve this, we'll create a separate table for student details.
39
Primary Key: Student ID
1 Alice
2 Bob
3 Charlie
Now, the Students table only contains the Student ID, which is the primary key, and Student
Details table contains the Student ID and corresponding Student Name. This satisfies 3NF.
SQL (Structured Query Language) is a powerful language used to communicate with and
manipulate databases. SQL is used to perform various operations on data, such as querying,
inserting, updating, and deleting data. It is also used to create and modify the structure of
database objects like tables, indexes, and views.
sql
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
BirthDate DATE,
HireDate DATE
);
This command creates a new table named Employees with columns for employee ID, first name,
last name, birth date, and hire date.
b. ALTER TABLE:
sql
ALTER TABLE Employees
ADD Email VARCHAR(100);
c. DROP TABLE:
sql
DROP TABLE Employees;
This command deletes the Employees table and all its data. 2.
a. SELECT:
sql
SELECT FirstName, LastName
FROM Employees
41
WHERE HireDate > '2020-01-01';
This command retrieves the first name and last name of employees who were hired after January
1, 2020.
b. INSERT:
sql
INSERT INTO Employees (EmployeeID, FirstName, LastName, BirthDate, HireDate)
VALUES (1, 'John', 'Doe', '1980-05-15', '2021-06-01'); This command inserts a new
c. UPDATE:
sql
UPDATE Employees
SET Email = 'john.doe@example.com' WHERE
EmployeeID = 1;
This command updates the email address of the employee with EmployeeID 1.
d. DELETE:
sql
DELETE FROM Employees
WHERE EmployeeID = 1;
a. GRANT:
sql
GRANT SELECT, INSERT ON Employees TO User1;
This command gives User1 permission to select and insert data into the Employees table. b.
REVOKE:
sql
REVOKE INSERT ON Employees FROM User1;
This command revokes the insert permission from User1 on the Employees table. 4.
a. COMMIT:
sql
BEGIN TRANSACTION;
UPDATE Employees SET HireDate = '2023-01-01' WHERE EmployeeID = 2;
COMMIT;
This command starts a transaction, updates the hire date for a specific employee, and then
commits the transaction, making the change permanent.
b. ROLLBACK:
sql
BEGIN TRANSACTION;
DELETE FROM Employees WHERE EmployeeID = 2; ROLLBACK;
This command starts a transaction, attempts to delete a specific employee, but then rolls back the
transaction, undoing the deletion.
43
CHAPTER SIX
Interface design is a crucial aspect of system design, focusing on creating user interfaces (UIs)
that facilitate interaction between users and the system. Good interface design ensures that users
can efficiently and effectively complete tasks, enhancing their overall experience. Here are some
key principles of interface design, along with examples to illustrate each principle:
1. Simplicity
2. Consistency
3. Feedback
4. Error Prevention and Handling
5. Visibility
6. Affordance
7. Accessibility
1. Simplicity Principle:
• Keep the interface as simple as possible. Avoid unnecessary elements and prioritize
essential functions.
Example:
• Google Search Page: The Google search homepage is a prime example of simplicity. It has
a clean interface with just a logo, a search bar, and a few buttons. This simplicity makes it
2. Consistency
Principle:
• Ensure that the interface is consistent in terms of layout, design elements, and behaviors.
Users should not have to relearn how to use different parts of the application.
Example:
• Microsoft Office Suite: All applications within the Microsoft Office suite (Word, Excel,
PowerPoint) have a consistent ribbon interface. This consistency allows users to transfer
their knowledge from one application to another without a steep learning curve.
3. Feedback Principle:
• Provide immediate and clear feedback to users about the results of their actions. Feedback
helps users understand whether their actions were successful or if an error occurred.
Example:
• Form Submission Feedback: When users submit a form online, a good interface will
provide feedback such as a success message ("Your form has been submitted
• Design the interface to prevent errors as much as possible. When errors do occur, provide
helpful error messages that guide users on how to correct them.
Example:
• Input Validation: In a sign-up form, preventing errors can be achieved by validating user
input in real-time. For example, highlighting a password field with a red border if it doesn't
meet complexity requirements and providing a message like "Password must be at least 8
characters long."
5. Visibility Principle:
45
• Make important information and options visible to users. Avoid hiding critical features
and ensure that users can easily find what they need.
Example:
• Navigation Menus: Websites often use visible navigation menus at the top of the page,
allowing users to easily access different sections of the site without searching.
6. Affordance Principle:
• Design elements should suggest their function. Users should be able to understand how to
interact with an element based on its appearance.
Example:
• Buttons: Buttons should look clickable, typically designed with a raised or 3D effect and
changing appearance (e.g., color change) when hovered over, indicating they can be
clicked.
7. Accessibility Principle:
• Ensure the interface is accessible to all users, including those with disabilities. Follow
accessibility standards to provide an inclusive experience.
Example:
• Screen Reader Support: Websites and applications should support screen readers by
using semantic HTML and ARIA (Accessible Rich Internet Applications) attributes. For
instance, adding alt text to images ensures visually impaired users understand the content.
Combining Principles: A Practical Example
1. Simplicity: The checkout page should have a clean layout with only essential fields
(shipping address, payment method).
2. Consistency: Use the same button styles and input field designs as the rest of the site.
3. Feedback: Show a progress bar indicating checkout steps and provide real-time feedback
for each input field (e.g., credit card validation).
4. Error Prevention and Handling: Prevent errors by auto-filling known information and
providing clear error messages if inputs are incorrect.
5. Visibility: Ensure all necessary actions (e.g., applying a discount code, confirming the
order) are clearly visible.
6. Affordance: Use clearly defined buttons for actions like "Continue" and "Place Order,"
with a distinct clickable appearance.
7. Accessibility: Ensure the page is navigable via keyboard and compatible with screen
readers, with all interactive elements properly labeled.
By adhering to these principles, designers can create interfaces that are intuitive, efficient, and
pleasant for users to interact with.
Usability principles in system design focus on making systems easy to use, learn, and efficient
for users to achieve their goals. These principles aim to improve user satisfaction and
productivity. Here are some key usability principles, along with examples to illustrate each:
1. Learnability
2. Efficiency
3. Memorability
4. Error Handling
5. Satisfaction
47
1. Learnability
Principle:
• The system should be easy for new users to learn. Users should be able to accomplish
basic tasks quickly when they first encounter the design.
Example:
• Apple’s iOS Interface: iOS uses intuitive gestures (like swipe, tap, and pinch) that new
users can learn quickly. The use of icons and consistent design elements across apps helps
2. Efficiency Principle:
• Once users have learned the system, they should be able to perform tasks quickly and
efficiently.
Example:
keyboard shortcuts for common actions (e.g., Ctrl+C for copy, Ctrl+Z for undo). These
3. Memorability Principle:
• The system should be easy to remember, so that users can return to the system after a
period of not using it without having to learn everything all over again.
Example:
• E-commerce Websites: Websites like Amazon maintain consistent navigation and layout
across sessions. Features like the search bar, product categories, and account management
remain in familiar locations, making it easy for users to return and continue shopping
without re-learning the interface.
4. Error Handling Principle:
• The system should prevent errors as much as possible and provide clear, helpful messages
to guide users if errors occur. Users should be able to recover easily from errors.
Example:
• Form Validation Messages: When filling out an online form, real-time validation checks
(e.g., checking email format or password strength) help users correct errors before
submission. If an error occurs, clear messages like "Please enter a valid email address"
• The system should be pleasant to use, with a visually appealing design and interactions
that feel rewarding and enjoyable.
Example:
• Gaming Interfaces: Video games often have engaging, visually rich interfaces that
enhance user satisfaction. Games like “The Legend of Zelda: Breath of the Wild” offer
intuitive controls, beautiful graphics, and satisfying feedback for user actions (like the
sound effects and animations when solving puzzles).
1. Learnability:
o Onboarding Tutorial: The application provides a quick tutorial for new users,
highlighting key features like checking balances, transferring money, and paying
bills.
2. Efficiency:
49
o Quick Actions: Common tasks such as checking balance, transferring funds, and
viewing recent transactions are accessible from the dashboard with a single click.
3. Memorability:
o Consistent Layout: The layout remains consistent across sessions, with main
navigation options like Accounts, Transfers, and Settings always in the same
location.
4. Error Handling:
o Clear Messages: If a transfer fails due to insufficient funds, the system provides a
clear message explaining the issue and suggesting potential actions (e.g.,
depositing money or selecting a different account).
5. Satisfaction:
o User-Friendly Design: The application uses a clean, modern design with pleasing
colors and icons. Animations (like a spinning icon while waiting for transaction
confirmation) make the experience more engaging.
CHAPTER SEVEN
System Implementation
Waterfall Methodology
1. Requirement Analysis
2. System Design
3. Implementation
4. Integration and Testing
5. Deployment
6. Maintenance
1. Requirement Analysis:
o Gather all requirements from stakeholders, such as calculating salaries, tax
deductions, and generating pay slips. Document these requirements
comprehensively.
2. System Design:
o Design the system architecture, including database design, user interface layouts,
and the overall structure of the application. Create detailed design documents and
diagrams.
3. Implementation:
51
o Developers start coding based on the design documents. They implement each
module, such as employee data management, salary calculation, and report
generation.
4. Integration and Testing:
o Integrate all the modules and test the system as a whole. Perform rigorous testing
to ensure that all parts work together and meet the initial requirements.
5. Deployment:
o Deploy the system to the production environment. Users start using the system for
their payroll processing.
6. Maintenance:
o Address any issues or bugs that arise during usage. Implement updates and
enhancements based on user feedback.
Advantages of Waterfall:
Disadvantages of Waterfall:
Agile Methodology
1. Sprint Planning:
o Define the sprint goal and select user stories (features or tasks) from the product
backlog to work on during the sprint. For example, implementing user
authentication and profile management.
2. Sprint Execution:
o Developers and designers collaborate to implement the selected user stories. Daily
stand-up meetings help track progress and address any issues.
3. Review and Retrospective:
o At the end of the sprint, conduct a sprint review where the team demonstrates the
working features to stakeholders. Gather feedback and discuss what went well and
what can be improved in the sprint retrospective.
4. Next Sprint:
o Plan the next sprint based on the feedback and remaining backlog. Continuously
improve the product through successive iterations.
Advantages of Agile:
Disadvantages of Agile:
53
• Scope creep due to constant changes can affect project timelines. Comparison of
Agile:
Coding:
Coding, in the context of software development, refers to the process of writing instructions in a
programming language to create software applications, websites, or other digital products. It
involves translating the logical steps of an algorithm or design into a language that a computer
can understand and execute.
Example: python
# Python code to calculate the factorial of a number
def factorial(n):
if n == 0:
return 1 else:
return n * factorial(n-1)
result = factorial(5)
print("Factorial of 5:", result)
In this Python example, the factorial function calculates the factorial of a number using
recursion. The function is called with factorial(5), and the result is printed.
2. Coding Techniques:
Coding techniques are strategies and best practices used by developers to write high-quality,
efficient, and maintainable code. These techniques encompass various aspects of coding,
including readability, performance optimization, error handling, and code organization.
a. Modularization:
• Technique: Breaking down code into modular components or functions, each responsible
for a specific task.
• Example: In a web application, separate modules can handle user authentication, data
processing, and user interface rendering.
b. Commenting:
• Technique: Adding comments within the code to explain its functionality, logic, and
purpose.
• Example: # Calculate the factorial of a number before the factorial function declaration
in the previous Python example.
c. Error Handling:
python
try:
55
result = 10 / 0 except
ZeroDivisionError: print("Error:
Division by zero!")
d. Code Reusability:
• Technique: Writing code in a way that promotes reuse across different parts of the
application or in future projects.
• Example: Creating utility functions or libraries for common tasks, such as date
Optimization:
f. Version Control:
• Technique: Using version control systems (e.g., Git) to track changes to code, collaborate
with other developers, and manage project history.
• Example: Committing code changes with meaningful messages and branching for feature
development or bug fixes.
• Technique: Writing tests before writing the actual code to ensure that code meets
requirements and behaves as expected.
• Example: Writing unit tests using frameworks like unittest in Python to verify the
functionality of individual components.
h. Code Reviews:
• Technique: Conducting peer reviews of code to identify issues, provide feedback, and
ensure adherence to coding standards.
• Example: Using tools like GitHub Pull Requests for collaborative code reviews before
merging changes into the main codebase.
i. Naming Conventions:
j. Security Measures:
k. Documentation:
l. Code Refactoring:
• Technique: Restructuring and optimizing existing code without changing its external
behavior to improve readability, maintainability, and performance.
• Example: Identifying duplicated code blocks and extracting them into reusable functions
or classes.
57
• Technique: Leveraging multi-threading, asynchronous programming, or parallel
processing to improve performance and responsiveness in concurrent environments.
• Example: Using Python's asyncio module for asynchronous I/O operations or
multiprocessing module for parallel processing tasks.
CHAPTER EIGHT
Testing and Quality Assurance (QA) are critical components of software development, ensuring
that products meet requirements, function as intended, and are reliable and user-friendly. Here's
an overview of testing and QA:
Testing:
Testing is the process of evaluating a system or its components with the intent to find whether it
satisfies the specified requirements or not. There are various types of testing, including:
1. Early Issue Identification: Testing and QA help catch defects early in the development
lifecycle, reducing the cost and effort required to fix them.
2. Customer Satisfaction: Ensuring that the software meets user requirements and
expectations improves customer satisfaction and reduces support and maintenance costs.
3. Brand Reputation: High-quality software enhances the reputation of the organization
and builds trust with customers.
59
4. Compliance and Security: Testing and QA help ensure that software complies with
regulatory requirements and is secure against potential threats.
5. Cost Reduction: By identifying and fixing defects early, testing and QA help reduce the
overall cost of software development and maintenance.
Integration testing is a vital phase in the software development lifecycle where individual units
or components are combined and tested as a group. The aim is to ensure that these integrated
units function together seamlessly as expected. Here's an overview of integration testing with
examples:
For instance, to test the checkout process, integration tests might include:
• Testing whether a registered user can add items to the shopping cart.
• Testing whether the selected items are correctly displayed in the checkout page.
• Testing whether the payment process is successfully initiated after confirming the order.
In a banking system, integration testing ensures that different modules like account management,
transaction processing, and customer service work together smoothly.
For a mobile application, integration testing ensures that various components such as UI
elements, backend services, and databases integrate seamlessly.
For example:
• Testing whether user interactions on the mobile app (such as button clicks) trigger the
expected backend processes.
• Testing whether data entered by the user in the app's forms is correctly stored in the
database.
• Testing whether updates made in the database reflect accurately in the app's UI.
1. Big Bang Integration: All components are integrated simultaneously, and the entire
system is tested as a whole.
2. Top-Down Integration: Testing starts from the top-level modules, with lower-level
modules simulated using stubs or mock objects.
61
3. Bottom-Up Integration: Testing starts from the lower-level modules, with higher-level
modules simulated using drivers.
4. Incremental Integration: Modules are integrated and tested incrementally until the
entire system is integrated.
• Detects Interface Issues: Helps identify issues related to data flow, APIs, or
dependencies between modules.
• Early Detection of Defects: Catches integration issues early in the development
lifecycle, reducing debugging efforts later on.
• Ensures Interoperability: Verifies that different components work together seamlessly,
ensuring the system's overall functionality.
CHAPTER NINE
System Deployment
In this stage, the software is compiled and packaged for deployment. This may involve:
Example: A software development team compiles their Java application into a WAR file, which
is a package used to deploy web applications on Java application servers.
3. Testing
Before deploying to production, it's crucial to test the deployment package in an environment
similar to production.
4. Deployment
Deployment can be done using different strategies depending on the project’s requirements:
• Manual Deployment: Involves manually transferring files and configuring settings. It’s
time-consuming and prone to errors but sometimes necessary for smaller projects.
63
• Automated Deployment: Uses scripts and tools to automate the deployment process,
reducing errors and speeding up the process.
• Blue-Green Deployment: Running two identical production environments (blue and
green). The new version is deployed to the blue environment while the green environment
continues serving users. After testing, traffic is switched to the blue environment.
• Canary Deployment: Deploying the new version to a small subset of users before rolling
it out to the entire user base.
Example: A financial services company uses an automated deployment tool like Jenkins to
deploy their new trading platform. They initially use a canary deployment strategy to release the
new features to 5% of users, monitoring for any issues before a full rollout.
Example: An education platform deploys a new learning management system. They configure it
with the correct database connections, migrate data from the old system, and initialize services to
ensure it’s operational.
Once deployed, continuous monitoring and support are essential to ensure the system runs
smoothly:
• Monitoring: Using tools to monitor the system’s performance, error logs, and user
activity.
• Incident Management: Having a process in place to handle any issues that arise
postdeployment.
• User Support: Providing support to users for any issues or questions they have about the
new system.
Example: After deploying a new customer relationship management (CRM) system, a company
uses monitoring tools like New Relic to track system performance and error rates. They also
have a support team ready to assist users with any issues.
Deployment Strategies
Deployment strategies are methods and practices used to release new software or updates into
production environments. These strategies aim to minimize downtime, reduce risk, ensure
smooth transitions, and provide a positive user experience. Here are some common deployment
strategies, each with detailed explanations and examples:
1. Recreate Deployment
Description: The recreate strategy involves shutting down the old version of the application
completely before deploying the new version. This method ensures that only one version is
running at any time, but it can cause significant downtime.
Use Case: Suitable for small applications or non-critical systems where downtime is acceptable.
Example: A small blog website might use a recreate deployment strategy, where the site is taken
offline briefly to apply updates and then brought back online.
2. Rolling Deployment
Description: In a rolling deployment, new versions of the application are gradually rolled out to
a subset of servers or instances, replacing the old version incrementally. This approach helps in
reducing downtime and minimizing risks.
Use Case: Ideal for applications with multiple instances, like web services or microservices.
65
Example: A cloud-based email service might use a rolling deployment strategy, updating one
server at a time. This ensures that the service remains available even during updates, as not all
servers are taken offline simultaneously.
3. Blue-Green Deployment
Use Case: Best for applications where zero downtime and quick rollback capabilities are crucial.
Example: An online banking platform might use blue-green deployment to ensure zero
downtime during updates. Users are switched to the new environment (green) only after
thorough testing, and if issues are detected, traffic can quickly revert to the old environment
(blue).
4. Canary Deployment
Description: Canary deployment releases the new version to a small subset of users or servers
initially. This approach allows monitoring of the new version's performance and impact before a
full rollout.
Use Case: Useful for applications where changes need to be tested in a live environment without
affecting all users immediately.
Example: A social media platform might use a canary deployment to release new features to 5%
of its user base. This way, developers can observe how the new features perform and gather user
feedback before making the features available to all users.
Use Case: Effective for applications where user experience and behavior need to be tested and
analyzed.
Example: An e-commerce website might use A/B testing to deploy two different checkout
processes. By analyzing user interactions and conversion rates, the company can determine
which process is more effective.
6. Shadow Deployment
Description: In a shadow deployment, the new version is deployed alongside the old version, but
only receives a copy of the real user traffic. This allows for thorough testing without affecting the
actual user experience.
Use Case: Ideal for testing the new version under real-world conditions without impacting users.
Example: A financial trading platform might use shadow deployment to test a new trading
algorithm. The new version processes real-time data and transactions without influencing the
actual trades, allowing developers to ensure its accuracy and performance.
7. Feature Toggles (Feature Flags)
Description: Feature toggles involve deploying new features in the codebase but keeping them
hidden or disabled by default. The features can be toggled on for specific users or groups for
testing and gradually rolled out.
Use Case: Suitable for applications requiring frequent updates and testing of new features
without full deployment.
67
Example: A software as a service (SaaS) application might use feature toggles to release new
reporting features to beta testers. The feature is integrated into the main codebase but is only
visible and usable by selected users until fully tested.
User training and documentation are crucial components of software deployment and adoption.
They ensure that end users can effectively use the new system and understand its features,
ultimately leading to higher productivity and satisfaction. Here’s a detailed look at user training
and documentation, including best practices and examples:
User Training
Purpose: User training aims to equip users with the necessary knowledge and skills to operate
the software efficiently. Effective training minimizes user frustration, reduces errors, and
maximizes the benefits of the software.
• Understand User Needs: Tailor the training content to the specific needs and skill levels
of the users.
• Interactive Content: Incorporate hands-on activities, simulations, and Q&A sessions to
engage users.
• Feedback Mechanism: Allow users to provide feedback on the training to continually
improve the process.
• Follow-Up Support: Offer ongoing support and refresher courses to reinforce learning.
Documentation
Purpose: Documentation provides users with reference materials that explain how to use the
software, troubleshoot issues, and understand the system's functionalities. It serves as a longterm
resource for users to refer to when needed.
69
Types of Documentation
1. User Manuals o Description: Comprehensive guides that cover all aspects of using the
software.
o Content: Installation instructions, feature descriptions, step-by-step usage
instructions, and troubleshooting tips.
o Example: A user manual for a project management tool might include sections on
creating projects, assigning tasks, tracking progress, and generating reports.
2. Quick Start Guides o Description: Concise documents that help users get started with
the software quickly.
o Content: Basic setup instructions, key features, and initial configuration steps.
o Example: A quick start guide for a new email client might include steps for
setting up email accounts, sending emails, and organizing the inbox.
3. FAQs and Knowledge Bases o Description: Collections of frequently asked questions
and their answers, along with a searchable database of articles.
o Content: Common user questions, troubleshooting steps, and best practices.
o Example: A knowledge base for an e-commerce platform might include articles
on managing product listings, processing orders, and handling customer inquiries.
4. Online Help Systems o Description: Integrated help systems within the software that
provide contextsensitive assistance.
o Content: Tooltips, help buttons, and searchable help topics.
o Example: An accounting software might have an online help system that offers
explanations and tips when users hover over specific fields or options.
5. Video Tutorials o Description: Visual and audio guides that demonstrate how to use the
software. o Content: Step-by-step demonstrations, feature overviews, and common tasks.
o Example: A video tutorial for a graphic design tool might show users how to
create a new project, use various design tools, and export their work.
• Clear and Concise: Use simple language and clear instructions to make the
documentation easy to understand.
• Well-Organized: Structure the documentation logically with a clear table of contents and
index for easy navigation.
• Visual Aids: Include screenshots, diagrams, and videos to complement the text and
enhance understanding.
• Regular Updates: Keep the documentation up-to-date with the latest software features
and changes.
• Accessible Formats: Provide documentation in multiple formats (PDF, web-based,
mobile-friendly) to accommodate different user preferences.
CHAPTER TEN
System Maintenance
System maintenance refers to the activities involved in ensuring that a software system remains
functional, reliable, and up-to-date after it has been deployed. Maintenance is crucial for the
longevity and performance of any system, addressing issues that arise and adapting the system to
changing requirements. Here’s a detailed explanation of system maintenance, including its types,
processes, and best practices:
71
1. Corrective Maintenance o Purpose: Fixing errors and bugs that are identified after the
software is in use.
o Example: If users encounter a bug that causes the application to crash when
performing a specific action, corrective maintenance would involve diagnosing
the problem and implementing a fix.
2. Preventive Maintenance o Purpose: Preventing potential issues by making proactive
improvements and updates.
o Example: Regularly updating software libraries and dependencies to the latest
versions to avoid security vulnerabilities and compatibility issues.
3. Adaptive Maintenance o Purpose: Modifying the software to keep it compatible with
changing environments and requirements.
o Example: Updating the software to work with a new operating system version or
integrating with a new third-party service that the business has adopted.
4. Perfective Maintenance o Purpose: Enhancing and improving the software based on
user feedback and new requirements.
o Example: Adding new features or improving the user interface to make the
software more user-friendly and efficient based on user feedback.
Maintenance Processes
1. Issue Tracking and Management o Description: Using tools to log, track, and manage
issues reported by users or identified during monitoring.
o Example: Using a system like Jira or GitHub Issues to track bugs, feature requests,
and improvements.
2. Diagnosis and Analysis o Description: Investigating reported issues to understand their
root causes and determine appropriate solutions.
o Example: Conducting a code review or using debugging tools to identify why a
particular feature is not working as expected.
3. Implementation of Changes o Description: Developing and deploying fixes, updates, or
new features to address identified issues or enhancements.
o Example: Writing and testing new code, followed by deploying the update to the
production environment.
4. Testing and Validation o Description: Ensuring that the changes made do not
introduce new issues and that they resolve the original problem.
o Example: Running unit tests, integration tests, and user acceptance tests (UAT) on
the updated software to validate the changes.
5. Release Management o Description: Managing the deployment of updates and
changes to the production environment in a controlled and systematic manner.
o Example: Using deployment strategies like rolling updates or blue-green
deployments to minimize disruption during the release of new updates.
6. Documentation Updates o Description: Keeping user manuals, help files, and system
documentation current with the latest changes. o Example: Updating the user guide to
include new features or changes made to existing functionalities.
7. Monitoring and Feedback o Description: Continuously monitoring the system for
performance, reliability, and user feedback to identify areas for further improvement.
73
o
Example: Using monitoring tools like New Relic or Datadog to track system
performance metrics and error rates, and collecting user feedback through surveys
or support tickets.
1. Regular Updates and Patching o Keep software up-to-date with the latest security
patches and updates to ensure it remains secure and compatible with other systems.
2. Automated Testing o Implement automated testing to quickly identify and fix issues as
part of the maintenance process, ensuring that updates do not introduce new bugs.
3. Clear Documentation o Maintain clear and detailed documentation of all maintenance
activities, changes made, and the current state of the system to facilitate future
maintenance efforts.
4. Proactive Monitoring o Use monitoring tools to continuously observe system
performance and detect potential issues before they impact users.
5. User Feedback Integration o Actively collect and analyze user feedback to prioritize
maintenance tasks and improvements that will have the most significant impact on user
satisfaction and productivity.
6. Risk Management
o Assess and manage the risks associated with maintenance activities, including the
potential impact on system availability and performance.
Software Updates
Software updates are crucial for maintaining the security, functionality, and performance of
software applications. These updates can range from minor patches to major version upgrades
and typically address bug fixes, security vulnerabilities, and feature enhancements.
Types of Software Updates
Version Control
Version control is a system that manages changes to software code, allowing multiple developers
to collaborate efficiently and track the history of changes. It is an essential tool in modern
software development, ensuring consistency and enabling team collaboration.
1. Frequent Commits o Commit changes frequently with meaningful messages to keep the
revision history detailed and manageable.
o Example: Commit each small feature or bug fix separately with descriptive
messages.
2. Branching Strategy o Use a clear branching strategy to manage development, such as
GitFlow or trunkbased development.
o Example: Using feature branches for new features, a develop branch for
integration, and a main branch for stable releases.
3. Code Reviews
Implement code reviews to ensure code quality and share knowledge among team
members.
o Example: Reviewing pull requests before merging to the main branch.
o
4. Continuous Integration (CI) o Use CI tools to automatically test and build the codebase
with each commit, ensuring that changes do not break the application.
o Example: Using Jenkins or GitHub Actions to run tests and build the application on
each commit.
5. Tagging and Versioning o Use tags to mark specific points in the history as important
releases or milestones.
o Example: Tagging commits with version numbers like v1.0.0 for major releases.
Exercisers
Question 1: A local library wants to develop a computerized system to manage its book
collection, borrowing, and returning processes. The system should allow librarians to:
1. Add, edit, and delete book records; Manage borrower information; Track book borrowing and
returning and Generate reports on book availability and borrowing history. As System analyst
do the following;
i. Identify the functional requirements of the system
ii. Draw a use case diagram to represent the system's functionality
iii. Design an entity-relationship diagram (ERD) to represent the system's data structure
iv. Describe the system's user interface and user experience
Question2:
Being a System analyst, you are asked to develop an online shopping system for an e-commerce
company. The system should allow customers to: 1. Browse products by category; Add products
to cart; Checkout and make payments and Track order status. Do the following as system analyst;
i. Identify the stakeholders and their needs
ii. Create a use case diagram to represent the system's functionality
iii. Design a data flow diagram (DFD) to show the system's data processing
iv. Describe the system's security features
Question3:
Design an online shopping system for an e-commerce company that allows customers to browse
products, add them to cart, and checkout. The system should also allow administrators to manage
products, orders, and customer information.
Requirements:
1. Customer Features:
- Browse products by category
- Search products by keyword
- Add products to cart
- Checkout and pay for orders
2. Administrator Features:
- Manage products (add, edit, delete)
o
- Manage orders (view, update status)
- Manage customer information (view, edit)
Do the following
i. Identify the functional requirements of the system
ii. Draw a use case diagram to represent the system's functionality
iii. Design an entity-relationship diagram (ERD) to represent the system's data structure
iv. Describe the system's user interface and user experience
Recommended Textbooks:
Reference
1. Thoumas Adewumi Universitym System Analysis and Design
2. National Open University of Nigeria System Analysis and Design CIT212