61
Software Engineering Zheng Li(李征) Jing Wan(万静)

Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

  • Upload
    ngoanh

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Software Engineering

Zheng Li(李征)

Jing Wan(万静)

Page 2: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Why SE?

几乎所有与技术相关的工作都需要软件工程师

《2017年美国新兴职业报告》

Page 3: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

LinkedIn’s 2017 U.S. Emerging Jobs Report

Page 4: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Couse Assessment

Total 40

▪ Lesson 32

▪ Project 8

TextBooks:

▪ 软件工程:实践者的研究方法(英文精编版第8版)

▪ Software Engineering:

A Practitioner’s Approach, 8/e Roger S.Pressman and Bruce R. Maxim

原出版社:McGraw-Hill Science/Engineering/Math

国内出版社:机械工业出版社

Page 5: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

28 Feb 7 Mar 14 Mar 21 Mar 28 Mar

4 Apr 11 Apr 18 Apr 25 Apr 2 May

9 May 16 May 23 May 30 May

Page 6: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Couse Assessment

GRADING:

▪ Class collaboration (10%)

▪ Project (30%)

▪ Final Exam (60%)

Page 7: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Couse Assessment

Class Collaboration (10%)

▪ Attendance

▪ Contributing in the class discussions, if any

▪ Be active, but not too much

Page 8: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Project

TBA

Page 9: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Most of Slides are from the slide set to accompany

Software Engineering: A Practitioner’s Approach, 8/e

by Roger S. Pressman and Bruce R. Maxim

Slides copyright © 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman

For non-profit educational use only

Page 10: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

The course covers:

Introduction of Software Engineering

The Software Process

Modeling

Quality Management

Managing Software Projects

Page 11: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Topic Covered Today

The nature of software

Introduction of Software Engineering

Page 12: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Chapter 1: The Nature of Software

Page 13: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

What is Software?

Software is:

1. instructions (computer programs) that when executed

provide desired features, function, and performance;

2. data structures that enable the programs to adequately

manipulate information and

3. documentation that describes the operation and use of

the programs.

These slides are designed to accompany Software Engineering:

A Practitioner’s Approach, 8/e (McGraw-Hill 2014). Slides

copyright 2014 by Roger Pressman.

14

Page 14: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Program = Data Structure + Algorithm

Software == Program ?

Programs + Associated documentation

such as requirements, design models and user

manuals.

What is Software?

Page 15: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Software

What software have you used?

Page 16: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Software Surrounds Our Civilization

Page 17: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Software Applications

System software

Application software

Engineering/Scientific software

Embedded software

Product-line software

Web/Mobile applications

AI software (robotics, neural nets, game playing)

18

Page 18: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

What Does This Mean?

Software is getting more important

Page 19: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

The Importance of software

Our civilization runs on software

软件是现代文明的重要基础

C++的设计者 Bjarne Stroustrup

Page 20: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Software Development

Software is developed or engineered,

it is not manufactured in the classical sense.

Software doesn't "wear out."

Although the industry is moving toward component-

based construction, most software continues to be

custom-built.

21

Page 21: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Wear vs. Deterioration

22

Page 22: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Legacy Software

Why must it change?

▪ software must be adapted to meet the needs of new computing

environments or technology.

▪ software must be enhanced to implement new business requirements.

▪ software must be extended to make it interoperable with other more

modern systems or databases.

▪ software must be re-architected to make it viable within a network

environment.

23

Page 23: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

WebApps

Modern WebApps are much more than hypertext files with a few pictures

WebApps are augmented with tools like XML and Java to allow Web engineers including interactive computing capability

WebApps may standalone capability to end users or may be integrated with corporate databases and business applications

Semantic web technologies (Web 3.0) have evolved into sophisticated corporate and consumer applications that encompass semantic databases that require web linking, flexible data representation, and application programmer interfaces (API’s) for access

The aesthetic nature of the content remains an important determinant of the quality of a WebApp.

24

Page 24: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Mobile Apps

Reside on mobile platforms such as cell phones or tablets

Contain user interfaces that take both device characteristics and location attributes

Often provide access to a combination of web-based resources and local device processing and storage capabilities

Provide persistent storage capabilities within the platform

A mobile web application allows a mobile device to access to web-based content using a browser designed to accommodate the strengths and weaknesses of the mobile platform

A mobile app can gain direct access to the hardware found on the device to provide local processing and storage capabilities

As time passes these differences will become blurred

26

Page 25: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Cloud Computing

27

Page 26: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Cloud Computing

Page 27: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Cloud Computing

Cloud computing provides distributed data storage and processing resources to networked computing devices

Computing resources reside outside the cloud and have access to a variety of resources inside the cloud

Cloud computing requires developing an architecture containing both frontend and backend services

Frontend services include the client devices and application software to allow access

Backend services include servers, data storage, and server-resident applications

Cloud architectures can be segmented to restrict access to private data

29

Page 28: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Software Product Line

Software Product line is a set of software-intensive systems that

share a common set of features and satisfy the needs of a

particular market

These software products are developed using the same

application and data architectures using a common core of

reusable software components

A software product line shares a set of assets that include

requirements, architecture, design patterns, reusable components,

test cases, and other work products

A software product line allow in the development of many products

that are engineered by capitalizing on the commonality among all

products with in the product line

30

Page 29: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Chapter 2: Software Engineering

Page 30: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

How Successful Have We Been?

Perform tasks more quickly and effectively

▪ Word processing, spreadsheets, e-mail

Support advances in medicine, agriculture,

transportation, multimedia education, and most

other industries

Many good stories

However, software is not without problems

Page 31: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,
Page 32: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,
Page 33: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,
Page 34: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,
Page 35: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,
Page 36: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

火星气候探测者号的星际迷航

火星气候探测者号在1997年发射,在太空中飞行几个月以后,由于导航错误,最终在火星大气层解体。

Page 37: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

阿丽亚娜5型运载火箭,昂贵的简单复制

1996年6月4日,阿丽亚娜5型运载火箭的首次发射点火后,火箭开始偏离路线,最终被逼引爆自毁,整个过程只有短短30秒。

http://www-users.math.umn.edu/~arnold/disasters/ariane5rep.html

Page 38: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

阿丽亚娜5型运载火箭,昂贵的简单复制

阿丽亚娜5型运载火箭基于前一代4型火箭开发。4型火箭系统中,对一个水平速率的测量值使用了16位的变量及内存,而5型火箭的开发人员简单复制了这部分程序,而没有对新火箭进行数值的验证,结果发生了致命的数值溢出。发射后这个64位带小数点的变量被转换成16位不带小数点的变量,引发了一系列的错误,从而影响了火箭上所有的计算机和硬件,瘫痪了整个系统,

http://www-users.math.umn.edu/~arnold/disasters/ariane5rep.html

Page 39: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Northeast Blackout of 2003

Affected 10 million

people in Ontario,

Canada

Affected 40 million

people in 8 US

states

Financial losses of

$6 Billion USD

508 generating

units and 256

power plants shut

down

The alarm system in the energy management system failed

due to a software error and operators were not informed of

the power overload in the system

Page 40: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,
Page 41: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Apple 2015发布会

Page 42: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

More

软件 Bug 引发的十次严重后果http://blog.jobbole.com/97/

Page 43: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

How Successful Have We Been?

A fault: occurs when a human makes a

mistake, called an error, in performing some

software activities

A failure: is a departure from the system’s

required behavior

Page 44: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Software Engineering

Some realities:

▪ a concerted effort should be made to understand the problem before a software solution is developed

▪ design becomes a pivotal activity

▪ software should exhibit high quality

▪ software should be maintainable

The seminal definition:

▪ [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.

Page 45: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Software Engineering

The IEEE definition:

▪ Software Engineering:

1. The application of a systematic, disciplined, quantifiable approach to

the development, operation, and maintenance of software; that is, the

application of engineering to software.

2. The study of approaches as in (1).

Page 46: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Relationship between CS and SE

Computer Science: focusing on computer hardware,

compilers, operating systems, and programming

languages; Computer science is concerned with theory

and fundamentals.

Software Engineering: a discipline that uses computer

and software technologies as a problem-solving tools;

Software engineering is concerned with the

practicalities of developing and delivering useful

software.

Page 47: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Relationship between CS and SE

Page 48: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

A Layered Technology

50

Software Engineering

a “quality” focus

process model

methods

tools

Page 49: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

A Process Framework

Process framework

▪ Framework Activities

work tasks

work products

milestones & deliverables

QA checkpoints

▪ Umbrella Activities

51

Page 50: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Framework Activities

Communication

Planning

Modeling

▪ Analysis of requirements

▪ Design

Construction

▪ Code generation

▪ Testing

Deployment

52

Page 51: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Umbrella Activities

Software project tracking and control

Risk management

Software quality assurance

Technical reviews

Measurement

Software configuration management

Reusability management

Work product preparation and production

53

Page 52: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Adapting a Process Model

the overall flow of activities, actions, and tasks and the interdependencies among them

the degree to which actions and tasks are defined within each framework activity

the degree to which work products are identified and required

the manner which quality assurance activities are applied

the manner in which project tracking and control activities are applied

the overall degree of detail and rigor with which the process is described

the degree to which the customer and other stakeholders are involved with the project

the level of autonomy given to the software team

the degree to which team organization and roles are prescribed

54

Page 53: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

55

The Essence of Practice

Polya suggests:

1. Understand the problem (communication and analysis).

2. Plan a solution (modeling and software design).

3. Carry out the plan (code generation).

4. Examine the result for accuracy (testing and quality assurance).

Page 54: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

56

Understand the Problem

Who has a stake in the solution to the problem? That is, who are the stakeholders?

What are the unknowns? What data, functions, and features are required to properly solve the problem?

Can the problem be compartmentalized? Is it possible to represent smaller problems that may be easier to understand?

Can the problem be represented graphically? Can an analysis model be created?

Page 55: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

57

Plan the Solution

Have you seen similar problems before? Are there patterns that are recognizable in a potential solution? Is there existing software that implements the data, functions, and features that are required?

Has a similar problem been solved? If so, are elements of the solution reusable?

Can subproblems be defined? If so, are solutions readily apparent for the subproblems?

Can you represent a solution in a manner that leads to effective implementation? Can a design model be created?

Page 56: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

58

Carry Out the Plan

Does the solution conform to the plan? Is source code traceable to the design model?

Is each component part of the solution provably correct? Has the design and code been reviewed, or better, have correctness proofs been applied to algorithm?

Page 57: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

59

Examine the Result

Is it possible to test each component part of the solution? Has a reasonable testing strategy been implemented?

Does the solution produce results that conform to the data, functions, and features that are required? Has the software been validated against all stakeholder requirements?

Page 58: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Hooker’s General Principles

1: The Reason It All Exists

2: KISS (Keep It Simple, Stupid!)

3: Maintain the Vision

4: What You Produce, Others Will Consume

5: Be Open to the Future

6: Plan Ahead for Reuse

7: Think!

60

Page 59: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

Software Myths

Affect managers, customers (and other non-technical

stakeholders) and practitioners

Are believable because they often have elements of

truth,

but …

Invariably lead to bad decisions,

therefore …

Insist on reality as you navigate your way through

software engineering

61

Page 60: Software Engineeringcist.buct.edu.cn/staff/zheng/CSE48300C/01-Introduction.pdf · 2018-03-03 · Software Engineering: A Practitioner’s Approach, ... A Practitioner’s Approach,

62

How It all Starts

SafeHome:▪ Every software project is precipitated by some business

need— the need to correct a defect in an existing application;

the need to the need to adapt a ‘legacy system’ to a changing business environment;

the need to extend the functions and features of an existing application, or

the need to create a new product, service, or system.