+ All Categories
Home > Documents > An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An...

An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An...

Date post: 31-Jan-2018
Category:
Upload: phamminh
View: 230 times
Download: 0 times
Share this document with a friend
37
An Introduction to Software Engineering: Engineering: Chapter 1 Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 1
Transcript
Page 1: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

An Introduction to Software Engineering:Engineering:Chapter 1p

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 1

Page 2: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Objectivesj

To introduce software engineering and to explain To introduce software engineering and to explainits importance

To set out the answers to key questions about To set out the answers to key questions aboutsoftware engineering

To introduce ethical and professional issues and To introduce ethical and professional issues andto explain why they are of concern to softwareengineers

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 2

Page 3: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Topics coveredp

FAQs about software engineering FAQs about software engineering Professional and ethical responsibility

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 3

Page 4: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Software engineeringg g

The economies of ALL developed nations are The economies of ALL developed nations aredependent on software.

More and more systems are software controlledy Software engineering is concerned with theories,

methods and tools for professional softwared l tdevelopment.

Expenditure on software represents asignificant fraction of GNP in all developedsignificant fraction of GNP in all developedcountries.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 4

Page 5: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Software costs

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

Software costs more to maintain than it does todevelop. For systems with a long life,p y gmaintenance costs may be several timesdevelopment costs.

Software engineering is concerned with cost-effective software development.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 5

Page 6: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

FAQs about software engineeringQ g g

What is software? What is software? What is software engineering?

What is the difference between software What is the difference between softwareengineering and computer science?

What is the difference between software What is the difference between softwareengineering and system engineering?

What is a software process? What is a software process? What is a software process model?

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 6

Page 7: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

FAQs about software engineeringQ g g

What are the costs of software engineering? What are the costs of software engineering? What are software engineering methods?

What is CASE (Computer Aided Software What is CASE (Computer-Aided SoftwareEngineering)

What are the attributes of good software? What are the attributes of good software? What are the key challenges facing software

engineering?engineering?

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 7

Page 8: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What is software?

Computer programs and associated documentation suchp p gas requirements, design models and user manuals.

Software products may be developed for a particularcustomer or may be developed for a general market.y p g

Software products may be• Generic - developed to be sold to a range of different customers

e.g. PC software such as Excel or Word.• Bespoke (custom) - developed for a single customer according

to their specification. New software can be created by developing new

programs configuring generic software systems orprograms, configuring generic software systems orreusing existing software.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 8

Page 9: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What is software engineering?g g

Software engineering is an engineering discipline Software engineering is an engineering disciplinethat is concerned with all aspects of softwareproduction.p

Software engineers should adopt a systematicand organised approach to their work and useg ppappropriate tools and techniques depending onthe problem to be solved, the development

t i t d th il blconstraints and the resources available.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 9

Page 10: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What is the difference between software engineering and computer science?engineering and computer science?

Computer science is concerned with theory and Computer science is concerned with theory andfundamentals; software engineering is concernedwith the practicalities of developing andp p gdelivering useful software.

Computer science theories are still insufficient topact as a complete underpinning for softwareengineering (unlike e.g. physics and electrical

i i )engineering).

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 10

Page 11: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What is the difference between software engineering and computer science?engineering and computer science?

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 11

Page 12: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What is the difference between software engineering and system engineering?engineering and system engineering?

System engineering is concerned with all System engineering is concerned with allaspects of computer-based systemsdevelopment including hardware, software and

i i S ft i i iprocess engineering. Software engineering ispart of this process concerned with developingthe software infrastructure, control, applicationsthe software infrastructure, control, applicationsand databases in the system.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 12

Page 13: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What is the difference between software engineering and system engineering?

System engineers are involved in system

engineering and system engineering?

System engineers are involved in systemspecification, architectural design, integrationand deployment.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 13

Page 14: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What is a software process?p

A set of activities whose goal is the development A set of activities whose goal is the developmentor evolution of software.

Generic activities in all software processes are:p• Specification - what the system should do and its

development constraints• Development production of the software system• Development - production of the software system• Validation - checking that the software is what the

customer wants• Evolution - changing the software in response to

changing demands.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 14

Page 15: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Who does software engineering? g g

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 15

Page 16: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What is a software process model?p

A simplified representation of a software process A simplified representation of a software process,presented from a specific perspective.

Examples of process perspectives are• Workflow perspective - sequence of activities;• Data-flow perspective - information flow;• Role/action perspective - who does what.Role/action perspective who does what.

Generic process models• Waterfall;• Iterative development;• Component-based software engineering.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 16

Page 17: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What are the costs of software engineering?g g

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

Costs vary depending on the type of systembeing developed and the requirements of systemg p q yattributes such as performance and systemreliability.

Distribution of costs depends on thedevelopment model that is used.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 17

Page 18: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Activity cost distributiony

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 18

Page 19: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Product development costsp

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 19

Page 20: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What are software engineering methods?g g

Structured approaches to software development which Structured approaches to software development whichinclude system models, notations, rules, design adviceand process guidance.Model descriptions Model descriptions• Descriptions of graphical models which should be produced;

Rules• Constraints applied to system models;

Recommendations• Advice on good design practice;g g p ;

Process guidance• What activities to follow.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 20

Page 21: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What is CASE (Computer-Aided Software Engineering)Engineering)

Software systems that are intended to provide automated Software systems that are intended to provide automatedsupport for software process activities.

CASE systems are often used for method support. Upper-CASE

• Tools to support the early process activities of requirementsand design;and design;

Lower-CASE• Tools to support later activities such as programming,

d b i d t tidebugging and testing.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 21

Page 22: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What are the attributes of good software?g

The software should deliver the required functionality and The software should deliver the required functionality andperformance to the user and should be maintainable,dependable and acceptable.Maintainability Maintainability• Software must evolve to meet changing needs;

Dependability• Software must be trustworthy;

Efficiency• Software should not make wasteful use of system resources;y ;

Acceptability• Software must accepted by the users for which it was designed.

This means it must be understandable, usable and compatible

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 22

This means it must be understandable, usable and compatiblewith other systems.

Page 23: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

What are the key challenges facing software engineering?engineering?

Heterogeneity delivery and trust Heterogeneity, delivery and trust. Heterogeneity

• Developing techniques for building software that can cope withheterogeneous platforms and execution environments;

Delivery• Developing techniques that lead to faster delivery of software;Developing techniques that lead to faster delivery of software;

Trust• Developing techniques that demonstrate that software can be

t t d b ittrusted by its users.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 23

Page 24: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Professional and ethical responsibilityp y

Software engineering involves wider Software engineering involves widerresponsibilities than simply the application oftechnical skills.

Software engineers must behave in an honestand ethically responsible way if they are to bey p y yrespected as professionals.

Ethical behaviour is more than simply upholdingthe law.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 24

Page 25: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Issues of professional responsibilityp p y

Confidentiality Confidentiality• Engineers should normally respect the confidentiality

of their employers or clients irrespective of whetheror not a formal confidentialit agreement has beenor not a formal confidentiality agreement has beensigned.

Competencep• Engineers should not misrepresent their level of

competence. They should not knowingly accept workwhich is outwith their competencewhich is outwith their competence.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 25

Page 26: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Issues of professional responsibilityp p y

Intellectual property rights Intellectual property rights• Engineers should be aware of local laws governing the use of

intellectual property such as patents, copyright, etc. Theyshould be careful to ensure that the intellectual property ofshould be careful to ensure that the intellectual property ofemployers and clients is protected.

Computer misuse• Software engineers should not use their technical skills to

misuse other people’s computers. Computer misuse rangesfrom relatively trivial (game playing on an employer’s machine,sa ) to e tremel serio s (dissemination of ir ses)say) to extremely serious (dissemination of viruses).

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 26

Page 27: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

ACM/IEEE Code of Ethics

The professional societies in the US have The professional societies in the US havecooperated to produce a code of ethical practice.

Members of these organisations sign up to theg g pcode of practice when they join.

The Code contains eight Principles related to theb h i f d d i i d b f i lbehaviour of and decisions made by professionalsoftware engineers, including practitioners,educators, managers, supervisors and policy, g , p p ymakers, as well as trainees and students of theprofession.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 27

Page 28: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Code of ethics - preamblep

Preamble Preamble• The short version of the code summarizes aspirations at a high

level of the abstraction; the clauses that are included in the fullversion give examples and details of how these aspirationschange the way we act as software engineering professionals.Without the aspirations, the details can become legalistic andtedious; without the details, the aspirations can become highsounding but empty; together the aspirations and the detailssounding but empty; together, the aspirations and the detailsform a cohesive code.

• Software engineers shall commit themselves to making theanalysis, specification, design, development, testing andy p g p gmaintenance of software a beneficial and respected profession.In accordance with their commitment to the health, safety andwelfare of the public, software engineers shall adhere to thefollowing Eight Principles:

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 28

following Eight Principles:

Page 29: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Code of ethics - principlesp p

PUBLIC PUBLIC• Software engineers shall act consistently with the public

interest.

CLIENT AND EMPLOYER CLIENT AND EMPLOYER• Software engineers shall act in a manner that is in the best

interests of their client and employer consistent with the publicinterest.

PRODUCT• Software engineers shall ensure that their products and relatedSoftware engineers shall ensure that their products and related

modifications meet the highest professional standards possible.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 29

Page 30: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Code of ethics - principlesp p

JUDGMENT JUDGMENT• Software engineers shall maintain integrity and independence

in their professional judgment.

MANAGEMENT MANAGEMENT• Software engineering managers and leaders shall subscribe to

and promote an ethical approach to the management ofsoftware development and maintenance.

PROFESSION• Software engineers shall advance the integrity and reputation ofSoftware engineers shall advance the integrity and reputation of

the profession consistent with the public interest.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 30

Page 31: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Code of ethics - principlesp p

COLLEAGUES COLLEAGUES• Software engineers shall be fair to and supportive of

their colleagues.g SELF

• Software engineers shall participate in lifelonglearning regarding the practice of their professionand shall promote an ethical approach to the practiceof the professionof the profession.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 31

Page 32: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Ethical dilemmas

Disagreement in principle with the policies of Disagreement in principle with the policies ofsenior management.

Your employer acts in an unethical way and Your employer acts in an unethical way andreleases a safety-critical system without finishingthe testing of the system.g y

Participation in the development of militaryweapons systems or nuclear systems.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 32

Page 33: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Therac-25 Software Failure

Therac-25 was a Therac 25 was acomputerized radiationtherapy machine, a device

d t t tused to treat cancer. Therac-20, a predecessor

of the Therac-25,of the Therac 25,employed independentprotective circuits andmechanical interlocks tomechanical interlocks toprotect against overdose.The Therac-25 relied more

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 33

heavily on software.

Page 34: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Therac-25

Failed because of no hardware interlocks! Failed because of no hardware interlocks!• The Therac-25 supported a multitasking

environment, and the software allowed concurrentaccess to shared data. This precariousimplementation caused program failure under certain(race) conditions(race) conditions.

Involved in at least 6 accidents where patientswere given a massive overdose of radiationwere given a massive overdose of radiationbetween 1985 and 1987

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 34

Page 35: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

OTHERS?

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 35

Page 36: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Key pointsy p

Software engineering is an engineering discipline that isg g g g pconcerned with all aspects of software production.

Software products consist of developed programs andassociated documentation. Essential product attributespare maintainability, dependability, efficiency and usability.

The software process consists of activities that areinvolved in developing software products. Basic activitiesare software specification, development, validation andevolution.

Methods are organised ways of producing software. Theyi l d ti f th t b f ll d thinclude suggestions for the process to be followed, thenotations to be used, rules governing the systemdescriptions which are produced and design guidelines.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 36

Page 37: An Introduction to Software Engineering: Chapter 1mysite.du.edu/~lbarne28/SE/Slides/Ch1.pdf · An Introduction to Software Engineering: Chapter 1 Adapted from Ian Sommerville 2006,

Key pointsy p

CASE tools are software systems which are designed to CASE tools are software systems which are designed tosupport routine activities in the software process such asediting design diagrams, checking diagram consistency

d k i t k f t t hi h h band keeping track of program tests which have been run. Software engineers have responsibilities to the

engineering profession and society. They should notengineering profession and society. They should notsimply be concerned with technical issues.

Professional societies publish codes of conduct which sett th t d d f b h i t d f th iout the standards of behaviour expected of their

members.

Adapted from Ian Sommerville 2006, Software Engineering, 8th edition. Chapter 1 37


Recommended