You are on page 1of 55

Introduction to Software Engineering

Syllabus
UNIT-I
Introduction: Introduction of Software (SW), Type of Software, SW Components: Process, People,
Project, Product, Software crisis, Software Process Models: Details of People involve in each
Process, SDLC methods/models: Build & Fix, Waterfall, Prototype (Evolutionary & Throw-away),
Iterative, Incremental iterative, Spiral, RAD, Agile methodology.
UNIT-II
Requirement Analysis & Specifications: Requirement Analysis, Requirement Specification,
Approaches to Requirement analysis, Specifying Behavioural & Non-Behavioural Requirements, SRS
Components & various User’s of SRS. Introduction of Requirement Specification: Dataflow(DF)
Diagram, Data dictionaries, Entity-Relationship (ER) diagram, Object Diagram etc., Requirement
Validation.
Syllabus
UNIT-III
Software Design and Testing: Design Architecture and Patterns, Modularity, Function oriented
design, Object Oriented Design, Software Testing: Software Testing Strategy and Techniques,
Functional testing, Structural testing, Debugging and testing tools, SW/HW reliability, Reliability
concepts and models, Reliability allocation, Software Maintenance: Introduction to SW
Maintenance and types, SW Maintenance models: Re-engineering & Forward Engineering.
UNIT-IV
Software Project Planning: Role of Software Project Planning, Estimation method, Estimation of
Effort & Schedule, Software Metrics: Introduction to Size metrics, Data structure metrics,
information flow metrics, entropy-based measures, metric analysis. Basic COCOMO, Intermediate
COCOMO, Detailed COCOMO, Quality Planning, Planning Parameter, Quality Defect Removal
Cycle, Role of Risk Analysis.
Evolving Role of Software
 Software industry is in Crisis!
Software in Crisis
As per the IBM report, “31% of the project get cancelled before they are
completed, 53% overrun their cost estimates by an average of 189% and for
every 100 projects, there are 94 restarts”.
Productivity graph
Factors Contributing to the Software Crisis
• Larger problems,
• Lack of adequate training in software engineering,
• Increasing skill shortage,
• Low productivity improvements.
Some Software Failures
Ariane 5
Y2k Problem
The Patriot Missile
Windows XP
No Silver Bullet in Software Engineering
The hardware cost continues to decline drastically.
There is no single development, either in technology or in management
technique, that by itself promises even one order of magnitude improvement
in productivity.
The hard part of building software is the specification, design and testing of
this conceptual construct, not the labor of representing it and testing the
correctness of representation.
What is Software?
Documentation Manuals
Role of Management in Software Development
Role of Management in Software Development
The People
Software development requires good managers.
A good manager cannot ensure the success of the project, but can increase the
probability of success.
Managers face challenges.
◦ Requires mental toughness.
◦ Need to plan for the best, but be prepared for the worst.

Manager selection is most crucial and critical.


It is the responsibility of a manager to manage, motivate, encourage, guide and
control the team.
Managing People
However splendid the tools and techniques, software development relies on human
creativity.
◦ One extreme school of management sees people as inherently lazy and need to be told clearly
what to do, given frequent deadlines and threatened with the consequences of poor
performance.
◦ The opposite is the belief that people are motivated by rewards such as respect, praise and
money.
◦ Developing software probably fits somewhere between these extremes, with a need for some
autonomy and some control.
Another factor is the individual variability between software developers – some are fast
and effective, while some are slower and less effective.
◦ If we assume that this is crucial, then the logic is to hire only good developers and fire (or avoid
hiring) bad ones.
◦ On the other hand, we could accept diversity and plan accordingly.
The Product
Product: A solution to customer’s problems.
The objectives and scope of work should be defined clearly to understand the
requirements.
Without well defined requirements, it may be impossible to define reasonable
estimates of the cost, development time and schedule for the project.
The Process
The way in which we produce software.
It provides the framework from which a comprehensive plan for software
development can be established.
If the process is weak, the end product will undoubtedly suffer.
Capability Maturity Model(CMM) is a standard for process framework.
The Project
A proper planning is required to monitor the status of development.
Most of the projects are coming late with cost overruns of more than 100%.
In order to manage a successful project, we must understand what can go
wrong and how to do it right.
Software surprises are always risky.
Difference between Process, Product and Project
A software process specifies a method of development software.
A software project, on the other hand is a development project in which a software
process is used.
Software products are the outcomes of a software project.
Each software development project starts with some needs and (hopefully) ends with
some software that satisfies those needs. A software process specifies the abstract set
of activities that should be performed to go from user needs to final product. The actual
act of executing the activities for some specific user needs is a software project. And all
the outputs that are produced while the activities are being executed are the products.
What is Software Engineering?
Fritz Bauer defined software engineering as:
“The establishment and use of sound engineering principles in order to obtain
economically developed software that is reliable and works efficiently on real
machines”.
Types of Software
•System Software – a collection of programs written to service other programs.
•Application Software – stand- alone programs to solve a specific business need.
•Engineering/scientific software – “number crunching” programs that range from astronomy to
volcanology, from automotive analysis to orbital dynamics etc.
•Embedded Software – specialized for the hardware that it runs on and has time and memory
constraints.
•Product-line Software – designed to provide a specific capability for use by many different
customers.
•Web/Mobile applications – encompasses both browser-based apps and software that resides on
mobile devices.
•Artificial intelligence software – Applications within this area include robotics, expert systems,
pattern recognition etc.
Software Process
The software process is the way in which we produce software.
Why is it difficult to improve software process ?
• Not enough time
• Lack of knowledge
• Wrong motivations
• Insufficient commitment
Software Characteristics
 Software does not wear out

Hardware Software
Software Characteristics
 Software is not manufactured.
 Reusability of components
 Software is flexible
Software Myths
Company has latest computers and state-of-the-art software tools, so we shouldn’t worry about the
quality of the product.
 The infrastructure is only one of the several factors that determine the quality of the product!

Software is easy to change.


A general statement of objectives is sufficient to get started with the development of software.
Missing/vague requirements can easily be incorporated/detailed out as they get concretized.
Software with more features is better software.
Software can work right the first time.
Aim is to develop working programs.
 Objective is to develop good quality maintainable programs!

The only deliverable for a software development project is the tested code.
 Tested code is only one of the deliverable!
Deliverables and Milestones
Different deliverables are generated during software development.
 The examples are source code, user manuals, operating procedure manuals etc.
The milestones are the events that are used to ascertain the status of the
project.
 Finalization of specification is a milestone. Completion of design documentation is
another milestone.
The milestones are essential for project planning and management.
Generic and Customized Software Products
Generic products are developed for anonymous customers. The target is
generally the entire world and many copies are expected to be sold.
Infrastructure software like operating system, compilers, analyzers, word
processors, CASE tools etc. are covered in this category.
The customized products are developed for particular customers. The specific
product is designed and developed as per customer requirements. Most of the
development projects (say about 80%)come under this category.
Software Life Cycle Models
The period of time that starts when a software product is conceived and ends
when the product is no longer available for use.
The software life cycle typically includes a requirement phase, design phase,
implementation phase, test phase, installation and check out phase, operation
and maintenance phase, and sometimes retirement phase.
Build and Fix Model
 Product is constructed without specifications or any attempt at design.
 Adhoc approach and not well defined.
 Simple two phase model.
 Suitable for small programming exercises of 100 or 200 lines
Waterfall Model
This model is named “waterfall model” because its diagrammatic representation
resembles a cascade of waterfalls.
Easy to understand.
Problems of waterfall model
• It is difficult to define all requirements at the beginning
of a project.
• This model is not suitable for accommodating any
change.
• A working version of the system is not seen until late in
the project’s life.
• It does not scale up well to large projects.
• Real projects are rarely sequential.
Iterative Enhancement Model
Iterative Enhancement Model
This model has the same phases as the waterfall model, but with fewer
restrictions.
Useable product is released at the end of the each cycle, with each release
providing additional functionality.
 Customers and developers specify as many requirements as possible and
prepare a SRS document.
 Developers and customers then prioritize these requirements.
 Developers implement the specified requirements in one or more cycles of
design, implementation and test based on the defined priorities.
Evolutionary Model
Evolutionary process model resembles iterative enhancement model. The same
phases as defined for the waterfall model occur here in a cyclical fashion.
This model differs from iterative enhancement model in the sense that this does
not require a useable product at the end of each cycle.
In evolutionary development, requirements are implemented by category
rather than by priority.
Prototype Model
Prototype Model
 The prototype may be a usable program but is not suitable as the final software
product.
 The code for the prototype is thrown away. However experience gathered helps
in developing the actual system.
 The development of a prototype might involve extra cost, but overall cost might
turnout to be lower than that of an equivalent system developed using the
waterfall model.
Spiral Model
Models do not deal with uncertainly which is inherent to software projects.
Important software projects have failed because project risks were neglected &
nobody was prepared when something unforeseen happened.
Barry Boehm recognized this and tired to incorporate the “project risk” factor
into a life cycle model.
Spiral Model
The radial dimension of the model represents the cumulative costs.
Each path around the spiral is indicative of increased costs.
The angular dimension represents the progress made in completing each cycle.
Each loop of the spiral from X-axis clockwise through 360 degrees represents
one phase.
Rapid Application Development Model
User participation is essential.
 Build a rapid prototype
 Give it to user for evaluation & obtain feedback
 Prototype is refined

Not an appropriate model in the absence of user participation.


V Life Cycle Model
V Life Cycle Model
V shaped model is the modified form of waterfall model with a special focus on
testing activities at every phase.
The model brings the quality into the development of our products.
The encouragement of writing test cases and test plans in the early phases of
software development life cycle is the real strength of this model.
We require more resources to implement this model as compared to waterfall
model.
LIMITATIONS
This model suffers from many disadvantages of waterfall model like non availability of
working version of the product until late in the life cycle, difficult to accommodate any
change etc. This model has also limited applications in today’s iterative software processes
Agile Software Development
Agile is a methodology that anticipates the need for flexibility and it focuses on
the delivery of individual pieces or parts of the software and not on the entire
application.
Agile Software Development
The philosophy encourages customer satisfaction and early incremental delivery of
software; small, highly motivated project teams; minimal software engineering work
products; and overall development simplicity.
The development guidelines stress delivery over analysis and design (although these
activities are not discouraged), and active and continuous communication between
developers and customers.
Why Agile development is important?
The modern software industry is fast-paced and ever changing.
Agile software engineering represents a reasonable alternative to conventional software
engineering for certain classes of software and certain types of software projects.
It has been demonstrated to deliver successful systems quickly.
Agile Software Development
There are several Agile methodologies being used.
One of the oldest is extreme programming, which is based on the idea that for
successful development to happen quickly, testing must be done regularly.
 In many cases, the tests must be written even before the code.

Another Agile methodology that is widely used is Scrum. In Scrum, specific goals
are set for a 30-day sprint, at which point the agreed-upon software is delivered.
Advantages of Agile Software Development
The idea behind Agile model, in which everyone -- including the business side --
stayed involved and informed in the development process, represented a
profound change in both the culture and a company's ability to get better
software to market more quickly.
Agile has been adapted and modified to fit organizations of all sizes and types.
The Agile also paved the way for the latest software development evolution,
DevOps.
Selection of Life Cycle Model
Selection of a model is based on:
a) Requirements
b) Development team
c) Users
d) Project type and associated risk
MCQ
Software is
(a) Superset of programs (b) subset of programs
(c) Set of programs (d) none of the above
Software engineering approach is used to achieve:
(a) Better performance of hardware (b) Error free software
(c) Reusable software (d) Quality software product
Milestones are used to
(a) know the cost of the project (b) know the status of the project
(c) know user expectations (d) none of the above
MCQ
Which model is most popular for student’s small projects?
(a) Waterfall model (b) Spiral model
(c) Quick and fix model (d) Prototyping model
SRS stands for
(a) Software requirements specification (b) Software requirements solution
(c) System requirements specification (d) none of the above
Spiral Model was developed by
(a) Bev Littlewood (b) Berry Boehm
(c) Roger Pressman (d) Victor Basili
End of the Chapter

You might also like