Software Engineering (2115111)
Module – 1
Introduction To Software Engineering and Process
Models
Prof: Nilambari G. Narkar
Computer Engineering Department
Nature of Software
• Software : Dual Role
– It is a product.
– Vehicle for delivering a product.
• Software delivers most important product of our time –
Information.
• Significant Change.
• Team of software specialist.
• Questions:
– Why does it take so long to get software finished?
– Why are development cost so high?
– Why cannot we find all errors before we give software to our
customer?
– Why do we continue too have difficulty in measuring progress
as software is being developed & maintained?
Nature of Software
• Defining Software:
A textbook description of software might take the
following form:
Software is:
(1) instructions (computer programs) that when executed
provide desired features, function, and performance.
(2) data structures that enable the programs to
adequately manipulate information.
(3) descriptive information in both hard copy and virtual
forms that describes the operation and use of the
programs.
Nature of Software
• Characteristic of Software:
– Software is developed or engineered; it is not
manufactured in the classical sense.
– Software doesn’t “wear out.”
Characteristic of Software(Contd…)
• Although the industry is moving toward
component-based construction, most software
continues to be custom built.
Nature of Software
• Software Application Domains:
– System software
– Application software
– Engineering/scientific software
– Embedded software
– Product-line software
– Web/Mobile applications
– Artificial intelligence software
Nature of Software
• Legacy Software:
– Legacy software systems were developed decades ago and
have been continually modified to meet changes in business
requirements and computing platforms.
– The proliferation of such systems is causing headaches for
large organizations who find them costly to maintain and risky
to evolve.
• Legacy systems often evolve for one or more of the
following reasons:
– The software must be adapted to meet the needs of new
computing environments or technology.
– The software must be enhanced to implement new business
requirements.
– The software must be extended to make it interoperable with
other more modern systems or databases.
– The software must be re-architected to make it viable within a
network environment.
Software Engineering
• A few simple realities:
– A concerted effort should be made to understand the
problem before a software solution is developed.
– A design becomes a pivotal activity.
– A software should exhibit high quality.
– A software should be maintainable.
A simple realities lead to one conclusion: Software
in all of its forms and across all of its application
domains should be engineered. And that leads us to
the topic - software engineering.
Software Engineering
• A definition proposed by Fritz Bauer at the seminal conference still
serves as a basis for discussion:
– Software engineering is the establishment and use of sound engineering
principles in order to obtain economically software that is reliable and works
efficiently on real machines.
• The IEEE [IEE93a] has developed a more comprehensive definition
when it states:
– Software Engineering: (1) The application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of
software; that is, the application of engineering to software. (2) The study of
approaches as in (1).
Software Engineering
• Software engineering is a layered technology.
Software Process
• Process
• Activity
• Action
• Task
• A generic process framework for software
engineering encompasses five activities:
– Communication.
– Planning.
– Modeling.
– Construction.
– Deployment.
Software Process
• Typical umbrella activities include:
– Software project tracking and control.
– Risk management.
– Software quality assurance.
– Technical reviews.
– Measurement.
– Software configuration management.
– Reusability management.
– Work product preparation and production.
Generic Process Model
Generic Process Model
Capability Maturity Model
• Used to rate organization software
development process.
– Level 1 : Initial
– Level 2 : Repeatable
– Level 3 : Defined
– Level 4 : Managed
– Level 5 : Optimizing
Prescriptive Process Models
• The Waterfall Model :
Incremental Process Models
Evolutionary Process Models
• Prototyping
Evolutionary Process Models
• RAD
Evolutionary Process Models
• The Spiral Model
Agile process
• Any agile software process is characterized in a manner that
addresses a number of key assumptions:
1. It is difficult to predict in advance which software requirements
will persist and which will change. It is equally difficult to predict
how customer priorities will change as the project proceeds.
2. For many types of software, design and construction are
interleaved. That is, both activities should be performed in
tandem so that design models are proven as they are created. It
is difficult to predict how much design is necessary before
construction is used to prove the design.
3. Analysis, design, construction, and testing are not as predictable
(from a planning point of view) as we might like.
• How do we create a process that can manage unpredictability?
– An agile process, therefore, must be adaptable.
Agility Principles
• The Agile Alliance defines 12 agility principles for those who want to
achieve agility:
1. Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile
processes harness change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the
project.
5. Build projects around motivated individuals. Give them the environment
and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and
within a development team is face-to-face conversation.
Agility Principles (Contd…)
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace
indefinitely.
9. Continuous attention to technical excellence and good design
enhances agility.
10. Simplicity—the art of maximizing the amount of work not
done—is essential.
11. The best architectures, requirements, and designs emerge from
self– organizing teams.
12. At regular intervals, the team reflects on how to become more
effective, then tunes and adjusts its behavior accordingly.
Extreme Programming (XP)
• XP Values:
– Communication
– Simplicity
– Feedback
• Implemented software
• customer
• other software team members
– Courage (Discipline)
– Respect
The XP Process
Class, Responsibility, Collaboration(CRC)
Industrial XP
• Readiness assessment: Prior to the initiation of an IXP project, the
organization should conduct a readiness assessment.
• The assessment ascertains whether
– An appropriate development environment exists to support IXP
– The team will be populated by the proper set of stakeholders
– Organization has a distinct quality program and supports
continuous improvement
– Organizational culture will support the new values of an agile
team
– The broader project community will be populated appropriately.
• Project community
• Project chartering
• Test-driven management
• Retrospectives
• Continuous learning
Industrial XP
• IXP modifies a number of existing XP practices:
– Story-driven development
– Domain-driven design
– Pairing
Scrum
Kanban