2. CO’s
CO1 Explain Various Software Characteristics and analyze different Software development
Model.
K1,K2
CO2 Demonstrate the contents of a SRS and apply basic software quality assurance practices
to ensure the design, development meet or exceed applicable standards.
K1,K2
CO3 Compare and contrast various methods for software designs. K2,K3
CO4 Formulate testing strategy for software system, employ techniques such as unit testing,
test driven development and functional testing.
K3
CO5 Manage software development process independently as well as in teams and make
use of various software management tools for development , maintenance and
analysis.
K3
4. Introduction to Software Engineering :
Software is a program or set of programs containing
instructions that provide the desired functionality and
preforms a special tasks.
Engineering is the process of designing and building
something that serves a particular purpose and finds a
cost-effective solution to problems.
5. Thus,
Software engineering is associated with the development of software
using well-defined scientific principles,methods,and procedures.
But,the Picture is more:
Software engineering is not only belongs to development of
software.
But,it also belongs to-
.Pre-Development phase
.Development phase
.Post-Development phase
6. Pre-Development phase
Development phase
Understanding User’s need and
analysing it and preparing detailed
document according
Post-Development phase
According to need or usecases create
different modules and create data
structure
Includes:Documentation,
Maintainability
7. Software Engineering is the process of
i. designing,
ii. developing,
iii. testing, and
iv. maintaining software. It is a systematic and
disciplined approach to software development that
aims to create high-quality, reliable, and maintainable
software.
9. Evolution of Software Engineering:
1945-65 : ORIGIN
1965-85:CRISIS ERA
1990-99:INTERNET ERA
2000-2015:LIGHTWEIGHT METHOD
21ST
CENTURY:CUTTING EDGE
TECHNOLOGY
10. First Phase:
• In this phase,software development was primarily done by individuals
or small teams who wrote code based on their own experiences and
knowledge.
• Primarily using Trial and Error Method
• No Formal Method
Second Phase:
• Develop Formal Method for development of softwares.
• Define various Scientific methods, approches and principles.
• In the every phase of development define various formal methods and
approaches.
Next Phase:
• Evolved in next phase
11. Software Crisis : is inability to develop desired software product due to
certain reasons.
The software crisis was due to using the same workforce, same
methods, and same tools even though rapidly increasing software
demand, the complexity of software, and software challenges. With the
increase in software complexity, many software problems arose
because existing methods were insufficient.
12. What are the different problems:
1. OverBudget
2. Not Timely Deliver
3. Unreliable
4. Difficulty to maintain
5. Performed Poorly
6. Non-Optimal Utilization of resources
7. Not meet user requirements
13. Solution
• Reduction in software over budget.
• The quality of the software must be high.
• Less time is needed for a software project.
• Experienced and skilled people working on the software project.
• Software must be delivered.
• Software must meet user requirements.
14. Characteristics of “Software” in Software Engineering
1. Software is developed or engineered; it is not
manufactured in the classical sense
2. The software doesn’t “wear out.”
3. The software continues to be custom-built
15. Characteristics of the Software
• It is intangible, meaning it cannot be seen or touched.
• It is non-perishable, meaning it does not degrade over time.
• It is easy to replicate, meaning it can be copied and distributed easily.
• It can be complex, meaning it can have many interrelated parts and
features.
• It can be difficult to understand and modify, especially for large and
complex systems.
• It can be affected by changing requirements, meaning it may need to be
updated or modified as the needs of users change.
• It can be impacted by bugs and other issues, meaning it may need to be
tested and debugged to ensure it works as intended.
16. Software: A Layered Structure
1. A quality focus:
• It defines the continuous process improvement principles of software.
• It provides integrity means providing security to the software.
• It also focuses on maintainability and usability.
2. Process:
• Foundation or base layer of software engineering.
• The software process covers all the activities, actions, and tasks required to be
carried out for software development.
3. Method:
• In the development phase it answers to all “how-to-do” questions are given by
method.
• It has the information of all the tasks which includes communication,
requirement analysis, design modeling, program construction, testing, and
support.
4. Tools:
• Software engineering tools provide a self-operating system for processes
and methods.
17. Comparison with conventional engineering
Software Engg.
1. In this process majorily involves in computer
science,IT,Discrete maths.
2. Focus to computers, programming and
building applications.
3. Process construction and development cost
is Low.
4. Focus on quality
5. Developed product is intangible
6. Testing is an integral part of development
process
7. Prototyping is common and helps to
refine requirements.
8. Design requirements may change
throughout the development process.
Conventional Engg.
1. majorly involves science,
mathematics, and empirical
knowledge.
2. Focus on building cars, machines,
hardware, buildings, etc.
3. Compartevly High
4. Emphasis on mass production
5. Tangible product
6. Testing after production
7. Prototyping is less common due to
High cost.
8. Design Requirements are typically
well-defined upfront.
18. Comparison with conventional engineering
Similarities :
1. Both these processes are making our day-to-day place better.
2. Both these processes have a fixed working time.
3. Both processes must consist of deeper knowledge.
4. Both Processes become automated after some time.
19. Software Development Life Cycle (SDLC)
• SDLC, or software development life cycle, is a methodology that
defines the entire procedure of software development step-by-step.
• The goal of the SDLC life cycle model is to deliver high-quality,
maintainable software that meets the user’s requirements.
• It ensures that the end product is able to meet the customer’s
expectations and fits within the overall budget.
• SDLC is a collection of these six stages.
20. First Stage: Planning and Requirement Analysis
• In this same stage, requirement analysis is performed by the developers
of the organization.
• This is attained from customer inputs, and sales department/market
surveys.
• This is a very crucial step as it ensures quality of the project is a result
of planning.
• Thus, in this stage, the basic project is designed with all the available
information.
21. Second Stage: Defining Requirements
• In this stage, all the requirements for the target software are
specified.
• These requirements get approval from customers, market analysts,
and stakeholders.
• This is a sort of document that specifies all those things that need to
be defined and created during the entire project cycle.
• Here, the final SRS(System requirement specification) is made and this
is the base of the software projects.
22. • Third Stage: Designing Architecture
• With the requirements defined in SRS, multiple designs for the
product architecture are present in the Design Document Specification
(DDS).
• This DDS is assessed by market analysts and stakeholders.
• After evaluating all the possible factors, the most practical and logical
design is chosen for development.
23. • Fourth Stage: Developing Product
• At this stage, the fundamental development of the product starts. For
this, developers use a specific programming code as per the design in
the DDS.
• conventional programming tools like compilers, interpreters,
debuggers, etc.
25. Sixth Stage : Deployment and Maintenance of Products
26. Software Quality
• Almost everybody says they want software to be of high quality.But,what does the word
Quality mean?
• There is no single answer to this question;Basically it depends upon the different stakeholder
involve in it.
• Every stakeholder has own personal objective and he evaluate quality with own objective.
Software Quality
Customer
Solves Problems at
an acceptable cost in
terms of money paid
and resources used
Management
Sells more and pleases
customers while costing
less to develop and
maintain
Developer
• Easy to design
• Easy to maintain
• Easy to Reuse its
parts
User
• Easy to learn
• Easy to efficiently
• Easily helps to get
work done
27. Main Quality Attributes Are:
1.Portability: A software is claimed to be transportable, if it may be simply
created to figure in several package environments, in several machines, with
alternative code merchandise, etc.
2. Usability: The ease with which users can learn, operate and navigate the
software.
3. Reusability: A software has smart reusability if completely different modules
of the merchandise will simply be reused to develop new merchandise.
4. Maintainability: A software is reparable, if errors may be simply corrected as
and once they show up, new functions may be simply added to the
merchandise.
5. Reliability: Software is more reliable if it has fewer failures.
6. Efficiency: The more efficient software is, the less it uses of CPU-time,
memory, disk space,network bandwidth and other resources.
28. Challenges faced in software engineering:
1. Changing Requirements
2. Complexity of projects
3. Time and Budget Constraints
4. Communication Gaps
5. Technical Debt
6. Maintaining quality
7. Rapid technological Changes
8. Scalability Issues
9. Security Vulnerability
10. User Expectation
29. Waterfall Model
• The Waterfall Model is a classical software development methodology.
• It was first introduced by Winston W. Royce in 1970.
• It is a linear and sequential approach to software development that
consists of several phases.
30. When to use:
• Well-understood Requirements
• Very Little Changes Expected
• Small to Medium-Sized Projects
• Predictable
• Client Prefers a Linear and Sequential Approach
• Limited Resources
31. Advantages:
• Easy to Understand: The Classical Waterfall Model is very simple and easy
to understand.
• Individual Processing: Phases in the Classical Waterfall model are
processed one at a time.
• Properly Defined: In the classical waterfall model, each stage in the
model is clearly defined.
• Clear Milestones: The classical Waterfall model has very clear and well-
understood milestones.
• Properly Documented: Processes, actions, and results are very well
documented.
• Reinforces Good Habits: The Classical Waterfall Model reinforces good
habits like define-before-design and design-before-code.
32. Disadvantages
• No Feedback Path: In this, It assumes that no error is ever committed by developers during any
phase. Therefore, it does not incorporate any mechanism for error correction.
• Difficult to accommodate Change Requests: This model assumes that all the customer
requirements can be completely defined at the beginning of the project, but the customer’s
requirements keep on changing with time. It is difficult to accommodate any change requests
after the requirements specification phase is complete.
• No Overlapping of Phases: This model recommends that a new phase can start only after the
completion of the previous phase. But in real projects, this can’t be maintained. To increase
efficiency and reduce cost, phases may overlap.
• Limited Flexibility: The Waterfall Model is a rigid and linear approach to software development,
which means that it is not well-suited for projects with changing or uncertain requirements.
Once a phase has been completed, it is difficult to make changes or go back to a previous phase.
• Limited Stakeholder Involvement
• Late Defect Detection
• Lengthy Development Cycle: As each phase must be completed before moving on to the next.
This can result in delays and increased costs if requirements change or new issues arise.
33. Evolutionary Development Models
• The evolutionary model is based
on the concept of making an
initial product and then evolving
the software product over time
with iterative and incremental
approaches with proper
feedback.
• The development is carried out
simultaneously with the feedback
during the development.
34. Advantages:
1. Customer interaction High
2. Adaptability to Changing
Requirements
3. Chances of error get reduced
4. Making reliable and efficient product
5. Compatible for large scope project
Disadvantages:
1. Communication Difficulties
2. Taking More time
3. Cost leveraged product
4. Dependence on an Expert Group
5. More management attention is
required.
35. Iterative model
• In the Iterative model, iterative process starts with a simple
implementation of a small set of the software
requirements; and
• Iteratively enhances the evolving versions until the complete
system is implemented and ready to be deployed.
• It does not attempt to start with a full specification of
requirements.
36. Advantages
1. Results are obtained early and
periodically.
2. Parallel development can be planned.
3. Progress can be measured.
4. Better suited for large and mission-
critical projects.
5. Testing and debugging during smaller
iteration is easy.
6. Easier to manage risk- High risk part is
done first.
7. With every increment, operational
product is delivered.
8. Risk analysis is better.
9. Initial Operating time is less.
Disadvantages
1. More resources may be required.
2. More management attention is
required.
3. System architecture may arise
because not all requirements are
gathered in the beginning of the
entire life cycle.
4. Defining increments may require
definition of the complete system.
5. Not suitable for smaller projects.
6. Highly skilled resources are required
for risk analysis.
7. Projects progress is highly dependent
upon the risk analysis phase.
37. Prototyping Model
What is Prototyping:Prototyping is defined as the process of
developing a working replication of a product or system that has to be
engineered. It offers a small-scale facsimile of the end product and is
used for obtaining customer feedback.
• Prototyping model is used when the customers do not know the exact
project requirements beforehand.
• In this model, a prototype of the end product is first developed, tested,
and refined as per customer feedback repeatedly till a final acceptable
prototype.
39. Advantages of Prototyping Model
1. Ensures customer satisfaction and
comfort.
2. New requirements can be easily
accommodated
3. Missing functionalities can be easily
figured out.
4. Errors can be detected earlier
5. saving effort and cost, besides
enhancing the quality of the software.
6. Flexibility in design.
7. Early feedback from customers ensure
that the final product meets their
needs and expectations.
8. Prototyping can help reduce the risk of
project failure
Disadvantages of the Prototyping Model
1. Resource Intensive
2. Poor Documentation due to continuously changing
customer requirements.
3. Difficult to accommodate all the changes.
4. After seeing an early prototype, the customers demand
the actual product to be delivered soon.
5. The customer might lose interest in the product if
he/she is not satisfied with the initial prototype.
6. The prototype may not consider technical feasibility and
scalability issues that can arise during the final product
development.
40. spiral model
• The spiral model is a combination of
waterfall and iterative models.
• In this, we focused on risk handling
along with developing the project.
• It is best suited for producing the output
quickly as well as it is good for big
projects.
• This model is used where high reliability
and efficiency is required.
41. Advantages:
1. Customer interaction High
2. Adaptable to Changing
Requirements
3. Chances of error get detect and
resolve earlier.
4. Making reliable and efficient product
5. Compatible for large scope as well as
complex project.
6. Enhancing flexibility.
Disadvantages:
1. Communication Difficulties
2. Complexity of model is very high
3. Resource intensive
4. Dependence on an Expert Group
5. Project Management Complexity
6. Documentation Challenges
7. The cost of developing a
product is high.