Upload
brook-robertson
View
222
Download
0
Embed Size (px)
Citation preview
Software EngineeringSoftware Engineering
Course: Introduction to Computer Science Group members: Jingwei Liu, Yunhui Cai, Chengyang QianReporting date: 2015.11.03
Part 1
软件
工程
历史
软件工程 软件与软件工程
Part 2软件开发
Part 3
History of Software Engineering
刘菁蔚
Timeline of the development of software engineering
The Origins.
No Silver Bullet.
Still developing rapidly.
Software Crisis.
History of Software Engineering
4
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
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
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
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
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
Software &Software Engineering
软件与软件工程
—— 蔡韵晖
目录1 软件的定义
2 软件的特点
3 软件工程的概念
4 软件工程的目标
Software & Software Engineering
11
软件的定义一个完整的计算机系统由两部分组成:硬件和软件。
硬件:计算机系统的物理部件,是计算机系统运行 的物质基础。
软件:计算机系统的逻辑部件,软件控制硬件运行、 发挥计算机效能、处理各种计算和事务。
软件 = 程序 + 数据 + 文档资料Software & Software Engineering
12
软件的特点● 软件是逻辑产品
● 软件的成本高
软件具有抽象性。人们可以把它记录在介质上, 却无法看到软件的形态。
软件的成本主要体现在人力成本方面。开发或者 购买软件的花费很高。
Software & Software Engineering
13
● 软件不会磨损或老化
● 软件维护困难
磨合调整 磨损
用坏
硬件失效率曲线时间
失效率
修改点实际曲线
时间
失效率
软件失效率曲线
理想曲线
Software & Software Engineering
14
软件工程的概念
软件工程采用工程的概念、原理、技术和方法来开发、维护软件,把管理技术与开发技术有效地结合起来,其研究的核心问题是:在给定的成本、进度前提下,使用什么方法开发软件,能获得可使用、可靠性好、易于维护、成本合适的软件。
Software & Software Engineering
15
计算机、数学
工程科学
管理科学
模型与算法
模范、范型、成本
计划、资源、质量
软件工
程
软件工程知识体系
Software & Software Engineering
16
软件工程的目标付出较低的开发成本,在规定的时限内获得功能、性能方面满足用户需求的软件
开发的软件移植性较好
易于维护且维护费用较低
软件系统的可靠性高●
●
●
●
Software & Software Engineering
17
低开发成本
易于维护
高可靠性 高性能
按时交付
软件工程的目标
互斥
互补Software & Software Engineering
18
Software Development
软件开发
----ChengyangQian
软件开发是一个很广泛的概
念
软件开发是一个很广泛的概
念
Software Development
21Software Engineering
Software Development Process( 软件开发过程 )
• Waterfall M odel ( 瀑布模型 )• Iterative D evelopment ( 迭代开发 )• Agile Software D evelopment
( 敏捷软件开发 )
Software Development
22Software Engineering
Software Development Process
• Waterfall M odel • Iterative D evelopment• Agile Software D evelopment
Software Development
23Software Engineering
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
• 模型(阶段)• 需求分析• 设计• 实作• 整合与测试• 移交与维护
The Waterfall ModelThe unmodified "waterfall model". Progress flows from the top to the bottom, like a cascading waterfall.
Software Development
25Software Engineering
Software Development Process
• Waterfall M odel • Iterative D evelopment• Agile Software D evelopment
Software Development
26Software Engineering
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
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
Iterative Development Model
Software Development
29Software Engineering
Iterative Development Model
Software Development
30Software Engineering
Software Development Process
• Waterfall model • Iterative development• Agile software development
Software Development
31Software Engineering
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
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
Software Development Life-cycle Support
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
Work AllocationJingweiLiu History of Software Engineering
(& related PowerPoint)
YunhuiCai Software & Software Engineering
(& related PowerPoint)
ChengyangQian Software Development
(& related PowerPoint)
36Software Engineering
Thank You