37
Software Engineering Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Embed Size (px)

Citation preview

Page 1: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Software EngineeringSoftware Engineering

Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang QianReporting date: 2015.11.03

Page 2: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Part 1

软件

工程

历史

软件工程 软件与软件工程

Part 2软件开发

Part 3

Page 3: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

History of Software Engineering

刘菁蔚

Page 4: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Timeline of the development of software engineering

The Origins.

No Silver Bullet.

Still developing rapidly.

Software Crisis.

History of Software Engineering

4

Page 5: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

1945 to 1965: The Origins• From its beginnings in the 1940s,

writing software has evolved into a profession concerned with how best to maximize the quality of software and of how to create it.

• Role of women: men often filled the more prestigious and better paying hardware engineering roles, but often delegated the writing of software to women. 

History of Software Engineering

Grace Hopper5

Page 6: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

1965 to 1985: The Software CrisisProblems of software development:1)Many projects ran over budget and

schedule2) Some projects caused property damage3)A few projects caused loss of life• The software crisis was originally

defined in terms of productivity, but evolved to emphasize quality.

• Some used the term software crisis to refer to their inability to hire enough qualified programmers

History of Software Engineering

Therac-25 6

Page 7: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

1985 to 1989: No Silver Bullet

For decades, solving the software crisis was paramount to researchersand companies producing software tools :• The cost of owning and maintaining software in the 1980s was twice

as expensive as developing the software.• During the 1990s, the cost of ownership and maintenance increased

by 30% over the 1980s.• The average software project overshoots its schedule by half.• Three-quarters of all large software products delivered to the

customer are failures that are either not used at all, or do not meet the customer’s requirements.

• ······

History of Software Engineering

7

Page 8: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

1985 to 1989: No Silver Bullet• In 1986, Fred Brooks published his 

No Silver Bullet article, arguing that no individual technology or practice would ever make a 10-fold improvement in productivity within 10 years.

• Debate about silver bullets raged over the following decade. Advocates for Ada, components, and processes continued arguing for years that their favorite technology would be a silver bullet. Skeptics disagreed. Eventually, almost everyone accepted that no silver bullet would ever be found. History of Software Engineer

ing8

Page 9: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

1990 to 2015: Current Trends in Software Engineering

Agile software Agile software development development

..

Agile software development guides software development projects that evolve rapidly with changing expectations and competitive markets.

Aspects describe how all objects or functions should behave in particular circumstances.

Experimental software engineering is a branch of software engineering interested in devising experiments on software, in collecting data from the experiments, and in devising laws and theories from this data.

experimental experimental software software engineeringengineering

Aspect-Aspect-oriented oriented

programmiprogrammingngHistory of Software

Engineering9

Page 10: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Software &Software Engineering

软件与软件工程

—— 蔡韵晖

Page 11: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

目录1 软件的定义

2 软件的特点

3 软件工程的概念

4 软件工程的目标

Software & Software Engineering

11

Page 12: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

软件的定义一个完整的计算机系统由两部分组成:硬件和软件。

硬件:计算机系统的物理部件,是计算机系统运行 的物质基础。

软件:计算机系统的逻辑部件,软件控制硬件运行、 发挥计算机效能、处理各种计算和事务。

软件 = 程序 + 数据 + 文档资料Software & Software Engineering

12

Page 13: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

软件的特点● 软件是逻辑产品

● 软件的成本高

软件具有抽象性。人们可以把它记录在介质上, 却无法看到软件的形态。

软件的成本主要体现在人力成本方面。开发或者 购买软件的花费很高。

Software & Software Engineering

13

Page 14: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

● 软件不会磨损或老化

● 软件维护困难

磨合调整 磨损

用坏

硬件失效率曲线时间

失效率

修改点实际曲线

时间

失效率

软件失效率曲线

理想曲线

Software & Software Engineering

14

Page 15: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

软件工程的概念

软件工程采用工程的概念、原理、技术和方法来开发、维护软件,把管理技术与开发技术有效地结合起来,其研究的核心问题是:在给定的成本、进度前提下,使用什么方法开发软件,能获得可使用、可靠性好、易于维护、成本合适的软件。

Software & Software Engineering

15

Page 16: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

计算机、数学

工程科学

管理科学

模型与算法

模范、范型、成本

计划、资源、质量

软件工

软件工程知识体系

Software & Software Engineering

16

Page 17: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

软件工程的目标付出较低的开发成本,在规定的时限内获得功能、性能方面满足用户需求的软件

开发的软件移植性较好

易于维护且维护费用较低

软件系统的可靠性高●

Software & Software Engineering

17

Page 18: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

低开发成本

易于维护

高可靠性 高性能

按时交付

软件工程的目标

互斥

互补Software & Software Engineering

18

Page 19: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Software Development

软件开发

----ChengyangQian

Page 20: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

软件开发是一个很广泛的概

Page 21: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

软件开发是一个很广泛的概

Software Development

21Software Engineering

Page 22: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Software Development Process( 软件开发过程 )

• Waterfall M odel ( 瀑布模型 )• Iterative D evelopment ( 迭代开发 )• Agile Software D evelopment

( 敏捷软件开发 )

Software Development

22Software Engineering

Page 23: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Software Development Process

• Waterfall M odel • Iterative D evelopment• Agile Software D evelopment

Software Development

23Software Engineering

Page 24: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

The Waterfall Model• The waterfall model is a sequential design process, used in

software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance.

• The waterfall development model originates in the manufacturing and construction industries: highly structured physical environments in which after-the-fact changes are prohibitively costly, if not impossible. Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adapted for software development.

Software Development

24Software Engineering

Page 25: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

• 模型(阶段)• 需求分析• 设计• 实作• 整合与测试• 移交与维护

The Waterfall ModelThe unmodified "waterfall model". Progress flows from the top to the bottom, like a cascading waterfall.

Software Development

25Software Engineering

Page 26: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Software Development Process

• Waterfall M odel • Iterative D evelopment• Agile Software D evelopment

Software Development

26Software Engineering

Page 27: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Iterative and Incremental Development

• The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental), allowing software developers to take advantage of what was learned during development of earlier parts or versions of the system. Learning comes from both the development and use of the system, where possible key steps in the process start with a simple implementation of a subset of the software requirements and iteratively enhance the evolving versions until the full system is implemented. At each iteration, design modifications are made and new functional capabilities are added.Software Develop

ment27Software Engineering

Page 28: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Iterative and Incremental Development

• The procedure itself consists of the initialization step, the iteration step, and the Project Control List. The initialization step creates a base version of the system. The goal for this initial implementation is to create a product to which the user can react. It should offer a sampling of the key aspects of the problem and provide a solution that is simple enough to understand and implement easily. To guide the iteration process, a project control list is created that contains a record of all tasks that need to be performed. It includes such items as new features to be implemented and areas of redesign of the existing solution. The control list is constantly being revised as a result of the analysis phase.Software Develop

ment28Software Engineering

Page 29: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Iterative Development Model

Software Development

29Software Engineering

Page 30: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Iterative Development Model

Software Development

30Software Engineering

Page 31: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Software Development Process

• Waterfall model • Iterative development• Agile software development

Software Development

31Software Engineering

Page 32: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Agile Software Development• Overview• Agile software development is a group of software development methods in which

requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.

• Iterative, incremental and evolutionary• Most agile development methods break the tasks into small increments with minimal

planning and do not directly involve long-term planning. Iterations are short time frames (timeboxes) that typically last from one to four weeks. Each iteration involves a cross-functional team working in all functions: planning, requirements analysis, design, coding, unit testing, and acceptance testing. At the end of the iteration a working product is demonstrated to stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly. An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration. Multiple iterations might be required to release a product or new features.

• Working software is the primary measure of progress.

Software Development

32Software Engineering

Page 33: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Home Grounds of Different Development Methods

Agile methods Plan-driven methods

Formal methods

Low criticality High criticality Extreme criticality

Senior developers

Junior developers(?)

Senior developers

Requirements change often

Requirements do not change often

Limited requirements, limited features

Small number of developers

Large number of developers

Requirements that can be modeled

Culture that responds to change

Culture that demands order

Extreme quality

Page 34: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Software Development Life-cycle Support

Page 35: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Reference

Wikipedia https://en.wikipedia.org/wiki/History_of_software_engineering https://en.wikipedia.org/wiki/Software_engineering https://en.wikipedia.org/wiki/Waterfall_model https://en.wikipedia.org/wiki/Extreme_programming https://en.wikipedia.org/wiki/Agile_software_development

《软件工程》 武汉大学出版社《现代软件工程》 北京交通大学

35Software Engineering

Page 36: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Work AllocationJingweiLiu History of Software Engineering

(& related PowerPoint)

YunhuiCai Software & Software Engineering

(& related PowerPoint)

ChengyangQian Software Development

(& related PowerPoint)

36Software Engineering

Page 37: Software Engineering Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang Qian Reporting date: 2015.11.03

Thank You