Introduction to software engineering

39
Slide 1 How do Software/IT Companies (Google, IBM, Microsoft) make Software?

description

a basic introduction to software engineering

Transcript of Introduction to software engineering

Page 1: Introduction to software engineering

Slide 1

How do Software/IT Companies

(Google, IBM, Microsoft)

make

Software?

Page 2: Introduction to software engineering

Slide 2

Software Engineering

CSX-303

Subject Incharge Dr. Paramvir Singh

Assistant Professor

E-mail: [email protected]

Page 3: Introduction to software engineering

Slide 3

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), Addison-Wesley, Harlow, Essex,UK

• Stevens P. with Pooley, R. (2010)

Using UML: Software Engineering with Objects and Components,

Addison-Wesley, Harlow, Essex, UK

Page 4: Introduction to software engineering

Slide 4

What is software?

• Computer programs and associated documentation

Page 5: Introduction to software engineering

Slide 5

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)

Page 6: Introduction to software engineering

Slide 6

Software Vs Hardware

Page 7: Introduction to software engineering

Slide 7

What is Engineering?

• Design, Implement and Maintain/Manage a Product

Page 8: Introduction to software engineering

Slide 8

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)

Page 9: Introduction to software engineering

Slide 9

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.

Page 10: Introduction to software engineering

Slide 10

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

Page 11: Introduction to software engineering

Slide 11

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.

Page 12: Introduction to software engineering

Slide 12

What is the difference between software

engineering and computer science?

Computer Science Software Engineering

is concerned with

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

theory

fundamentals

Algorithms, date structures, complexity

theory, numerical methods

the practicalities of developing

delivering useful software

SE deals with practical problems in

complex software products

Page 13: Introduction to software engineering

Slide 13

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

Page 14: Introduction to software engineering

Slide 14

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

saksham
Sticky Note
Resources- personal+hardware+software
Page 15: Introduction to software engineering

Slide 15

The Four P’s 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

Page 16: Introduction to software engineering

Slide 16

The Four P’s of Software Engineering

Page 17: Introduction to software engineering

Slide 17

The Four P’s of Software Engineering

Page 18: Introduction to software engineering

Slide 18

The Four P’s of Software Engineering

Page 19: Introduction to software engineering

Slide 19

The Four P’s of Software Engineering

Page 20: Introduction to software engineering

Slide 20

The Four P’s of Software Engineering

Page 21: Introduction to software engineering

Slide 21

The Four P’s of Software Engineering

End Product

Process 1

OR Process 2 OR Process 3

Selected based on:

•Cost

•Time

•Quality

•Resources

Page 22: Introduction to software engineering

Slide 22

The Four P’s of Software Engineering

Selected based on:

•Cost

•Time

•Quality

•Resources

Page 23: Introduction to software engineering

Slide 23

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

Page 24: Introduction to software engineering

Slide 24

Generic Process Framework

Analysis Design Code Test

Communication Planning Modelling Construction

Obsolete Approach

Modern Approach

Deployment

Analysis Design Code Test

Page 25: Introduction to software engineering

Slide 25

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

Page 26: Introduction to software engineering

Slide 26

Software Engineering is a Layered

Technology

Tools

Methods

Processes

Quality Focus

Page 27: Introduction to software engineering

Slide 27

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)

Page 28: Introduction to software engineering

Slide 28

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

Page 29: Introduction to software engineering

Slide 29

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

Page 30: Introduction to software engineering

Slide 30

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

Page 31: Introduction to software engineering

Slide 31 •31

Five Levels of Software Process

Maturity

Page 32: Introduction to software engineering

Slide 32

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

Page 33: Introduction to software engineering

Slide 33

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

Page 34: Introduction to software engineering

Slide 34

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

Page 35: Introduction to software engineering

Slide 35 •35

Visibility into the Software Process

Page 36: Introduction to software engineering

Slide 36

Probability of Schedule and Budget

Page 37: Introduction to software engineering

Slide 37

The CMM Structure

Page 38: Introduction to software engineering

Slide 38 •38

Key Process Areas

Page 39: Introduction to software engineering

Slide 39 •39

Software Process Assessments