SE Unit 1
SE Unit 1
Unit 1
Evolving Role of Software and
vulnerability
• Failures and over budget rates are High
• Success
• Cost of hardware and software is decreased by the time
• Manager and Technical Persons asked:
• Why are costs so high?
• Why can not we find all errors before release?
• Why do we have difficulty in measuring progress of software development?
Software Crisis
1. Early software development was ‘personalized’.
2. As sophistication of application grew, programs grew in size and
complexity.
3. Maintenance became difficult.
4. Software projects were taking a lot longer than originally calculated.
5. Software was costing a lot more to develop than initially estimated.
6. Software was being delivered to the customer only to fail.
7. Error found by the customer were extremely difficult to trace and fix.
Software Failure Examples
• OLD Days
• Y2K Problem
• Windows XP in October 25, 2001
• Any countless modern day problems we come across….
Pfizer vaccine rollout delays
In 2023, the rollout of the Pfizer COVID-19 vaccine was delayed in several countries due to a
software glitch. The glitch prevented the company from properly tracking the distribution of the
vaccine, which led to concerns about the safety and efficacy of the vaccine.
Tesla Autopilot crashes
In 2023, there have been a number of high-profile crashes involving Tesla vehicles that were
using the Autopilot feature. In some of these crashes, the Autopilot feature failed to detect
obstacles and crashed into other vehicles or pedestrians.
Southwest Airlines Flight cancellations
In December 2022, Southwest Airlines experienced a series of flight cancellations that
affected thousands of passengers. The cancellations were caused by a software glitch that
prevented the airline from properly scheduling flights. The glitch was not discovered until after
the cancellations had already begun.
• https://www.linkedin.com/pulse/most-recent-major-qa-failures-qaiser-abbas/
Software
• It consists of programs, set of documentations and the procedures used to setup and
operate the software system
• Software = Programs + Documentation + Operating Procedures.
Programs
Documentation Operating
Procedures
• Manufacturing is the production of goods for use or sale using labor and
machines, tools, chemical and biological processing, or formulation.
Software Engineering
According to IEEE -
The application of systematic, disciplined and quantifiable approach to
the development, operation, and maintenance of software; that is, the
application of engineering to software.
According to Boehm -
The practical application of scientific knowledge in the design and
construction of computer programs and the associated documentation
required to develop, operate, and maintain them.
Software Engineering
- Engineering uses methods, procedures, tools, and standards
- Methods give the different steps you have to take project planning and
estimation, Requirements analysis, Design, Algorithm development,
Coding, Testing, Maintenance.
- Tools provide automated support for the methods – CASE Tools, Coding
Tools, Testing Tools
- Procedure defines the sequence in which the methods are to be executed
Software Engineering Today
Software Characteristics
Failure
Intensity
Time
Bathtub Curve
Software Characteristics
Failure
Intensity
Time
Software curve
Software Characteristics
Myth – If we get behind schedule, we can add more programmers and catch up.
Reality – S/W development is not a mechanistic process like manufacturing.
• Adding people to a late s/w project makes it later .
• spend time educating the newcomers, there by reducing the amount of time spent on
productive development effort.
• People can be added but only in a planned and well coordinated manner.
Software Myths
Myth – If I decide to outsource the s/w project to a 3rd party, I can just relax
and let that firm build it.
Reality If an organization does not understand how to manage and control
software projects internally, it will invariably struggle when it outsource s/w
projects.
Software Myths
Customer myths –
Myth – A general statement of objectives is sufficient to begin writing
programs – we can fill in the details later.
• A formal and detailed description of the information domain, function,
behaviour, performance, interfaces, design constraints, and validation
criteria is essential.
• These characteristics can be determined only after thorough
communication between customer and developer.
Software Myths
Myth: Project requirements continually change, but change can be easily accommodated
because software is flexible.
• Reality:
• Impact of change varies with the time at which it is introduced.
• Early requests for change can be accommodated easily.
• The sooner changes are requested by the customer, the cheaper
they are to make.
• The later it becomes , more is the impact on budget,time and
resources.
Software Myths
Practitioner’s Myth –
Myth – Once we write the program and get it to work, our job is done.
Reality – Someone once said that the sooner you begin writing code, the
longer it will take to get done.
According to Pressman
Software engineering process is the glue that holds the technology layers
together and enables rational and timely development of computer software.
Process defines a framework for a set of key process areas that must be
established for effective delivery of software engineering technology.
The key process areas form the basis for management control of software
projects and establish the context in which technical methods are applied, work
product (models, documents, data, reports, forms, etc.) are produced,
milestones are established, quality is ensured, and change is properly managed.
Software Process
• A common process framework is established by defining a small number of framework
activities that are applicable to all software projects, regardless of their size or complexity.
• Several task sets—each a collection of software engineering
• work tasks,
• project milestones,
• work products, and
• quality assurance points—
• Enable the framework activities to be adapted to the characteristics of the software
project and the requirements of the project team.
• Umbrella activities—such as software quality assurance, software configuration
management, and measurement—overlap the process model. Umbrella activities are
independent of any one framework activity and occur throughout the process.
Difference between Software
Engineering and Traditional
Engineering
Software is intangible
Software doesn’t degrade with time as hardware does. Software failures are
caused by design and implementation error, not by degradation over time
• In classical engineering disciplines, the engineer is equipped with tools and the
mathematical maturity to specify the properties of the product separately from
those of design. The typical software engineering relies much more on
experience and judgment rather than mathematical formula.
Difference between Software
Engineering and Traditional
Engineering
Software quality
• Conformance to
• explicitly stated functional and
• performance requirements,
• implicit characteristics
• The effort required to verify a software to ensure that it meets the specified
requirements.
Software Development Life Cycle
• Each phase defines entry and exit criteria for every phase.
Phases of SDLC
Requirement
Analysis
Maintenance Design
Deployment Coding
Testing
Software Development Life Cycle (SDLC):Requirement Analysis
• Testing starts once the coding is complete and the modules are released
for testing.
• In this phase, the developed software is tested thoroughly, and any defects
found are assigned to developers to get them fixed.
• During this phase, QA and testing team may find some bugs/defects which
they communicate to developers.
• The development team fixes the bug and send back to QA for a re-test.
• This process continues until the software is bug-free, stable, and working
according to the business needs of that system.
Software Development Life Cycle (SDLC):
Deployment
• At this stage, the goal is to DEPLOY THE SOFTWARE.
• When the software is completed and has no bugs, it is shipped to the
market for beta testing.
• The support team collects feedback of the first users, and if any bugs
come up, the development team fixes them. After that, the final version
is rolled out.
Software Development Life Cycle
(SDLC):Maintenance
• Once the software system is deployed, and customers start using the
developed system, following 3 activities occur:
Bug fixing - bugs are reported because of some scenarios which are
not tested at all
Upgrade - Upgrading the application to the newer versions of the
Software
Enhancement - Adding some new features into the existing software
Importance of SDLC
• At the time of feasibility study PROJECT MANAGERS OR TEAM LEADERS have a rough
understanding that what is to be done.
• This is done based on different input and output data to be produced by the system.
• It is studied and processing is needed to be done on these data.
• After overall understanding, different possible solutions are
investigated in terms of resources required, cost of development,
development time.
• Based on this analysis they pick the best solution and determine whether the solution is
feasible financially and technically.
• VERIFIES whether the customer budget would meet the cost of the product and whether
they have sufficient technical expertise in the area of development.
Activities undertaken during Requirement Analysis
and specification
• The purpose of the coding and unit testing phase (sometimes called the
implementation phase) of software development is to translate the
software design into source code.
• Each component of the design is implemented as a program module.
• The end-product of this phase is a set of program modules that have
been individually tested.
• During this phase, each module is unit tested to determine the correct
working of all the individual modules.
• It involves testing each module in isolation as this is the most efficient
way to debug the errors identified at this stage.
Activities undertaken during Integration And System Testing
Pros Cons
Simple and easy to understand and use No working software is produced until late during the life cycle.
Easy to manage due to the rigidity of the model. Each phase has
High amounts of risk and uncertainty.
specific deliverables and a review process.
Phases are processed and completed one at a time. Not a good model for complex and object-oriented projects.
Works well for smaller projects where requirements are very well
Poor model for long and ongoing projects.
understood.
Process and results are well documented. Adjusting scope during the life cycle can end a project.
Test
Maintain
Prototype Model
Basic Requirement Identification: This step involves understanding the very basics
product requirements especially in terms of user interface. The more intricate details of
the internal design and external aspects like performance and security can be ignored
at this stage.
Developing the initial Prototype: Initial Prototype is developed, very basic requirements
are show cased and user interfaces are provided. Features may not exactly work in the
same manner internally in the actual software developed and the workarounds are
used to give the same look and feel to the customer in the prototype developed.
Review of the Prototype: The prototype developed is then presented to the customer and
the other important stakeholders in the project. The feedback is collected in an
organized manner and used for further enhancements in the product under
development.
Prototype Model
Revise and enhance the Prototype:
The feedback and the review comments are discussed during this stage and some
negotiations happen with the customer based on factors like, time and budget constraints
and technical feasibility of actual implementation.
The changes accepted are again incorporated in the new Prototype developed and the cycle
repeats until customer expectations are met.
Prototype Model: Advantages
• The customers get to see the partial product early in the
life cycle. This ensures a greater level of customer
satisfaction and comfort.
• New requirements can be easily accommodated as
there is scope for refinement.
• Missing functionalities can be easily figured out.
• Errors can be detected much earlier thereby saving a lot
of effort and cost, besides enhancing the quality of the
software.
• The developed prototype can be reused by the
developer for more complicated projects in the future.
• Flexibility in design.
Prototype Model: Disadvantages
Each phase of Spiral Model is divided into four quadrants as shown in the above
figure. The functions of these four quadrants are discussed below-
1.Objectives determination and identify alternative solutions: Requirements are
gathered from the customers and the objectives are identified, elaborated and
analyzed at the start of every phase. Then alternative solutions possible for the
phase are proposed in this quadrant.
2.Identify and resolve Risks: During the second quadrant all the possible solutions are
evaluated to select the best possible solution. Then the risks associated with that
solution is identified and the risks are resolved using the best possible strategy. At
the end of this quadrant, Prototype is built for the best possible solution.
3.Develop next version of the Product: During the third quadrant, the identified
features are developed and verified through testing. At the end of the third
quadrant, the next version of the software is available.
4.Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate
the so far developed version of the software. In the end, planning for the next phase
is started.
Spiral Model
• All the models have the disadvantage that the duration of time from start of the project
to the delivery time of a solution is very high. Evolutionary model solves this problem in a
different approach.
Evolutionary Model
• Evolutionary model suggests breaking down of work into smaller chunks, prioritizing
them and then delivering those chunks to the customer one by one.
• The number of chunks is huge and is the number of deliveries made to the
customer.
• The main advantage is that the customer’s confidence increases as he constantly
gets quantifiable goods or services from the beginning of the project to verify and
validate his requirements.
• The model allows for changing requirements as well as all work in broken down into
maintainable work chunks.