sdlc part1
sdlc part1
A project is a planned series of tasks or activities that are undertaken to achieve a specific goal or objective
within a defined timeframe.
1. Objective: The purpose or goal of the project, which can be to create something new, solve a
problem, improve a process, or implement a change.
2. Scope: The specific boundaries of the project, including what will and will not be included in its
work.
3. Resources: The people, materials, technology, and budget required to complete the project.
4. Timeline: The schedule, including deadlines for tasks and milestones.
5. Tasks: The individual activities or steps that need to be completed to achieve the project’s objective.
6. Team: The group of individuals responsible for carrying out the project tasks
Software project
1. Objective:
o Develop or improve a software application to meet specific requirements or solve a problem.
2. Scope:
o Defines what features and functionality the software will include, and sometimes what will be
excluded.
3. Requirements Gathering:
o Identifying the needs of users or stakeholders to ensure the software meets business goals and
user expectations. Requirements can be functional (what the software does) and non-
functional (performance, security, etc.).
4. Planning:
o Detailed planning of tasks, timelines, and resources to ensure the project progresses
smoothly. This can include task breakdowns, assigning team members, and scheduling
milestones.
5. Design:
o The process of defining the architecture, components, interfaces, and data of the software.
This includes both high-level system design and detailed design for each feature.
6. Development:
o The actual writing of code, implementation of features, and integration of different
components of the software.
7. Testing:
o Ensuring the software works as intended and is free from defects. Testing can include unit
testing, integration testing, system testing, and user acceptance testing.
8. Deployment:
o The process of making the software available for use. This could be deploying to production
servers, distributing apps, or releasing updates.
9. Maintenance:
COMPILED BY: Er.Gaurab Mishra
HOD, COMPUTER SCIENCE
K.M.C COLLEGE, +2
oOngoing work to fix bugs, improve performance, or add new features after the software is
deployed.
10. Documentation:
o Creating user manuals, technical documentation, or internal documentation to help with
future development or troubleshooting.
A software project manager is responsible for planning, executing, and overseeing software development
projects. Their role is to ensure that the project is completed on time, within budget, and meets the required
specifications and quality standards. They work closely with software developers, designers, testers, and
stakeholders to coordinate the project's different aspects, making sure all tasks align with the project's goals.
1. Project Planning:
o Define the scope, objectives, and deliverables of the project.
o Create detailed project plans, including timelines, milestones, and resource allocation.
o Determine the project budget and ensure cost-efficiency.
2. Team Management:
o Assemble and manage the software development team, including developers, testers,
designers, and other key members.
o Delegate tasks, assign roles, and ensure the team has the tools and resources they need.
o Foster communication and collaboration within the team.
3. Risk Management:
o Identify potential risks that could affect the project’s success (e.g., technical challenges,
budget overruns, and time constraints).
o Develop mitigation strategies to handle these risks effectively.
o Monitor and manage risks throughout the project lifecycle.
4. Scheduling and Monitoring:
o Track progress against the project plan, ensuring that tasks and milestones are completed on
schedule.
o Monitor the development process and make adjustments to keep the project on track, such as
reallocating resources or adjusting deadlines when necessary.
o Use project management software tools to monitor tasks, timelines, and team productivity.
5. Stakeholder Communication:
o Communicate project status, challenges, and progress to stakeholders, including clients,
upper management, or external partners.
o Manage stakeholder expectations and ensure that their requirements are met.
6. Quality Assurance:
o Ensure that the software meets quality standards, testing, and user requirements before
deployment.
o Coordinate with quality assurance (QA) teams to set up testing processes and feedback loops.
7. Budget Management:
o Track project costs and manage the budget to prevent overspending.
o Optimize resources to achieve the project's goals while staying within financial constraints.
8. Documentation:
o Maintain detailed records of the project’s progress, including changes to the scope, timelines,
and requirements.
o Ensure proper documentation for future reference or project audits.
1. Interviews:
o Description: Interviews involve one-on-one or group discussions between business analysts
and stakeholders (users, clients, subject matter experts) to understand their needs.
o Types: Structured (pre-defined set of questions) and unstructured (open-ended discussions).
2. Questionnaires/Surveys:
o Description: Predefined questions are distributed to a large audience to gather information
about requirements from a broad range of stakeholders.
3. Workshops:
o Description: Interactive group sessions where stakeholders, users, and the project team
collaborate to identify requirements, discuss issues, and propose solutions.
4. Focus Groups:
o Description: A moderated group discussion involving selected users or stakeholders to
gather opinions and feedback on specific aspects of the system.
5. Observation (Job Shadowing):
o Description: Analysts observe users in their natural working environment to understand how
they perform their tasks and identify their needs and challenges.
6. Document Analysis:
o Description: Review of existing documentation such as business process flows, system
manuals, reports, or previous project records to understand current processes and systems.
7. Prototyping:
o Description: Creating an early version or mockup of the system to allow users to visualize
and interact with the proposed solution. Users provide feedback, which is then used to refine
the requirements.
8. Brainstorming:
o Description: A collaborative session where stakeholders and team members suggest ideas
and solutions without criticism. All ideas are documented for further analysis.
1. Technical Feasibility:
COMPILED BY: Er.Gaurab Mishra
HOD, COMPUTER SCIENCE
K.M.C COLLEGE, +2
o Focus: Determines whether the organization has the technical expertise, infrastructure, and
technology required to complete the project.
o Questions addressed:
Is the required technology available, and does the organization have the technical
skills to implement the solution?
Are there software, hardware, or technical tools that support the proposed system?
Can the system be integrated with existing technologies?
2. Economic Feasibility (Cost-Benefit Analysis):
o Focus: Analyzes the financial aspects of the project, including the costs of development,
implementation, and ongoing maintenance, and compares them with the expected financial
benefits.
o Questions addressed:
What are the initial and ongoing costs (e.g., software, hardware, labor)?
What are the projected benefits, such as increased revenue or cost savings?
Is the return on investment (ROI) positive, and when will the project break even?
3. Operational Feasibility:
o Focus: Evaluates whether the project meets the operational requirements and whether it will
be accepted by users and fit within the current workflows.
o Questions addressed:
Will the system meet the needs of the users?
Are the organization's current operations and processes compatible with the new
system?
How will the users and stakeholders react to the new system? Will it cause resistance?
4. Schedule Feasibility:
o Focus: Assesses whether the project can be completed within the required timeframe.
o Questions addressed:
Is the proposed timeline realistic given the scope of the project?
Are there enough resources (time, people, and tools) to meet the deadlines?
What are the consequences of missing the deadline?
5. Legal and Regulatory Feasibility:
o Focus: Evaluates whether the project complies with legal, regulatory, and contractual
requirements.
o Questions addressed:
Does the project comply with data protection laws?
Are there any intellectual property, licensing, or copyright issues?
Will the project meet industry-specific regulatory standards (e.g., healthcare,
finance)?
6. Environmental Feasibility:
o Focus: Analyzes the potential environmental impact of the project, particularly for industries
where environmental regulations are important.
o Questions addressed:
Does the project comply with environmental regulations and standards?
Will the system’s development or use cause any significant environmental impact?
3. System Design:
o System design is the phase where the structure and architecture of the system are defined,
laying out how the system will meet the specified requirements.
o The system design phase translates requirements into a blueprint for the system’s
architecture. This includes both high-level design (defining system components and their
interactions) and low-level design (detailed design of each component).
Focus: Provides an overall system architecture and design framework. It defines the structure of the
system at a macro level, focusing on how different components and subsystems interact with each
other.
Key Components:
o System Architecture: Outlines the overall architecture of the system, including hardware,
software, networks, databases, and interfaces.
o Modules/Subsystems: Identifies the major components (subsystems or modules) of the
system and how they interact.
o Data Flow: Describes the flow of data across the system and between components, including
any data exchanges with external systems.
o Technological Choices: Specifies the technologies, platforms, frameworks, and databases
that will be used in the system.
o High-Level Diagrams: Includes diagrams like Entity-Relationship Diagrams (ERD), Data
Flow Diagrams (DFD), and Component Diagrams to visualize the system’s structure.
Example:
o Designing the architecture of an online shopping platform where components like the user
interface, payment system, inventory system, and database interact with each other.
Focus: Provides detailed information about each system component and module. It zooms in on the
design at a micro level, specifying how individual components will be implemented.
Key Components:
o Detailed Module Design: Breaks down each component or module identified in the HLD
into smaller, more detailed elements, defining their functionality, logic, and interaction.
o Data Structures and Algorithms: Specifies the data structures (arrays, lists, trees, etc.) and
algorithms to be used in the implementation of each module.
o Database Design: Includes table structures, data types, constraints, relationships, and indexes
in detail, often supported by Data Dictionary.
o Interfaces: Defines detailed interactions between different components, systems, and
external systems, including input/output formats, protocols, and communication methods.
o Logic Flow: Provides a detailed flow of logic, often described using pseudocode,
flowcharts, or sequence diagrams.
o Detailed Diagrams: Includes more diagrams such as Class Diagrams, State Diagrams, and
Sequence Diagrams that define specific interactions and behaviors of the system.
Example:
o Designing the internal logic and data structure of the payment module for the online shopping
platform, including transaction handling, payment verification, and error handling.
In the Software Development Life Cycle (SDLC), top-down and bottom-up approaches refer to two
distinct methods of designing, developing, and implementing systems or software applications. Both
approaches focus on how the system is structured and the order in which components or modules are
developed and integrated.
1. Top-Down Approach:
Focus: Starts with the overall system design and then breaks it into smaller, manageable components or
modules.
Process:
1. Begin with a high-level description of the entire system (often based on requirements and use
cases).
2. Break down the system into subsystems, then further break down subsystems into smaller modules.
3. Continue refining each component until the design is detailed enough to implement.
4. Code and develop each module from the top level to the bottom.
Example:
In the top-down approach, an online banking system would first be divided into major subsystems such as
account management, transactions, and customer service. Each subsystem would then be further broken
down into smaller components like login, balance inquiry, fund transfer, etc.
Bottom-Up Approach:
The bottom-up approach is a method where the development starts with the individual components or
modules at the lowest level of abstraction, which are then integrated to form higher-level systems. The
system is built from the ground up by focusing first on designing and developing the smaller, more detailed
parts.
Focus: Starts with the development of low-level modules and components and integrates them to build up
the overall system.
Process:
1. Begin by identifying and developing low-level, independent modules (which can be as small as
individual functions or classes).
2. These modules are gradually combined or integrated to form larger subsystems.
3. Continue integrating the subsystems until the entire system is built.
4. The final system is formed through the assembly of previously created low-level modules.
Control Flow: Control flows from lower-level modules to the top-level system.
Example:
In the bottom-up approach, a payment processing system might start by developing small, reusable modules
like payment validation, currency conversion, and transaction logging. These modules would then be
combined into a larger transaction processing system before integrating the complete payment system with
other parts of the software.
4. System Development :
o In the development phase, the actual coding takes place. The design is translated into a
functional software product by writing code based on the specifications.
COMPILED BY: Er.Gaurab Mishra
HOD, COMPUTER SCIENCE
K.M.C COLLEGE, +2
o Developers build individual components, integrate them, and implement databases,
algorithms, and user interfaces.
In system development, a variety of tools are used to facilitate and streamline different aspects of the
software development process. These tools help in planning, designing, coding, testing, and
maintaining software systems. Here’s an overview of different types of system development tools:
3. Design Tools:
Purpose: Create visual representations of system architecture, data flow, and user interfaces.
Examples:
o Microsoft Visio: A diagramming tool used for creating flowcharts, network diagrams, and
other visual representations.
o Lucidchart: An online tool for creating diagrams, flowcharts, and other design documents.
o Balsamiq Mockups: For creating wireframes and mockups of user interfaces.
o Figma: A collaborative interface design tool for creating high-fidelity UI designs and
prototypes.
4. Development Environments:
Purpose: Provide an integrated environment for coding, debugging, and testing software.
Examples:
o Integrated Development Environments (IDEs): Such as Visual Studio, Eclipse, and
IntelliJ IDEA.
o Code Editors: Such as Visual Studio Code, Sublime Text, and Atom.
6. Testing Tools:
Purpose: Perform automated and manual testing to ensure software quality and performance.
Examples:
o Selenium: An open-source tool for automating web browsers.
o JUnit: A framework for writing and running unit tests in Java.
o TestNG: A testing framework inspired by JUnit, used for test configuration and management.
o Jenkins: An automation server that supports continuous integration and continuous delivery
(CI/CD).
5. System Testing:
o After development, the system undergoes testing to identify and fix any defects or bugs.
o The goal is to ensure that the software is free of defects, meets the requirements, and works
under expected conditions.
Definition:
Black box testing is a testing technique where the internal structure or workings of the application are not
known to the tester. The tester focuses on inputs and outputs rather than the internal code structure. This is
often used to validate functional and non-functional requirements.
Characteristics:
Definition:
White box testing (also known as clear box or glass box testing) is a testing method where the tester has
knowledge of the internal workings of the system, such as the code, data flow, and control structures. The
goal is to test the internal logic, code paths, and structures of the software.
Characteristics:
Examples:
If a function contains a loop (e.g., for, while), the tester would analyze the loop’s logic to ensure it
handles all conditions properly (e.g., boundary conditions, infinite loops).
Example: In a function that calculates the factorial of a number, the tester checks that the loop runs
the correct number of times and returns the right result for input values like 0, 1, 5, etc.
Definition:
User Acceptance Testing (UAT) is the final phase of the software testing process, where the end users or
clients test the system to verify whether it meets their business requirements and is ready for deployment.
The goal of UAT is to validate that the system functions as expected in real-world scenarios and satisfies the
needs of the end users.
Types of UAT:
1. Alpha Testing:
o Performed by internal users at the developer's site before the software is released to external users.
2. Beta Testing:
o Performed by a limited number of external users in a real environment to gather feedback before
full deployment.
In direct implementation, the old system is completely replaced by the new system in one go. It’s a quick
and decisive change, but also risky because if the new system fails, there is no fallback.
Advantages: Simple, low cost in terms of running two systems, and fast implementation.
Disadvantages: High risk if the new system fails.
Example: A retail company upgrades its point-of-sale (POS) system. The old POS system is turned off, and
the new one is immediately used the next day across all stores.
2. Parallel Implementation
In parallel implementation, both the old and new systems run simultaneously for a period. This allows
users to compare the two and ensures a smooth transition since the old system can serve as a backup if the
new one fails.
Example: A bank introduces a new online banking platform while keeping the old one active for three
months, giving customers the choice to use either system until the new one is proven reliable.
3. Pilot Implementation
In pilot implementation, the new system is implemented in a small, controlled section of the organization
(e.g., a single department or location) before it is rolled out to the rest of the organization. This allows for
testing on a smaller scale before full implementation.
Advantages: Reduces risk by identifying and solving problems before a full rollout.
Disadvantages: Limited scope, so issues may arise when scaling up.
Example: A hospital introduces a new patient management system in just one department (e.g., Pediatrics)
to test its functionality before rolling it out to all departments.
4. Phased Implementation
In phased implementation, the new system is introduced in stages or modules over a period. This method
reduces risk by allowing parts of the system to be tested and adapted before the full system is operational.
Example: A university introduces a new student information system, first implementing the registration
module, followed by student records, and then financial services over the course of a year.
7. Maintenance:
o After deployment, the software enters the maintenance phase. This includes addressing bugs
discovered after release, implementing updates, and adding new features based on user
feedback.
o Maintenance can also involve performance optimization, security patches, and adapting the
system to changing environments.
1. Corrective Maintenance: Focuses on identifying and fixing errors, bugs, or defects in a system to
ensure it works as intended.
2. Adaptive Maintenance: Involves updating the system to adapt to changes in the environment, such
as new operating systems, hardware, or regulatory requirements.
3. Perfective Maintenance: Aims to enhance the system by adding new features, improving
performance, or optimizing existing functions based on user feedback
4. Preventive Maintenance: Proactively addresses potential issues by making adjustments or updates
to prevent future problems.
A System Analyst is an IT professional responsible for analyzing, designing, and implementing information
systems to support organizational needs. They bridge the gap between business needs and IT, working
closely with stakeholders to ensure that technical solutions align with business goals.
A Software Engineer is a professional responsible for designing, developing, testing, and maintaining
software applications and systems. They apply engineering principles and knowledge of programming to
solve complex software problems, develop new applications, and improve existing software solutions.
System design tools are the tools that are used for essential for planning, visualizing, and documenting
software architectures, workflows, and system components.
COMPILED BY: Er.Gaurab Mishra
HOD, COMPUTER SCIENCE
K.M.C COLLEGE, +2
1. Algorithm
2. Flowchart
A flowchart is a diagram that represents the flow or sequence of steps in a process. It’s commonly used to
outline algorithms, procedures, and workflows, using various symbols to illustrate steps, decisions, inputs,
outputs, and loops.
3. Pseudocode
Pseudocode is a plain-language way of writing algorithms or instructions that resembles
programming logic but avoids specific syntax of any language. It's commonly used to plan or outline
code before actual programming.
4. Context diagram
A context diagram outlines how external entities interact with an internal software system.
Context diagrams are high-level diagrams, meaning they don’t go into the detailed ins and outs of
the system. Instead, they map out an entire system in a way that’s simple, clear, and easy to
understand. Because of its simplicity, it’s sometimes called a level 0 data flow diagram.
The DFD or data flow diagram is an overall flow of how the data
moves through a system, describing its inputs and outputs process within
the entire system.
External Entities are the entry and exit points for data entering and
leaving the system. Entities are referred to as terminators, sources, sinks,
and actors.
A Data Store (database) is a table that stores the files or repositories for
future use.
Data Flow is the flow of data between external entities, processes, and data
stores.
Level 0 DFD
An Entity Relationship Diagram is a diagram that represents relationships among entities in a database. It
is commonly known as an ER Diagram. An ER Diagram in DBMS plays a crucial role in designing the
database. Today’s business world previews all the requirements demanded by the users in the form of an
ER Diagram. Later, it's forwarded to the database administrators to design the database.
Lines: It links attributes to entity types and entity types with other relationship types
Entities
COMPILED BY: Er.Gaurab Mishra
HOD, COMPUTER SCIENCE
K.M.C COLLEGE, +2
An entity can be either a living or non-living component.
For example, in a student study course, both the student and the course are entities.
Attribute
Composite Attribute
Multivalued Attribute
Some attributes can possess over one value, those attributes are called multivalued attributes.
Derived Attribute
An attribute that can be derived from other attributes of the entity is known as a derived attribute.
In the example below, both the student and the course are entities, and study is the relationship
between them.
Relationship
One-to-One Relationship
When a single element of an entity is associated with a single element of another entity, it is called a one-to-
one relationship.
For example, a student has only one identification card and an identification card is given to one person.
One-to-Many Relationship
When a single element of an entity is associated with more than one element of another entity, it is called a
one-to-many relationship
For example, a customer can place many orders, but an order cannot be placed by many customers.
When more than one element of an entity is related to a single element of another entity, then it is called a
many-to-one relationship.
For example, students have to opt for a single course, but a course can have many students.
Many-to-Many Relationship
When more than one element of an entity is associated with more than one element of another entity, this is
called a many-to-many relationship.
For example, you can assign an employee to many projects and a project can have many employees.
A Use Case Diagram in 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.
Actors are external entities that interact with the system. These can include users,
other systems, or hardware devices.
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.
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.