chapter 1: introduction to software engineering · pdf file3 by the end of this session, you...

22
1 Chapter 1: Introduction to Software Engineering

Upload: vungoc

Post on 01-Mar-2018

221 views

Category:

Documents


1 download

TRANSCRIPT

1

Chapter 1: Introduction to Software Engineering

2

Overview

Learning Objectives

What is software engineering?

Why is software engineering important?

Professional and ethical considerations

3

By the end of this session, you will..

Understand what software engineering is

Understand why software engineering is important

Know answers to key questions related to the software

engineering discipline

Understand some professional and ethical issues that are

important to software engineers.

4

Activity

Think about all the devices and systems

that you encounter in your everyday life

which have software controlling them…

List as many as you can

Virtually all countries

depend on complex

computer-based

systems.

5

Why is Software Engineering important?

Complex systems need a disciplined approach for designing,

developing and managing them.

What could go wrong?

2009: Computer glitch delays flights

http://edition.cnn.com/2009/WORLD/europe/10/03/uk.flights.delayed

1996: Ariane 5 explosion (10 yrs $7billion)

http://www.youtube.com/watch?v=z-r9cYp3tTE

http://www.around.com/ariane.html

6

Software Engineering

Software Crisis

The term software engineering first appeared in the 1968

NATO Software Engineering Conference and was meant to

provoke thought regarding what was then called the “software

crisis”..

“.. An engineering discipline that is concerned with all aspects

of software production from the early stages of system

specification to maintaining the system after it has gone inot

use.” Sommerville, pg.7

7

Software Engineering vs. Computer Science

“Computer science is no more about computers than

astronomy is about telescopes.” Edsger Dijkstra

Computer Science

• Theory

• Fundamentals

Software Engineering

• Practicalities of software design, development and delivery

8

Software Engineering vs. Systems Engineering

Systems Engineering:

Interdisciplinary engineering field (computer, software, and process eng.)

Focuses on how complex engineering projects should be designed and

managed

Systems Engineering

• All aspects of computer-based systems development:

• HW + SW + Process

Software Engineering

• Deals with the design, development and delivery of SW

Software

Programs

DocumentationData

9

What is Software?

System Documentation

User Documentation

10

What is a software process?

Activities and results that produce a software product:

SW Process Activity What is going on there?

SpecificationWhat does the customer need?What are the constraints?

Development Design & programming

Validation Checking whether it meets requirements

Evolution Modifications (e.g. customer/market)

11

What is a software process model?

Description of the software process that represents one view,

such as the activities, data or roles of people involved.

Examples of views Focus on…

WorkflowActivities = human actionsWhat is input, output, and dependencies

DataflowActivities = transformations of informationHow the input is transformed into output

Role/ActionWhat is the role of people involved in each step of the process?

12

Software process models

Waterfall approach Iterative development Component-Based Software Engineering CBSE

assembled form existing components

13

Cost distribution Custom software development (Bespoke)Software Model

Cost units

Cost distribution

Software development activity

Waterfall Model

0 25 50 75 100

Specification Design Development Integration and testing

Iterative Development

0 25 50 75 100

Specification Iterative Development System testing

Component-based Software Engineering

0 25 50 75 100

Specification Development Integration and testing

Development and evolution costs for long-lifetime systems

0 100 200 300 400

System development System evolution

14

Cost distribution Generic software development

Product development costs

0 25 50 75 100

Specification Development System testing

15

What is CASE?

Computer Aided Software Engineering

Programs that support

Requirements analysis

System modeling

Debugging

Testing

16

Attributes of good software

Functional attributes (performance; what the system does)

Non-functional attributes (quality; how the system does it)

Can you think of more attributes that may be significant?

Product Characteristic Description

Maintainability Evolution qualities such as Testability, extensibility

Dependability Reliability, security, safety

Efficiency Response time, processing time, memory utilization

Usability Easy to learn how to use the system by target users, Efficient to use the system by users to accomplish a taskSatisfying to use by intended users

17

Activity

What are the key attributes for..

Interactive game Banking system Cardiac monitor in an ICU unit

Players, score, scenes, theme,

Client accounts, stocks bonds, money transfers

heart rate, temperature, blood pressure

18

Challenges facing software engineering

Challenge Why? Software needs to ..

HeterogeneityDifferent computers, different platforms, different support systems

Cope with this variability

DeliveryBusinesses are more responsive supporting software needs to evolve as rapidly

Be delivered in shorter time without compromising quality

TrustSoftware is a part of many aspects of our lives (work, study, leisure)

Demonstrate that it can be trusted by users

19

Professional and ethical responsibility

Standards

Confidentiality

Competence

Intellectual property rights

Computer misuse

ACM/IEEE-CS Code of ethics

Public, Client/Employer, Product, Judgment, Management, Professions, Colleagues, Self

20

Case Study: ConfidentialityKhalid is a software engineer working for a Saudi telecom company. His team have recently solved a compatibility problem with the local infrastructure. This has given his company a competitive advantage over other local service providers. His friend, Fahd is a software engineer working for another telecom company and enquired about how

they solved the problem.

What should Khalid do? What are the consequences? Link your answers to the codes of ethics that we discussed in class.

21

Case Study:

Ethical DilemmaYou are the engineer on the design of the control system for

a medication system. You have added many safety

screens to the user interface in order to make sure that the

doctor or nurse has appropriately set the dosage. You also

add a safety feature in which the device stops working after

a certain period of time to make sure that it has been

Your calibrated in order to not deliver the incorrect dosage.

manager puts a lot of pressure on you to remove the

He believes that the company could out.-extra safety time

sell more units if the safety lock out wasn't installed in the

unit; the unit would cost less, and the users won't have to

confront a possibly annoying time out.

What do you do? What are the consequences? Link your

answers to the codes of ethics that we discussed in class.

Source: (Inacio, 1998 )

http://www.ece.cmu.edu/~koopman/des_s99/ethics/

22

Assignments

Group A: Describe an incident that occurred in our local context

which involved computer errors. Include the problem

description, its impact and your thoughts on where the

failure occurred and how it could have been avoided.

Group B: [Dr. Areej’s Section]

Find an incident that occurred in our local context which

involved computer errors. Bookmark it on the Cap312

Favilous social bookmarking site.

Due: March 8th 2010. The favilous account will not accept

bookmarks after 5pm March 8th

Why do you

think software

engineering is

important?