introduction -software engineering muhammad rizwan spring 2012

42
INTRODUCTION - SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Upload: sharleen-mcdowell

Post on 30-Dec-2015

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

INTRODUCTION -SOFTWARE ENGINEERING

MUHAMMAD RIZWAN

Spring 2012

Page 2: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

How to get in touch?2

Email: [email protected]

Office: F 2.7

Room No. : F 2.7

Software Engineering - 2012

Page 3: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Course Details3

Books Somerville, Ian. Software Engineering, 8th Edition, Addison-

Wesley, 2006 R.S. Pressman, Software Engineering: A Practitioner's

Approach, 6th ed., McGraw-Hill Book Co., NY, 2005 Policies

Attendance policy Mobile phone usage Assignment submission Quizzes Fines Plagiarism policy

Important Rule – Don’t Cheat! (There will not be a 2nd warning)

Software Engineering - 2012

Page 4: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Class Objectives4

Students will be able to evaluate software engineering techniques and approaches.

"It is important that students bring a certain ragamuffin barefoot irreverence to their studies. They are here not to worship what is known, but to question it."

- Jacob Bronowski, The Ascent of Man

Students will be able to exercise professional judgment in selecting an approach for a particular project based on an understanding of: How the present state of software practice came about What was tried in the past What worked and what did not work Why

Software Engineering - 2012

Page 5: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Lecture Outcomes5

At the end of this lecture you should be able to answer the following key questions: What is software engineering? Why is software engineering important? What is the role of software in today’s age?

Software Engineering - 2012

Page 6: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Course Outline

Evolving Role of Software Software Process Models Software Configuration management Requirements Analysis Use-Case Fundamentals UML Notations Actor-Goal Lists Class Diagrams Sequence Diagrams ArchitectureArchitectural Patterns Decision TablesUser Interface DesignFacts and Fallacies of Software Engineering

Software Engineering IThis Semester

Software Engineering IINext Semester

Requirements Analysis and Architecture

Design and Implementation

Page 7: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Engineering7

“Its not just oil – its liquid engineering!”- Caltex Advertisement

Software Engineering - 2012

Page 8: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

1-8

What is (not) S.E.?

Not just software programming Individual vs. team

Not just a process Field that studies several different processes

Page 9: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

What is Software Engineering?

9

An Exercise: List all the ways in which Building a tinker-toy car for fun is different from

designing a new automobile Building a tree-house is different from the architecture of

a high-rise office building

So, how might software “engineering” be different from writing a 50-line Java applet?

Software Engineering - 2012

Page 10: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

1-10

Developing software

Product CS201 (Operating Systems) CS425 (Distributed Computing) ...

Process ISE103 (Computer Programming) CS340/350 (Software Engineering I/II) CS860 (Object Oriented Analysis & Design)

People

Page 11: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

1-11

Software varies

Size How humans interact with it Requirements stability/knowledge Need for reliability Need for security Portability Cost

Page 12: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Microsoft Powerpoint

Size: large Interactiveness: high Requirements: frequent new features Reliability: moderate Security: low (at least used to be) Portability: high Cost: high

Software Engineering - 2011

12

Page 13: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

1-13

Space shuttle software Size: moderate to large Interactiveness: low Requirements: stable Reliability: very high Security: low Portability: low Cost: high

Page 14: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

1-14

Online shopping software Size: moderate Interactiveness: high Requirements: frequent new features Reliability: moderate Security: high Portability: low Cost: low

Page 15: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

1-15

Your example

Size: Interactiveness: Requirements: Reliability: Security: Portability: Cost:

Page 16: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

What will you learn?16

Understanding, clarifying and documenting the requirements for a customer

Planning how to conduct a project

Designing a software system at the architectural and detailed levels

Reviewing and testing designs and implementations

Software Engineering - 2012

Page 17: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Software Engineering17

What is Software? The programs, routines, and symbolic languages that

control the functioning of the hardware and direct its operation.

A set of instructions that cause a computer to perform one or more tasks. The set of instructions is often called a program or, if the set is particularly large and complex, a system.

Programs are written in programming languages, especially designed to facilitate the creation of software

Packaged software such as word processors, spreadsheets, graphics and drawing tools, email systems, and games are widely available and used

Software Engineering - 2012

Page 18: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Software costs

Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost.

Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs.

Software engineering is concerned with cost-effective software development.

Page 19: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Software Engineering19

What is Engineering? Engineering is the discipline and profession of

applying technical, scientific and mathematical knowledge in order to utilize natural laws and physical resources to help design and implement materials, structures, machines, devices, systems, and processes that safely realize a desired objective. [Wikipedia]

Software Engineering - 2012

Page 20: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Software Engineering20

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 [NAU69].

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.

Software engineering encompasses a process, management techniques, technical methods, and the use of tools.

Page 21: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Why does Software Engineering matter?

21

Software’s contribution to economies (US, India, Pak…)

Role in infrastructure not just the Internet transportation, energy, medicine, finance

How good is our software? failed developments, accidents & poor quality software

Software Engineering - 2012

Page 22: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

22

Motivation for Studying

IT Projects have terrible track record A 1995 Standish Group study (CHAOS) found

that only 16.2% of IT projects were successful Over 31% were canceled before completion,

costing over 81B$ in US alone The need for IT Projects keeps increasing

In 1998, corporate America issued 200,000 new application development projects

In 2001, there were 300,000 new IT projects In 2003, over 500,000 new IT projects were

started http://www.standishgroup.com/press/article.php?id=2Software Engineering - 2012

Page 23: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

23

CHAOS research study

Project success rates have increased to just over a third or 34% in 2003 and 35% in 2006 of all projects. This is a 100% plus improvement over the 16% rate in 1994. Project failures in 2006 have declined to 19% of all projects

from the 31% in 1994. Challenged projects account for the remaining 51%.

46% of this 51% had a cost overrun of less than 20% of the estimated cost.

Lost dollar value for US projects in 2002 is estimated at $38 billion with another $17 billion in cost overruns for a total project waste of $55 billion against $255 billion in project spending. In 1994, The Standish Group estimated US IT projects had a

waste of $140 billion ($80 billion in failed projects) against $250 billion in project spending. Software Engineering - 2012

Page 24: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Accidents24

Therac-25 (1985-87) Ariane-5 (June 1996) London Ambulance Service

(1992) 7 out of every 10 major

weapons development programs are encountering software problems and the rate is increasing

Some interesting readings can be found at http://sunnyday.mit.edu/accidents/index.html

Software Engineering - 2012

Page 25: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Software products (Types)

Generic products Stand-alone systems that are marketed and sold to

any customer who wishes to buy them. Examples – PC software such as graphics programs,

project management tools; CAD software; software for specific markets such as appointments systems for dentists.

Customized products Software that is commissioned by a specific

customer to meet their own needs. Examples – embedded control systems, air traffic

control software, traffic monitoring systems.

Chapter 1 Introduction

25

Page 26: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Frequently asked questions about software engineering

Chapter 1 Introduction

26

Question Answer

What is software? Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.

What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.

What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production.

What are the fundamental software engineering activities?

Software specification, software development, software validation and software evolution.

What is the difference between software engineering and computer science?

Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

What is the difference between software engineering and system engineering?

System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process.

Page 27: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Frequently asked questions about software engineering

Question Answer

What are the key challenges facing software engineering?

Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software.

What are the costs of software engineering?

Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.

What are the best software engineering techniques and methods?

While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. You can’t, therefore, say that one method is better than another.

What differences has the web made to software engineering?

The web has led to the availability of software services and the possibility of developing highly distributed service-based systems. Web-based systems development has led to important advances in programming languages and software reuse.

Chapter 1 Introduction

27

Page 28: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Essential attributes of good software

Chapter 1 Introduction

28

Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment.

Dependability and security

Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system.

Efficiency Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.

Page 29: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

1-29

Software process

Pressman: “A framework for the tasks that are required to build high-quality software”

IEEE 1074: “A set of activities performed towards a specific purpose”

My View: “The steps a particular group follows to develop software”

Page 30: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Software process activities

Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation.

Software development, where the software is designed and programmed.

Software validation, where the software is checked to ensure that it is what the customer requires.

Software evolution, where the software is modified to reflect changing customer and market requirements.

Chapter 1 Introduction

30

Page 31: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Application types Stand-alone applications

These are application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network.

Interactive transaction-based applications Applications that execute on a remote computer and are

accessed by users from their own PCs or terminals. These include web applications such as e-commerce applications.

Embedded control systems These are software control systems that control and

manage hardware devices. Numerically, there are probably more embedded systems than any other type of system.

Chapter 1 Introduction

31

Page 32: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Application types

Batch processing systems These are business systems that are designed to

process data in large batches. They process large numbers of individual inputs to create corresponding outputs.

Entertainment systems These are systems that are primarily for personal use

and which are intended to entertain the user. Systems for modelling and simulation

These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects.

Chapter 1 Introduction

32

Page 33: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Application types

Data collection systems These are systems that collect data from their

environment using a set of sensors and send that data to other systems for processing.

Systems of systems These are systems that are composed of a

number of other software systems.

Chapter 1 Introduction

33

Page 34: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Software engineering and the web The Web is now a platform for running application

and organizations are increasingly developing web-based systems rather than local systems.

Web services (discussed in Chapter 19) allow application functionality to be accessed over the web.

Cloud computing is an approach to the provision of computer services where applications run remotely on the ‘cloud’. Users do not buy software but pay according to

use.

Chapter 1 Introduction

34

Page 35: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Web-based software engineering Web-based systems are complex distributed

systems but the fundamental principles of software engineering discussed previously are as applicable to them as they are to any other types of system.

The fundamental ideas of software engineering, discussed in the previous section, apply to web-based software in the same way that they apply to other types of software system.

Chapter 1 Introduction

35

Page 36: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

36

Hardware vs. Software

Hardware Software

Manufactured

Wears out Built using components Relatively

simple

Developed/

Engineered Deteriorates Custom built

ComplexSoftware Engineering - 2011

Page 37: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

37

Manufacturing vs. Development Once a hardware product has been

manufactured, it is difficult or impossible to modify. In contrast, software products are routinely modified and upgraded.

In hardware, hiring more people allows you to accomplish more work, but the same does not necessarily hold true in software engineering.

Unlike hardware, software costs are concentrated in design rather than production.

Software Engineering - 2011

Page 38: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

38

Software Myths

If we get behind schedule, we can add more programmers and catch up.

A general statement about objectives is sufficient to begin building programs.

Change in project requirements can be easily accommodated because software is flexible.

Software Engineering - 2011

Page 39: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

39

Software Myths

Once we write a working program, we’re done.

Until I get the program running, I have no way of assessing its quality.

The only deliverable work product for a successful project is the working program.

Software engineering will make us create too much documentation and will slow us down.

Software Engineering - 2011

Page 40: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

40

Customer Myths

“ A general statement of objectives is sufficient to begin writing programs - we can fill in the details later …”

“Project requirements continually change but this change can easily be accommodated because software is flexible …”

Software Engineering - 2011

Page 41: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Assignments

Write down brief description of few software applications that are being used at various organizations in Pakistan (Deadline – 12th Feb)

Read Chapter 1 and be prepare for quiz Presentations:

Chapter 1 1.2 Professional and Ethical Responsibility of a SE

and Q1.10

41

Software Engineering - 2011

Page 42: INTRODUCTION -SOFTWARE ENGINEERING MUHAMMAD RIZWAN Spring 2012

Questions?42

Software Engineering - 2011