How do Software/IT Companies
(Google, IBM, Microsoft)
make
Software?
Slide 1
Software Engineering
CSX-303
Subject Incharge
Dr. Paramvir Singh
Assistant Professor
E-mail: singhpv@nitj.ac.in
Slide 2
Recommended Course Textbooks
Roger S. Pressman (2010)
Software Engineering:
A Practitioner's Approach,
7th edition, McGraw-Hill, USA
Sommerville I. (2001,2004)
Software Engineering 9th Edition (/Latest), AddisonWesley, Harlow, Essex,UK
Stevens P. with Pooley, R. (2010)
Using UML: Software Engineering with Objects and
Components,
Addison-Wesley, Harlow, Essex, UK
Slide 3
What is software?
Computer programs and associated documentation
Slide 4
Software Vs Hardware
Software is developed or engineered; it is not
manufactured in the classical sense
Impacts the management of software projects
Software doesn't wear out
Hardware bathtub curve compared to the
software ascending spiked curve
Although the industry is moving toward
component-based construction, most software
continues to be custom built (it is still complex to
build)
Slide 5
Software Vs Hardware
Slide 6
What is Engineering?
Design, Implement and Maintain/Manage a Product
Slide 7
Why Software Engineering?
Software development is hard !
Important to distinguish easy systems (one
developer, one user, experimental use only) from
hard systems (multiple developers, multiple users,
products)
Experience with easy systems is misleading
One person techniques do not scale up
Analogy with bridge building:
Over a Stream = easy, one person job
Over a River ?
(the techniques do not scale)
Slide 8
Why Software Engineering ?
The problem is complexity
Many sources, but size is key:
UNIX contains 4 million lines of code
Windows 7 contains 108 lines of code
Software engineering is about managing
this complexity.
Slide 9
Outline Syllabus
Introduction to Software Engineering
Software Process models
Software requirements
Formal Specification
Software Design and Implementation
Software verification, validation and testing
Management of Software Projects & Cost Estimation
Slide 10
What is software engineering?
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.
Software engineering is the application of a
systematic, disciplined, quantifiable approach to the
development, operation and maintenance of
software.
Slide 11
What is the difference between software
engineering and computer science?
Computer Science
Software Engineering
is concerned with
theory
fundamentals
Algorithms, date structures, complexity
theory, numerical methods
SE deals with practical problems in
complex software products
the practicalities of developing
delivering useful software
Computer science theories are currently insufficient to act as
a complete underpinning for software engineering, BUT it is
a foundation for practical aspects of software engineering
Slide 12
Changing Nature of Software
System software (OS, drivers, file management utility)
Application software (Hostel Management system, Lib. System)
Engineering/scientific software (Satellite, Calculator, Earthquake
intensity measurement)
Embedded software (AC, TV etc)
Product-line software (e.g., inventory control, word processing,
multimedia)
Web applications (Gtalk, Websites, Email services)
Artificial intelligence software (Robotic, Gaming, ANN)
Open world computing (small, wireless devices)
Open source (operating systems, databases, development
environments)
The ".com" marketing applications
Slide 13
Use SE to ENSURE
Quality
Software is of highest quality
Time Schedule
Software finishes on estimated time
Cost Schedule
Software consumes estimated budget
Managed
Software is easily manageable after release
Slide 14
The Four Ps of Software Engineering
People the most important element of a successful project
Product the software to be built
Process the set of framework activities and software engineering tasks to get the
job done
Project all work required to make the product a reality
Slide 15
The Four Ps of Software Engineering
Slide 16
The Four Ps of Software Engineering
Slide 17
The Four Ps of Software Engineering
Slide 18
The Four Ps of Software Engineering
Slide 19
The Four Ps of Software Engineering
Slide 20
The Four Ps of Software Engineering
Process 1
OR Process 2
OR Process 3
Selected based on:
Cost
Time
Quality
Resources
End Product
Slide 21
The Four Ps of Software Engineering
Selected based on:
Cost
Time
Quality
Resources
Slide 22
What is a Process?
(Webster) A system of operations in producing something; a
series of actions, changes, or functions that achieve an end or a
result
(IEEE) A sequence of steps performed for a given purpose
Slide 23
Generic Process Framework
Analysis
Design
Code
Test
Obsolete Approach
Communication
Planning
Modelling
Analysis
Design
Construction
Code
Deployment
Test
Modern Approach
Slide 24
Generic Process Framework
Communication
Involves communication among the customer and other stake holders;
encompasses requirements gathering
Planning
Establishes a plan for software engineering work; addresses technical tasks,
resources, work products, and work schedule
Modeling (Analyze, Design)
Encompasses the creation of models to better understand the requirements and the
design
Construction (Code, Test)
Combines code generation and testing to uncover errors
Deployment
Involves delivery of software to the customer for evaluation and feedback
Slide 25
Software Engineering is a Layered
Technology
Tools
Methods
Processes
Quality Focus
Slide 26
Process, Methods, and Tools
Process
Provides the glue that holds the layers together; enables
rational and timely development; provides a framework for
effective delivery of technology; forms the basis for
management; provides the context for technical methods,
work products, milestones, quality measures, and change
management
Methods
Provide the technical "how to" for building software; rely on a
set of basic principles; encompass a broad array of tasks;
include modeling activities
Tools
Provide automated or semi-automated support for the process
and methods (i.e. CASE tools)
Slide 27
Umbrella Activities
(In addition to General Framework Activities)
Software requirements management
Software project planning
Software project tracking and oversight
Software quality assurance
Software configuration management
Software subcontract management
Formal technical reviews
Risk management
Measurement process, project, product
Reusability management (component reuse)
Work product preparation and production
Slide 28
Capability Maturity Model
(CMM)
Developed in 1987 by the Software Engineering Institute (SEI) at
Carnegie-Mellon University
Described in the book Managing the Software Process in 1989 by
Watts Humphrey
Published as a separate document: Capability Maturity Model for
Software in 1991
Slide 29
Immature Software Organizations
Software processes are generally improvised
If a process is specified, it is not rigorously followed or enforced
The software organization is reactionary
Managers only focus on solving immediate (crisis) problems
Schedules and budgets are routinely exceeded because they are not
based on realistic estimates
When hard deadlines are imposed, product functionality and quality
are often compromised
There is no basis for judging process quality or for solving product
or process problems
Activities such as reviews and testing are curtailed or eliminated
when projects fall behind schedule
Slide 30
Five Levels of Software Process
Maturity
31
Slide 31
Characteristics of Each Level
Initial Level (Level 1)
Characterized as ad hoc, and occasionally even chaotic
Few processes are defined, and success depends on
individual effort
Repeatable (Level 2)
Basic project management processes are established to track
cost, schedule, and functionality
The necessary process discipline is in place to repeat earlier
successes on projects with similar applications
Slide 32
Characteristics of Each Level
(continued)
Defined (Level 3)
The software process for both management and engineering
activities is documented, standardized, and integrated into a
standard software process for the organization
All projects use an approved, tailored version of the
organization's standard software process for developing and
maintaining software
Managed (Level 4)
Detailed measures of the software process and product
quality are collected
Both the software process and products are quantitatively
understood and controlled
Slide 33
Characteristics of Each Level
(continued)
Optimized (Level 5)
Continuous process improvement is enabled by quantitative
feedback from the process and from piloting innovative ideas
and technologies
Slide 34
Visibility into the Software Process
35
Slide 35
Probability of Schedule and Budget
Slide 36
The CMM Structure
Slide 37
Key Process Areas
38
Slide 38
Software Process Assessments
39
Slide 39