Sepm Unit-1 (Part-1)
Sepm Unit-1 (Part-1)
Software is the set of instructions, data, or programs that direct a computer on how to perform
specific tasks. It is intangible, meaning you cannot physically touch or see it like hardware. Without
software, hardware (like the CPU, keyboard, or monitor) would be useless because it wouldn’t know
what to do.
1. Software is the set of instructions, data, or programs that direct a computer on how to
perform specific tasks.
Explanation: Software is essentially the "brain" behind the computer's actions. It provides
the step-by-step instructions that tell the computer how to process input, execute operations,
and deliver output. Without these instructions, a computer wouldn't know how to respond
to user commands.
Examples:
1. Web Browser: When you type a website address (like www.google.com) into a
browser (e.g., Google Chrome or Mozilla Firefox), the browser software processes
your request, fetches data from the internet, and displays the webpage.
2. Photo Editor: A photo editing software like Adobe Photoshop has instructions to
adjust brightness, crop images, or add filters when the user selects specific tools.
3. Music Player: Software like VLC Media Player takes the input (a music file) and plays
the song by following instructions for decoding and playing audio data.
3. Without software, hardware (like the CPU, keyboard, or monitor) would be useless because
it wouldn’t know what to do.
Explanation: Hardware is like the "body" of the computer, and software is its "mind."
Hardware provides the physical structure and capabilities, but software provides the
instructions that make the hardware perform specific actions. Without software, hardware
would just sit idle.
Examples:
1. CPU (Central Processing Unit):
The CPU is the "brain" of the computer that performs calculations and
processes data.
With Software: The operating system (e.g., Windows, Linux) and application
software (e.g., a spreadsheet program) send instructions to the CPU to
execute tasks like adding numbers or rendering graphics.
Without Software: The CPU would just sit idle with no instructions to follow.
2. Monitor:
A monitor is a hardware device used to display output.
With Software: Software like a video player can send video signals to the
monitor for display.
Without Software: The monitor would just be a blank screen with no images
or text.
3. Keyboard and Mouse:
These hardware devices capture user input.
With Software: The operating system processes the input (e.g., key presses
or mouse clicks) and performs actions like typing text in a document or
opening files.
Without Software: The keyboard and mouse would not trigger any actions.
Real-Life Analogy:
Hardware Without Software: Imagine you have a car (hardware). It has all the physical
components like the engine, wheels, and steering. However, without a driver (software), the
car cannot move or perform any function.
Software Directs Hardware: Now imagine the driver gets into the car and starts driving.
The driver's instructions (turn left, brake, accelerate) are like software commands that guide
the hardware (car) to perform tasks.
Example:
Imagine you want to write an email:
1. Hardware Components:
o Keyboard: You type the email content.
o Monitor: Displays what you are typing.
o CPU: Processes the data.
2. Software Involved:
o Operating System (System Software): Manages hardware to ensure typing and
display functions work.
o Email Application (Application Software): Sends the email to the recipient after
you click "Send."
3. Without Software:
o The keyboard wouldn’t know how to send your input to the screen, the monitor
wouldn’t display anything, and the CPU wouldn’t process any commands.
Types of Software:
1. System Software
o Definition: System software acts as the bridge between the computer hardware and
the user. It helps the hardware understand user instructions and perform operations.
o Examples:
Operating Systems: Windows, macOS, Linux, and Android. These manage all
other software, handle file systems, and control hardware components like
printers and keyboards.
Device Drivers: Software like a printer driver or graphics driver that allows
your computer to communicate with external devices.
o Scenario: When you start your computer, the operating system initializes hardware,
loads essential programs, and provides the interface (like a desktop or icons) for you
to interact with.
2. Application Software
3. Utility Software
1. Social Media Apps: Platforms like Instagram and Twitter are software applications designed
to help people connect and share content online. For instance, Instagram allows users to
upload photos, while Twitter facilitates short text-based posts.
2. Games: Popular games like Minecraft and Fortnite are examples of entertainment software.
These programs involve graphics rendering, user input handling, and game logic, creating an
interactive experience.
3. Education Tools: MATLAB, a software for mathematical computations, helps engineering
students simulate and solve complex problems. Zoom is widely used for conducting online
classes.
4. Banking Apps: Software such as mobile banking apps (e.g., PayPal or your bank's app) allows
you to check your account balance, transfer money, or pay bills conveniently.
Despite software being a crucial part of modern technology, many myths and misconceptions
surround it. These myths often arise from a lack of understanding about how software works or
unrealistic expectations about its capabilities.
Belief: Some people assume that once software is created and delivered, the job is done.
Reality: Software requires ongoing maintenance, updates, and sometimes redesign to keep
it functional, secure, and compatible with evolving technology.
Why This Happens: Over time, user requirements change, security vulnerabilities are
discovered, and hardware evolves. Developers must keep the software updated to address
these challenges.
Example:
o Mobile apps like WhatsApp or Facebook frequently release updates to introduce new
features, fix bugs, or address security vulnerabilities.
Clarification: Software has a lifecycle that includes development, deployment, maintenance,
and eventual retirement.
Belief: Some people think software can magically solve all problems or perform any task,
regardless of feasibility.
Reality: While software is powerful, it operates within the constraints of hardware, logic, and
user input. It cannot perform tasks beyond these limitations.
Why This Happens: Movies and media often exaggerate software capabilities, showing
scenes where hackers or AI systems instantly solve complex problems.
Example:
o A software program cannot accurately predict the stock market because it depends
on unpredictable human and market behaviors.
Clarification: Software can automate, optimize, and assist, but it cannot defy logical or
technological boundaries.
Belief: People often assume that the software with the most features is the best.
Reality: Too many features can make software complex, slow, and difficult to use. A better
approach is having software that focuses on doing a few things very well.
Why This Happens: Marketing often emphasizes feature lists, leading users to believe that
"more is better."
Example:
o A lightweight app like Notepad++ is often preferred for basic text editing tasks over
a feature-heavy tool like Microsoft Word, which might feel overwhelming for simple
uses.
Clarification: Good software strikes a balance between functionality, usability, and
performance.
Belief: Many users believe that software, once purchased or installed, is entirely secure and
cannot be hacked.
Reality: No software is 100% secure. Hackers constantly look for vulnerabilities, and
developers must frequently release patches to address these.
Why This Happens: Users trust big brands and assume their software is impenetrable, not
realizing that threats evolve over time.
Example:
o Popular software like Zoom faced security concerns (e.g., "Zoom-bombing") but
addressed them with updates.
Clarification: Users should regularly update software, use strong passwords, and follow
cybersecurity best practices to enhance security.
Belief: Many think creating software is as simple as writing a few lines of code.
Reality: Software development is a complex process that involves designing, coding, testing,
debugging, and maintenance. It often takes months or years to create robust software.
Why This Happens: Movies and media often depict programmers writing code quickly and
achieving results instantly.
Example:
o Developing a simple mobile app might take weeks of planning, design, and testing
before it’s ready for users.
Clarification: Building software requires expertise, time, and collaboration among
developers, designers, and testers.
Software engineering project management (SEPM) is crucial for the successful delivery of software
projects. It involves planning, organizing, and overseeing software development processes to ensure
they meet quality standards, stay within budget, and are delivered on time. Without effective project
management, even well-intentioned and highly skilled teams may fail to deliver a functional, high-
quality product.
Reasons why software engineering project management is essential:
1. Ensures Proper Planning
Explanation: Every software project has specific goals, resources, timelines, and constraints.
Project management ensures that these elements are well-defined from the beginning.
Proper planning avoids confusion and reduces the risk of scope creep (uncontrolled changes
to the project’s scope).
o Steps in Planning:
Defining objectives and deliverables.
Identifying risks and creating mitigation strategies.
Allocating resources and assigning responsibilities.
Example:
A company developing an e-commerce application needs detailed planning to decide on
features like payment gateways, product catalogs, and user authentication. Without a clear
plan, developers might focus on less important aspects, delaying the project.
Explanation: Software projects often have strict deadlines, especially when they are tied to
market launches or client commitments. Project management ensures that tasks are
scheduled and progress is tracked. It uses techniques like Gantt charts, milestone planning,
and Agile sprints to optimize time usage.
Example:
A startup launching a mobile app for a seasonal event (e.g., a Christmas shopping app) cannot
afford delays. Project management ensures that essential features are completed before the
event to capture the market on time.
3. Controls Budget
Explanation: Software projects involve costs, including salaries, tools, infrastructure, and
testing resources. Poor budget management can lead to overspending, project delays, or
outright failure. Project managers monitor expenses and ensure resources are utilized
efficiently.
Example:
A healthcare software company might have a fixed budget for developing a patient
management system. Project management ensures that unnecessary features are avoided,
and the team focuses on critical deliverables to stay within budget.
Explanation: Software projects face various risks, such as changes in technology, evolving
client requirements, or team turnover. Project management identifies potential risks early
and develops contingency plans to address them.
Example:
A project developing a custom CRM system might face the risk of a client changing
requirements mid-development. A project manager can implement an Agile methodology to
accommodate changes without disrupting progress.
9. Handles Complexity
Explanation: Modern software projects can be highly complex, involving integration with
third-party APIs, scalability requirements, and compliance with industry standards. Project
management provides structure and breaks the work into manageable tasks.
Example:
A project developing an online banking system must comply with regulations like GDPR and
PCI DSS while ensuring scalability. A project manager ensures that each aspect is addressed
without overwhelming the team.
Explanation: Project management involves setting measurable goals (KPIs) and tracking
progress using tools and techniques. It provides insights into what is working and what needs
improvement.
Example:
In a SaaS project, metrics like delivery time, user adoption rates, and client satisfaction scores
are tracked to measure success.
2. Software in Communication
Before (Past)
Communication software was mainly used for emails, which were slow and mostly used for
work.
People could only send text messages without instant feedback.
Example: Yahoo Mail was one of the first popular email services.
Now (Present)
Software enables instant messaging, video calls, and group chats anytime, anywhere.
It makes online meetings and virtual classrooms possible.
Example: WhatsApp, Zoom, and Google Meet allow people to talk face-to-face over the
internet, no matter where they are.
3. Software in Transportation
Before (Past)
Navigation software was basic—it only showed static maps and directions.
Early GPS devices helped drivers find locations but couldn’t update routes in real-time.
Example: A GPS device in a car could only show a preloaded map.
Now (Present)
Software helps book rides, track vehicles, predict traffic, and even drive cars
automatically.
Artificial intelligence (AI) allows self-driving cars to move safely on roads.
Example:
o Uber finds a driver, calculates the fare, and shows the best route in seconds.
o Tesla's Autopilot software allows cars to drive themselves with AI.
4. Software in Healthcare
Before (Past)
Software was used only for storing patient records in hospitals.
Doctors had to manually write prescriptions and diagnose diseases.
Example: Early hospital databases stored patient details.
Now (Present)
Software can now diagnose diseases, schedule appointments, and even assist in
surgeries.
AI-powered software analyzes medical reports and suggests treatments.
Example:
o AI-based X-ray scanners detect health issues like cancer.
o Telemedicine apps (like Practo & Teladoc) let patients consult doctors online.
5. Software in Entertainment
Before (Past)
People could only watch TV or listen to the radio.
Entertainment software was limited to CDs, DVDs, and early computer games.
Example: Video games like Mario were played on game consoles.
Now (Present)
Software powers on-demand streaming platforms, social media, and virtual reality.
AI recommends content based on user preferences.
Example:
o Netflix, YouTube, and Spotify suggest movies and music you might like.
o Virtual reality (VR) games allow immersive gaming experiences
b) Blockchain-Based Applications
Blockchain is being integrated into software for secure transactions and data integrity.
Example: Cryptocurrencies (Bitcoin, Ethereum), supply chain management, and digital
contracts.
A software process is a set of related activities that leads to the production of a software system.
It includes:
Software specification – Defining the functionality and constraints.
Software design and development – Building the software system.
Software validation – Ensuring the system meets requirements.
Software evolution – Updating and maintaining the system.
A process in software engineering refers to a structured sequence of activities, actions, and tasks
required to develop, maintain, and deliver a software product. The generic view of the software
process provides a high-level framework that applies to all software development approaches,
regardless of the specific methodology used.
An activity strives to achieve a broad objective (e.g. communication with stakeholders) and is
applied regardless of the application domain, size of the project, complexity of the effort, or degree of
rigor with which software engineering is to be applied.
An action encompasses a set of tasks that produce a major work product (e.g., an architectural design
model).
A task focuses on a small, but well-defined objective (e.g., conducting a unit test) that produces a
tangible outcome.
Basically, a process framework establishes the foundation for a complete software engineering
process by identifying a small number of framework activities that are applicable to all software
projects, regardless of their size or complexity. In addition, the process framework encompasses a
set of umbrella activities that are applicable across the entire software process.
Software project tracking and control—allows the software team to assess progress against the
project plan and take any necessary action to maintain the schedule.
Risk management—assesses risks that may affect the outcome of the project or the quality of the
product.
Software quality assurance—defines and conducts the activities required to ensure software
quality.
Measurement—defines and collects process, project, and product measures that assist the team in
delivering software that meets stakeholders needs; can be used in conjunction with all other
framework and umbrella activities.
Reusability management—defines criteria for work product reuse and establishes mechanisms to
achieve reusable components.
Work product preparation and production—encompasses the activities required to create work
products such as models, documents, logs, forms, and lists.
The generic software process model consists of five fundamental activities that are present in most
software development methodologies.
The important aspect of software process is “Process Flow” which describes how the framework
activities and the actions and tasks that occur within each framework activity are organized with
respect to sequence and time and is illustrated in Figure 2.2.
A linear process [Fig:2.2(a)] flow executes each of the five framework activities in
sequence, beginning with communication and culminating with deployment.
An iterative process flow [Fig:2.2(b)] repeats one or more of the activities before
proceeding to the next.
An evolutionary process flow [Fig:2.2(c)] executes the activities in a “circular” manner.
Each circuit through the five activities leads to a more complete version of the software.
A parallel process flow [Fig:2.2(d)] executes one or more activities in parallel with other
activities (e.g. modeling for one aspect of the software might be executed in parallel with
construction of another aspect of the software).
Definition: The core of software engineering, ensuring that every aspect of development
meets high-quality standards.
Role:
o Defines software quality assurance (SQA) guidelines.
o Includes reviews, audits, testing strategies, and process improvements.
Example: Using ISO 9001 and CMMI models to ensure quality compliance.
Definition: Establishes a structured approach for software development and guides all
engineering activities.
Role:
o Defines software life cycle models (Waterfall, Agile, Spiral, etc.).
o Ensures disciplined development and project management.
Example:
o Waterfall Model → Used for structured and sequential development.
o Agile Model → Used for iterative and flexible development.
Software Project Management (SPM) refers to the process of planning, organizing, leading, and
controlling software projects to ensure their successful completion within the given scope, time, and
budget. It involves applying software engineering principles, management techniques, and risk
control measures to software development.
A Software Project Life Cycle (SPLC) consists of systematic activities that guide a software project
from its initiation to completion. These activities are crucial for ensuring that the software product
meets customer expectations, technical requirements, and quality standards.
This phase marks the beginning of the project and involves defining its objectives, feasibility, and
high-level planning.
Key Activities:
Example:
A company wants to develop an e-commerce website. The feasibility study determines if the project
is financially and technically viable.
This phase involves detailed planning to ensure the project is executed efficiently.
Key Activities:
Example:
A software company plans to build a hospital management system. It schedules different tasks such
as UI design, database creation, and system testing.
In this phase, actual development of the software takes place based on the planned design and
methodology.
Key Activities:
Example:
Developers create an AI chatbot for a banking system, implementing machine learning algorithms
and testing chat responses.
This phase ensures that the project remains on track and meets quality standards.
Key Activities:
Project Tracking: Monitoring project progress using tools like JIRA, Trello, or Microsoft
Project.
Quality Assurance (QA): Conducting reviews, inspections, and automated testing.
Risk Control: Managing risks such as budget overruns, timeline delays, and security
threats.
Change Management: Handling modifications in requirements or scope.
Example:
A mobile banking application undergoes security testing, ensuring protection against cyber threats
like phishing attacks.
This phase ensures successful project delivery and prepares for future software maintenance.
Key Activities:
Final Testing & Deployment: Ensuring the software is bug-free and meets requirements.
Client Acceptance & Sign-off: The customer approves the final product.
Project Documentation: Preparing user manuals and technical documentation.
Post-Deployment Support: Addressing user queries and software updates.
Lessons Learned: Evaluating project performance and improvement areas.
Example:
A university management system goes live, and the development team provides user manuals and
technical support for maintenance.
2. Relationship Between Project Life Cycle & Software Development Life Cycle (SDLC)
The Software Project Life Cycle (SPLC) and Software Development Life Cycle (SDLC) are related
but distinct concepts:
Process Models:
A process model in software engineering is a structured framework that defines the sequence of
activities, tasks, and deliverables involved in developing a software system. It serves as a guideline
for software development, ensuring systematic planning, execution, and maintenance of software
projects.
Among these, the Waterfall Model is one of the earliest and most fundamental process models.
3. The Waterfall Model
Definition:
The Waterfall Model is a linear and sequential approach to software development, where each
phase must be completed before moving to the next. It follows a top-down approach, meaning
once a phase is finished, there is no going back.
4) Testing Phase
5) Deployment Phase
6) Maintenance Phase
Advantages:
Disadvantages:
The Incremental Process Model is a software development approach where the system is built
progressively in small portions called increments. Each increment adds new features or
functionalities while ensuring that the previously developed parts remain functional. This model
combines elements of iterative development with the sequential flow of the waterfall model.
1. Requirement Analysis
o Identify and document the system’s overall requirements.
o Prioritize features and break them into increments.
2. System Design
o Develop the initial system architecture based on high-priority requirements.
o Design each increment separately.
3. Incremental Development
o Implement and develop the first increment (core functionality).
o Develop subsequent increments that enhance the system.
4. Testing and Integration
o Each increment undergoes testing before being integrated into the existing system.
5. Deployment and Maintenance
o Once all increments are developed, the complete system is deployed.
o Maintenance is performed as needed.
Early Delivery of Functionality: Customers can start using the software after the first
increment.
Flexibility: Changes can be made in later increments without affecting previous ones.
Lower Risk: Since development is done in small parts, risks are minimized.
Better Error Detection: Each increment is tested independently, making debugging easier.
Requires Careful Planning: The initial architecture must support future increments.
Integration Complexity: As more increments are added, integrating them into the system
becomes challenging.
Higher Cost: Incremental development can be more expensive than traditional models.
Definition
The Evolutionary Process Model is based on the principle of continuous refinement and
iteration. Instead of delivering the final system in one go, the software is gradually built,
incorporating user feedback and improvements in successive versions.
The Spiral Model integrates the strengths of the Waterfall Model and Prototyping Model,
emphasizing risk management.
Definition
This model is particularly useful in projects where multiple components of a system must evolve in
parallel. It supports real-time software development, large distributed systems, and applications
with rapidly changing requirements.
Each activity in the development process (such as design, coding, or testing) can be in one of the
following states at any given time:
For example, while some components are being designed, other components may already be coded
and tested at the same time.
1. Requirement Analysis
2. Design Phase
Some components of the software enter the design state, while others remain inactive.
As soon as a component is designed, coding can start.
Some modules may be under coding, while others may be under testing or debugging.
Testing starts as soon as a component is ready, rather than waiting for the entire system to
be built.
Since different parts of the system were developed concurrently, maintenance follows a
modular approach, where updates to one component do not disrupt others.
1. The frontend team starts working on the user interface (UI) while the backend team
simultaneously develops the database and APIs.
2. Once the basic UI design is ready, the frontend team moves to integrate API calls, while the
backend team starts optimizing the database.
3. Meanwhile, the security team begins testing for vulnerabilities while the testing team starts
unit testing on the completed modules.
4. As components become stable, they are integrated into the main system.
This parallel development speeds up the process and ensures early feedback, making the model
highly efficient.