SEUNIT1
SEUNIT1
SYLLABUS
Contents
1
SOFTWARE ENGINEERING
UNIT 1
Software: software is the collection of computer programs, procedure rules and associated
documentation and data.
There are two main classifications of software are:
1. System software: It is the type of software that is the interface between application
software and the system. Low-level languages are used to write the system software.
System Software maintains the system resources and gives the path for application
software to run. An important thing is that without system software, the system cannot
run. It is general-purpose software.
Example: Operating system, File Magnitude, Compilers, Utilities, Assemblers, Debuggers
2. Application software: It is the type of software that runs as per user request. It
runs on the platform which is provided by system software. High-level languages
are used to write the application software. It’s specific purpose software. The main
difference between System Software and Application Software is that without
system software, the system cannot run on the other hand without application
software, the Low-level maintenance system always runs.
Example: Image processors, Databases, Games, Communication software, Spreadsheets
, Word processors
Characteristic of Software:
(1) Maintainability: Software should be written in such a way that it may evolve
to meet the changing needs of customers.
(2) Dependability: Software dependability has a range of characteristics,
including reliability, security and safety.
(3) Efficiency: Efficiency includes responsiveness, processing time, memory utilization etc.
(4) Usability: Software must be usable.
(5) Software is developed or engineered. It is not manufactured.
(6) Software does not wear-out.
(7) Software is intangible: The software product cannot be touched.
2
SOFTWARE ENGINEERING
(a) Complexity: Software systems are becoming increasingly complex, managing this
complexity poses challenges in terms of understanding requirements, designing and
ensuring effective integration and testing.
(b) Changing Requirements: Requirements can change throughout the software development
lifecycle, often due to evolving business needs, market dynamics, or user feedback.
(c) Project Management: Software engineering projects require effective project management
to ensure successful outcomes. Challenges can arise in areas such as resource allocation,
task scheduling, budgeting, risk management, and stakeholder coordination.
(d) Time and Cost Constraints: Meeting project deadlines and budgets can be challenging.
3
SOFTWARE ENGINEERING
(e) Quality Assurance: Ensuring software quality is a continuous challenge. Identifying and
fixing defects, conducting testing, and maintaining high reliability, security, performance
, quality assurance.
(f) Team Collaboration: Effective collaboration and communication within team members,
coordinating tasks.
Software Product:
Software products are software systems that are delivered to a customer with a documentation
which describes how to install and use the system.
There are two types of software products:
1. Generic Product:
Generic products are developed for anonymous customers.
The organization which develops the software product, controls the software specification. The
target is generally the entire world and many copies are expected to be sold.
Examples: operating systems, compilers, analyzers, word processors, CASE tools etc.
2. Customized (Bespoke)Product:
The customized products are developed for specific customers.
The specification is usually developed and controlled by the organizations who are buying the
software.
The specific product is designed and developed as per customer requirements.
Examples: Payroll System, Inventory System etc.
4
SOFTWARE ENGINEERING
Software engineering ethics refers to the moral principles and professional standards that
guide the behavior of software engineers in the development and maintenance of software
systems. It addresses the responsibilities of engineers toward users, clients, colleagues, and
society. The goal is to ensure that software is developed in ways that are ethically sound,
socially responsible, and legally compliant.
1. Public Interest: Ensure that software benefits society and does not cause harm.
2. Integrity: Be honest and transparent about the software’s limitations and risks.
3. Professional Responsibility: Follow best practices and continuously improve your skills.
4. Confidentiality: Protect users' and clients' private information.
5. Respect Intellectual Property: Avoid copying or using unlicensed software.
6. Fair Workplace: Promote inclusivity, respect, and fairness in the workplace.
7. Environmental & Social Impact: Consider the broader effects of your software on society
and the environment.
8. Accountability: Take responsibility for software errors and fix them promptly.
5
SOFTWARE ENGINEERING
(1) Study: In this phase, we assist whether or not a project should be undertaken.
This stage involves defining the problem and fixing up its boundaries. At the end of
this stage, the design and development team become clear with the project
objectives and their work.
(2) Requirement Analysis: In this stage, the requirements are studied and
analyzed. The technical development team works with customers and system
end users to identify the application domain, functions, services performance
capabilities, hardware constraints related to the system to be developed.
(3) System Design: In this phase, a new system is designed according to the needs
of the user. It is the phase which find a solution for the given problem.
(4) Development: This is the phase where the system is actually developed. The
design phase is built and implemented in this phase.
(5) Testing: This is most important phase where the system is judged for all its worth.
The system is tested under all kinds situations and environment to test its
performance, reliability and robustness and entire project functionality is tested with
all of its units, integrated and whole system is tested with test data. The developed
system should be able to satisfy all user’s needs and its functionality.
(6) Implementation: This is the process in which the developed system is handed
over to the client and users are trained to manage and maintain the new system.
(7) Software Maintenance: In this phase the development team maintains the system
for the client. It includes adding enhancements, improvements, updates to the newer
versions and not just correction of errors and emergency fixes of a system break
down.
6
SOFTWARE ENGINEERING
(1) Requirement Definition: The system's services, constraints and goals are
established by consultation with system users.
(2) System and Software Design: System design process partitions the
requirements to either hardware or software system. It establishes an overall
system architecture. Software design involves representing the software system
functions in a form of one or more executable programs.
7
SOFTWARE ENGINEERING
(5) Operations and Maintenance: This is the longest life cycle phase. The
system is put into practical use. Maintenance involves correcting errors which were
not discovered in earlier stages of the life cycle, improving the implementation of
system units and enhancing the system's services as new requirements are
discovered.
V – model
The major drawback of waterfall model is we move to the next stage only when the
previous one is finished and there was no chance to go back if something is found
wrong in later stages. V-Model provides means of testing of software at each stage
in reverse manner.
8
SOFTWARE ENGINEERING
At every stage, test plans and test cases are created to verify and validate the product according
to the requirement of that stage. For example, in requirement gathering stage the test team
prepares all the test cases in correspondence to the requirements. Later, when the product is
developed and is ready for testing, test cases of this stage verify the software against its validity
towards requirements at this stage.
This makes both verification and validation go in parallel. This model is also known as
verification and validation model.
SPIRAL MODEL:
The Spiral Model is an iterative software development model which is generally
implemented in high-risk projects. It was first proposed by Boehm in 1988. The spiral model
is similar to the incremental model, with more emphasis placed on risk analysis.
In this system development method, it combines the best features of both,
waterfall model and prototype model.
Each loop in the spiral represents a phase of the software process.
The innermost loop might be concerned with system feasibility, the next loop with
requirements definition, the next loop with system design and so on.
9
SOFTWARE ENGINEERING
10
SOFTWARE ENGINEERING
➢ Changes can be introduced later in the life cycle as well. And coping
with these changes isn’t a very difficult for the project manager.
11
SOFTWARE ENGINEERING
▸The amount of analysis and documentation that has to be redone is much less
than is required with the waterfall model.
▸It is easier to get customer feedback on the development work that has been done.
▸Customers can comment on demonstrations of the software and see how much has been
implemented.
▸More rapid delivery and deployment of useful software to the customer is possible.
•Customers can use the early increments as prototypes and gain experience of
their requirements for later system increments.
▸Customers do not have to wait until the entire system is delivered before they can
gain value from it. The first version satisfies their most critical requirements so they
can use the software immediately.
▸Customers are able to use and gain value from the software early in the development
◗ As the highest-priority services are delivered first and increments then
integrated, the most important system services receive the most testing.
Prototype Model
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built. A prototype is a toy
implementation of the system. A prototype usually turns out to be a very crude
version of the actual system, possible exhibiting limited functional capabilities,
low reliability, and inefficient performance as compared to actual software. In
many instances, the client only has a general view of what is expected from the
software product.
12
SOFTWARE ENGINEERING
Software Processes
The term software specifies to the set of computer programs, procedures and
associated documents (Flowcharts, manuals, etc.) that describe the program and
how they are to be used. A software process is the set of activities and associated
outcome that produce a software product. Software engineers mostly carry out
these activities. These are four key process activities, which are common to all
software processes. These activities are:
13
SOFTWARE ENGINEERING
4. Software e v o l u t i o n : The s o f t w a r e m us t e v o l v e t o m e e t c h a n g i n g
client needs.
• Change avoidance, where the software process includes activities that can
anticipate possible changes before significant rework is required.
– For example, a prototype system may be developed to show some key
features of the system to customers.
• Change tolerance, where the process is designed so that changes can be
accommodated at relatively low cost.
– This normally involves some form of incremental development. Proposed
changes may be implemented in increments that have not yet been
developed. If this is impossible, then only a single increment (a small part
of the system) may have to be altered to incorporate the change.
Agile Methodology
14
SOFTWARE ENGINEERING
15
SOFTWARE ENGINEERING
16
SOFTWARE ENGINEERING
1. Scrum
Scrum is an Agile framework for managing and organizing complex projects. It was
developed by Jeff Sutherland and Ken Schwaber. It provides a lightweight, iterative,
and incremental approach to software development, emphasizing collaboration,
adaptability, and continuous improvement.
The Scrum model promotes iterative and incremental development, with each sprint
resulting in a
releasable product increment. It enables teams to respond quickly to changing
requirements, reduces risks, and collaboration between team members and
stakeholders. The framework's simplicity and flexibility make it widely adopted and
suitable for a variety of software development projects.
The Scrum model consists of specific roles, events, artifacts, and rules that guide the
development process. Scrum is a framework that brings regularity to the project
through its various phases or
processes. Any organization can implement a scrum framework without altering its rules
and regulation.
17
SOFTWARE ENGINEERING
a) Sprint: A time-boxed iteration typically lasting 1-4 weeks, during which the
team works on a set of product backlog items.
b) Sprint Planning: Collaborative session where the team defines the sprint goal,
selects backlog items to work on, and creates a sprint backlog.
c) Daily Scrum: Short daily meeting where the team synchronizes activities,
discusses progress, identifies impediments, and plans for the day.
d) Sprint Review: Meeting at the end of the sprint to showcase the
increment, gather feedback, and adapt the product backlog.
e) Sprint Retrospective: Reflection session where the team inspects its work,
identifies areas for improvement, and plans actions for the next sprint.
Artifacts:
2. Kanban:
Kanban is a visual management system that focuses on visualizing the workflow and
optimizing the flow of work. It uses a Kanban board to represent different stages of
work, with work items moving through the workflow based on capacity and work-in-
progress limits.
Kanban emphasizes continuous improvement, limiting work in progress, and optimizing
flow.
18
SOFTWARE ENGINEERING
1. Sprint Planning: Collaborative session where the team defines the sprint goal,
selects backlog items to work on, and creates a sprint backlog.
2. Daily Scrum: Short daily meeting where the team synchronizes activities,
discusses progress, identifies impediments, and plans for the day.
3. Sprint Review: Meeting at the end of the sprint to showcase the
increment, gather feedback, and adapt the product backlog.
4. Sprint Retrospective: Reflection session where the team inspects
its work, identifies areas for improvement, and plans actions for
the next sprint.
3. Artifacts:
4. Extreme Programming
19
SOFTWARE ENGINEERING
20
SOFTWARE ENGINEERING
viii. Small Releases: XP aids delivering software in small, frequent releases. This
allows for quick feedback and early validation of features, enabling stakeholders
to provide input and make adjustments as needed.
ix. Refactoring: It involves improving the design of existing code without
changing its behavior. It promotes continuous refactoring to maintain code quality,
improve readability and remove duplication.
x. Collective Ownership: It encourages a sense of collective ownership, where any
team member can work on any part of the project. This practice promotes
collaboration, knowledge sharing, and flexibility within the team
Agile development
Specification, design, implementation and testing are inter-leaved and the
outputs from the development process are decided through a process of negotiation
during the software development process.
21
SOFTWARE ENGINEERING
REVIEW QUESTIONS
1. What is software engineering? Explain the characteristics of the software engineering.
2. Explain in detail Software Engineering Ethics
3. Explain in detail the SDLC Model.
4. Explain in detail Waterfall Model with advantages and disadvantages.
5. Explain in detail Spiral Model with advantages and disadvantages
6. Explain in detail Evolutionary model with advantages and disadvantages
7. Explain in detail Prototype model with advantages and disadvantages
8. Explain in detail the V-Model with advantages and disadvantages
9. Explain Software Process Activities in detail.
10. What is Agile Development? Explain the core values of Agile.
11. Explain in detail Agile Principles.
12. Explain the Stages of Agile Process Model in detail.
13. Explain in detail the different Agile Methods.
14. Differentiate Between Agile Development and Plan Driven Development
22