第1章 软件工程的思想
《软件工程实用教程》第1章软件工程引论

第1章 軟體工程引論
本章學習內容: 1.掌握軟體的定義與特點 2.軟體危機以及軟體危機產生的原因 3.掌握軟體工程的定義、目標和原則 4.瞭解軟體工程的研究內容與對象 5.理解學習軟體工程的意義
第1章 軟體工程引論
1. 1 軟體及軟體危機
1.1.1 軟體及其特性 1.軟體 :是由電腦程式的發展而形成的一 個概念。它是與電腦系統操作有關的程 式、規程、規則及其文檔和數據的統稱。
第1章 軟體工程引論
1. 3 軟體工程的基本原則
1 .採用分階段的生命週期計畫,以實現對專 案的嚴格管理 2.堅持進行階段評審,以確保軟體產品品質 3 .實行嚴格的產品控制,以適應軟體規格的 變更 4.採用現代程式設計技術 5.軟體結果應能清楚地審查 6.開發小組人員應該少而精 7.承認不斷改進軟體工程實踐的必要性
第1章 軟體工程引論
(2)軟體工具
工具類別
專案管理工具 軟體分析工具
舉例
專案規劃編輯器、用戶需求跟蹤器、 軟體版本管理器 數據字典管理器、分析建模編輯器
軟體設計工具
程式處理工具 軟體測試工具
用戶介面設計器、軟體結構設計器、 代碼框架生成器 程式編輯器、程式編譯器、程式解釋 器、程式分析器 測試數據生成器、根源程式調試器
第1章 軟體工程引論
2.軟體工程的目標 軟體開發成本較低; 軟體功能能夠滿足用戶的需求; 軟體性能較好; 軟體可靠性高; 軟體易於使用、維護和移植; 能按時完成開發任務,並及時交付使用。
第1章 軟體工程引論
3.軟體工程的研究內容與對象
第1章 軟體工程引論
4.軟體工程技術 (1)軟體工程方法 結構化方法 面向數據結構方法 原型化方法 面向對象的方法 形式化方法等
软件工程思想—软件工程基本观念

软件工程思想—软件工程基本观念1. 引言软件工程是指应用工程原理、方法和技术来开发和维护软件系统的一门学科。
在软件工程领域中,有一些基本观念是非常关键的,它们帮助我们理解和应用软件工程的思想。
本文将介绍一些软件工程的基本观念。
2. 需求分析软件工程的第一个基本观念是需求分析。
需求分析是确定用户对软件系统的需求和期望的过程。
在需求分析阶段,我们需要深入了解用户的业务需求,理解用户的需求是如何影响软件系统的功能和性能的。
3. 概要设计概要设计是软件工程的另一个基本观念。
在概要设计阶段,我们需要定义系统的整体结构和模块之间的关系。
通过概要设计,我们能够清楚地了解系统的各个部分如何协同工作,从而更好地指导后续的详细设计和编码工作。
4. 详细设计详细设计是软件工程中的一个重要环节。
在详细设计阶段,我们需要根据概要设计确定的结构和模块,详细定义每个模块的功能和接口。
详细设计是为了保证系统的功能和性能能够得到有效实现。
5. 编码和测试编码和测试也是软件工程的基本观念之一。
在编码阶段,程序员根据详细设计的要求,编写出系统的各个模块的代码。
而在测试阶段,我们需要通过各种测试手段,验证系统的功能和性能是否符合需求。
6. 部署与维护部署与维护是软件工程中的一个基本观念。
在部署阶段,我们需要将开发好的软件系统安装到用户的计算机上,并进行必要的配置和调试。
而在维护阶段,我们需要根据用户的反馈和需求,对软件系统进行升级、修复和优化。
7.软件工程的基本观念是软件开发过程中的重要指导原则。
通过深入理解和应用这些基本观念,我们可以更好地进行软件开发工作,确保软件系统的质量和可维护性。
希望本文对读者对软件工程的理解有所帮助。
软件工程第01章

教学目的:1. 了解软件、软件危机等概念2. 掌握软件工程的定义、原理、目标和原则教学重点:软件工程的定义、原理、目标和原则教学难点:软件工程的目标和原则第一章软件与软件工程1.1 软件(Software)1.1.1 软件与软件的组成程序设计语言三种类型:1.机器语言、汇编语言:依赖于机器,面向机器2.高级语言:独立于机器,面向过程或面向对象3.面向问题语言:独立于机器,非过程式语言(4GL)文档(document)—一种数据媒体和其上所记录的数据。
文档记录软件开发活动和阶段成果,具有永久性,可供人或机器阅读。
文档可用于专业人员和用户之间的通信和交流;软件开发过程的管理;运行阶段的维护。
1. 软件的特点软件是逻辑产品,硬件是物理产品。
特点:(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
软件开发、设计几乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:1)纠错性维护—改正运行期间发现的潜伏错误;2)完善性维护—提高或完善软件的性能;3)适应性维护—修改软件,以适应软硬件环境的变化;4)预防性维护—改进软件未来的可维护性和可靠性。
(5)软件不会磨损和老化。
2. 软件的发展第一阶段——20世纪60年代中期以前,软件开发处于个体化生产状态。
在这一阶段中,软件还没有系统化的开发方法。
目标主要集中在如何提高时空效率上。
第二阶段——从20世纪60年代中期到70年代末期。
软件开发已进入了作坊式生产方式,即出现了“软件车间”。
软件开发开始形成产品。
到20世纪60年代末,“软件危机”变得十分严重。
第三阶段——从20世纪70年代中期到20世纪80年代末期。
软件开发进入了产业化生产,即出现了众多大型的“软件公司”。
在这一阶段,软件开发开始采用了“工程”的方法,软件产品急剧增加,质量也有了很大的提高。
软件工程思想—软件工程基本观念简版

软件工程思想—软件工程基本观念软件工程思想—软件工程基本观念1. 概述软件工程是一门关于开发、维护和管理软件的学科。
它涉及到一系列的活动,包括软件需求分析、设计、编码、测试和维护等。
软件工程的目标是提高软件开发过程的效率和质量,以满足用户的需求。
软件工程基本观念是指在软件工程实践中所遵循的一些核心思想和原则。
本文将介绍几个重要的软件工程基本观念,以帮助读者更好地理解和应用软件工程的思想和方法。
2. 模块化设计软件工程中的模块化设计是将软件系统划分为若干个独立且相对独立的模块,每个模块负责实现特定的功能。
模块化设计的优点包括提高代码的可读性和可维护性,方便团队合作和重用代码。
为了实现模块化设计,可以采用一些常用的设计原则,如单一职责原则、开闭原则和依赖倒置原则等。
通过合理地定义和划分模块,可以降低系统的复杂性,并提高系统的可扩展性和可测试性。
3. 面向对象编程面向对象编程是一种常用的软件开发方法,它将现实世界中的事物抽象为对象,并通过定义对象的属性和方法来描述其行为和特征。
面向对象编程的核心概念包括封装、继承和多态。
面向对象编程可以提高代码的重用性和可维护性,使得系统的结构更加清晰和模块化。
在实际开发中,可以利用面向对象编程的思想来设计和实现软件系统,以提高开发效率和减少错误。
4. 高内聚低耦合高内聚低耦合是软件工程中的一个重要原则。
高内聚指的是模块内部的各个元素之间具有较强的相关性和功能整合性,一个模块应该只负责一种功能,功能越单一,内聚性就越高。
低耦合指的是模块之间的依赖关系较弱,模块之间的影响性和耦合程度越小,系统越容易进行扩展和维护。
通过遵循高内聚低耦合的原则,可以使得系统更加稳定、易于测试和修改。
同时,高内聚低耦合也提高了团队的合作效率,每个成员可以独立开发和测试各自模块,降低了代码的冲突和风险。
5. 需求管理和变更控制软件工程中的需求管理和变更控制是确保软件项目按照用户需求开发和维护的关键活动。
软件工程概念

软件工程概念第一章:软件定义1.软件( Software):计算机系统中与硬件相互依存的另一部分,它是包括程序(Program),数据(D ata)及其相关文档( Document)的完整集合。
2.软件的特征:逻辑复杂,开发复杂,成本高,风险大,维护困难。
3.按软件功能分类:系统软件,支撑软件,应用软件。
系统软件:操作系统,数据库管理系统,设备驱动程序,通信处理程序等。
支撑软件:文本编辑程序,文件格式化程序,程序库系统等应用软件:商业数据处理软件,工程与科学计算软件,计算机辅助设计/制造软件,系统仿真软件,智能嵌入软件,医疗、制药软件,事务管理、办公自动化软件。
按软件规模分类:微型,小型,中型,大型,甚大型,极大型。
按软件工作方式分:实时处理软件,分时软件,交互式软件,批处理软件4.软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题5.软件危机主要是两个问题:1.如何开发软件,以满足对软件的日益增长的需求?2.如何维护数量不断膨胀的已有软件?5.软件危机的表现:1.成本高,开发成本估计不准确2.软件质量不高、可靠性差3.进度难以控制4.维护非常困难5.用户不满意6. 由于软件质量问题导致失败的软件项目非常多。
6.产生软件危机的原因:1.与软件本身的特点有关 2.与软件开发与维护的方法不正确有关.软件工程学的目的:以较低的成本研制具有较高质量的软件软件工程技术的两个明显特点:1.强调规范化2. 强调文档化软件工程的基本原理(7条):1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性8.软件工程方法学包含3个要素:方法、工具和过程9.软件生命周期:软件定义(问题定义,可行性研究,需求分析),软件开发(总体设计,详细设计,编码和单元测试,集成测试),运行维护(持久满足用户需求)10.软件过程模型:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型。
第1章-软件工程学概述1-1

• 软件用后不磨损
• 随着时间的推移,应用程序
的某些部分可能会变得不再 相关(例如,需求改变时), 而需要修改
• 但是,没有备件的概念
1.1、软件的定义
硬件和软件故障率曲线
由于副作用造成 故障率的提高 原来的软件已经面目全非了!
故障率
磨损后
生命初期
修改
硬件的故障率曲线 实际曲线
软件故障率的理想曲线
1.2、软件危机
软件危机案例
3 . 软件产品的质量靠不住 [案例]:
ARIANE 5 火箭 1996 年6 月,耗资70 亿美元,发射
本章内容
1.1、软件的定义 1.2、软件危机 1.3、软件工程 1.4、软件生存期 1.5、软件过程
1.2、软件危机
软件危机
Crisis!
“软件危机”(Software crisis) 的出现是由于软件的规模越来越大,复杂 度不断增加,软件需求量增大。而软件开 发过程是一种高密集度的脑力劳动,软件 开发的模式及技术不能适应软件发展的需 要。致使大量质量低劣的软件涌向市场, 有的花费大量人力财力,而在开发过程中 就夭折。
时间
1.1、软件的定义
硬件和软件故障率曲线的比较
软件不会用坏(wear out).
软件会退化( deteriorate)!
1.1、软件的定义
软件的特点-7
要求
软件产品不允许误差
软件产品的高质量取决于好的设计( High quality is achieved through) 依赖于人(Depend on people) 需要对产品进行构造(Require the construction of a “product”)
软件工程导论重点内容

软件工程导论重点内容桃园文印室第一章软件工程概述重点掌握的内容:软件和软件工程的基本概念一.什么是软件?1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;软件的特点:软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工的开发方式软件的开发费用越来越高,成本相当昂贵。
二.软件危机以及产生软件危机的原因?1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。
软件产品“供不应求”。
2.软件成本在计算机系统总成本中所占的比例逐年上升。
3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。
4.软件产品的质量不容易保证。
5.软件产品常常是不可维护的。
6.软件产品的重用性差,同样的软件多次重复开发。
7.软件通常没有适当的文档资料。
产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。
三、软件危机1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
3、软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
(2) 用户对“已完成的”软件系统不满意的现象经常发生。
(3) 软件产品的质量往往靠不住。
(4) 软件常常是不可维护的。
1计算机科学学院软件工程(二)班软件工程导论复习资料2 星光二班桃园文印室(5) 软件通常没有适当的文档资料。
(6) 软件成本在计算机系统总成本中所占的比例逐年上升。
第1章软件工程学概述

(3)软件经常变化 (4)开发软件的效率非常重要 (5.) 和谐地合作是开发软件的关键 (6.) 软件必须有效地支持它的用户 开发软件的目的就是支持用户的工作,满足 用户对软件的需求 (7. )在软件工程领域中通常由具有一种文 化背景的人替具有另一种文化背景的人创 造产品
37
软件工程的研究内容
软件是计算机系统中与硬件(hardware)相互依存 的另一部分,与硬件合为一体完成系统功能。 软件定义包括如下几点: (1)功能和性能的指令集(即程序); (2)程序能正常操纵信息的数据结构(即相关数 据); (3)与程序开发维护和使用有关的各种图文数据 (即说明文档)。
16
软件=程序+数据+相关文档
软件的发展主要经历了以下3个发展阶段:
第一阶段(20世纪50年代初期至20世纪60年 代中期) 特点:(1)称为程序设计阶段 (2)软件生产以个体化为主 (3)编写程序的工具只有低级语言 (4)软件规模小,几乎没有系统化的 标准可循
11
(5)软件由软件使用者自己开发和编写,适 合个人应用 (6)没有“软件”概念,对于程序有关的文 档的重要性认识不足,开发主要围绕硬件 进行 (7)工程规模小,使用工具单一,开发者之 间没有明确分工 第二阶段(20世纪60年代中期至70年代末期) 称程序系统阶段
7
ENIAC诞生于二战时期,最初是作为辅助炮兵计 算炮弹轨迹的工具,在盟军登陆西欧前一年开始 制造,但直到1945年停火时还没完成。在冷战初 期军方就发现了ENIAC的大量用途,它的17468 根真空管被用来测试氢弹的早期设计的可行性。 这台计算机每秒能执行5000条指令,在当时的情 况下它的运算速度比电动式计算机快1000倍。当 然,现在iPhone 6每秒能响应250亿条指令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为了祢补应 用软件与现 实计算环境 之间的距离 为屏蔽操作 系统和编程 语言的异构 性,发展了 支撑软件和 中间件
应用系统
综观 软件技术 的发展
J2EE/EJB
支撑软件中间件
Fortran 语言 操作系统 UNIX Linux
Web Services
Java 语言
为屏蔽计 算机硬件 的异构性, 发展了操 作系统
P.Wegner和B.Boehm认为:
IEEE(电气和电子工程师协会83) 指出: 软件工程是开发、运行、维护和修复软件的系统化方法。 IEEE(93) 指出:
软件工程是将系统化的、规范的、可度量的方法 应用于软件的开发、运行和维护的过程,即将工程化 19 的方法应用于软件开发中。
1.3 软件工程的作用
C/C++ 语言
.NET/COM
为了屏蔽中间件之 间的异构性,出现 了Web技术。
Windows
图 1-2
24
网络层
1.5 软件工程三个要素
工具
工具
方 法(步骤、原则) 过程(任务(活动)) 质量焦点
Software engineering layers
图 1-3 软件工程三个要素
25
1.5.1 系统的开发方法
软件工程知识是从事软件行业职业的基础
软件程序员 系统分析员 软件设计员 系统架构师 软件集成师 测试工程师 实施工程师 首席技术官 软件质量经理 软件项目经理 系统管理员 数据库管理员 软件售前人员 软件营销人员
本课程的主要内容和知识结构
第1章 软件工程的思想 第2章 软件开发过程模型 第3章 软件开发过管理 第4章 软件需求分析 (软件开发关键的一步) 第5章 软件设计- 实现的前提 第6章 实现 -初始结果 第7章 软件测试和质量保证- 得到可交付的结果 第8章 软件维护 -延长软件寿命
局限:
1.6.3
优化——折中
优化就是精简,去掉繁锁。 软件中的折中(Trade-off):不同的需求之间往往
存在矛盾与冲突,需要通过折中来作出的合理的取舍, 找到使双方均满意的点。
例如:
# 在算法设计时要考虑空间和时间的折中; # 低成本和高可靠性的折中; # 安全性和速度的折中。
折中策略:
是通过协调各个质量因素,实现整体质量的最优。
史济民等,软件工程-原理、方法与应用, 高等教育出板社ISBN 7-04-011561-1 2007.08.第8次印刷. 孙家广,软件工程-理论、方法与实践, 高等教育出板社, 2006年5月
Software Engineering A Practitioner’ s
Approach Author: Rogers.Pressman (软件工程实践者的研究方法 机械工业出版社)
22
1.4
软件工程的发展
传统的软件工程时代 过程软件工程时代 对象软件工程时代 构件软件工程时代(构件技术,中间件技术, 集成技术) 自动化的流水线装配软件工程的发展方向 分布式、大规模的软件开发 遍在计算 移动计算 网络资源 开源软件 软件的网络化,服务化,全球化的发展。
23
15
1.1 软件
1.1.1 软件的定义
20世纪五十年代 软件=程序 面向过程的程序 =算法+数据结构 20世纪六十年代 软件=程序+文档 20世纪七十年代 软件=程序+文档+数据 面向对象的程序=对象+消息 面向构件的程序=构件+构架
软件比程序更复杂������
软件必须能够模拟现实世界,才能解决现实 世界的问题。现实世界是复杂的,软件是复杂的。
任何事物都有它美的一面,软件的美是博大 精深的,有待我们去细细体味,而这种美又是由 我们赋予的.
希望 认真 沟通 实践 创新
第1章
软件工程的思想
软件工程研究室
14
内容: 1.1 1.2 1.3 1.4 1.5 1.6 1.7 软件 软件工程的概念 软件工程的作用 软件工程的发展 软件工程三要素 软件开发的基本策略 软件工程的目标
27
(1)
(2) (3) (4) ()
Microsoft Visio
Visible Analyst () Oracle Designer () Rational Rose () Together soft ()
财富可以通过辛勤劳动获取, 也可能由于喜中彩票大奖获得。 知识却必须是通过一点一滴 努力学习逐渐积累而获得的。 珍惜每一天,每一节课,每一分钟。
8
你们的收获不会仅仅局限 在本课程之内……
如何学习软件工程
听课 复习 阅读 讨论 练习,从知到会 实践,从会到通 知识—方法—能力 渗 透 实践 参考资料 作业 复习 课堂教学 学习读书 知识课程
总结属于自己的“最佳实践”
• 多动手、多实践,方可成为合格的软件工程师; • 实践越多、参与的项目越大,积累经验越多; • 首先遵循他人提出的“最佳实践”,进而创造 自己的“最佳实践”。
从“程序员”成长为“软件工程师” 程序员
软件工程课程(课堂) 软件工程师 + 课程设计(实践) + 课后孜孜不倦的练习、实践、 总结、归纳(…越多越好)
21
上述原因导致了60年代末的“软件危机
1968年北大西洋公约组织(NATO)的计算机科学家在
联邦德国的幕尼黑召开的一次计算机软件国际会议上, 对软件开发的方法、技术进行了广泛的讨论,
首次提出了“软件工程”的概念。 软件工程的作用: 解决60年代出现的软件危机。 解决软件当前面临的问题。 软件开发周期长,成本高,找错误难,度量困难, 软件可靠性、重用性、维护性存在问题。 告诉人们怎样去开发软件、管理软件。 现代软件开发对人才的要求。 提高软件产品的质量,降低软件开发的成本。
课程的基本要求 了解软件工程的思想、范围、基本要素、
规范,软件开发方法和工具。
掌握软件开发的过程和初步建模
学会运用所学知识进行初步的软件项目开发。
考试要求
平时成绩:占总成绩的20%
完成一个小型软件系统的分析、设计文档, 阶段性成果占总成绩的20% 考试成绩:占总成绩的60%
16
1.1.2 软件的特征
软件是产品交付使用的载体。 软件不会磨损,软件需求变化快,维护软件困难。 初期故 磨损 障率
故 障 率
故 障 率
修改
实际 理想
软件故障曲线 硬件故障曲线 时间 图 1-1 硬件、软件故障图
时间
软件是是被开发或设计的,而不是被制造的 人的作用不同,构建方法不同, 质量问题不同,成本构成不同。
软件开发失败的例子 1962年6月,美国飞向金星的第1个空间探测器(水手1号) 飞行中偏移了航线,失败了。 原因:飞舱中的导航程序中的一个语句的语义错。
世界上精心设计的并花费巨额投资的美国阿波罗8号太 空飞船登月飞行计划的软件的错误,使存储器一部分信 息丢失;阿波罗14号的飞行10天中,出现18个软件错误。 原因: 软件的可靠性问题。 1963~1966年IBM开发OS/360操作系统,投资几千万美 元,工作量5000多人年,拖延几年才交付使用,而且每 年要发现近100个错误。 原因: 计划上的问题,无法控制进度。 20
31 Figure 1-6 显示类图和JAVA源代码的往返工程工具
1.5.3
软件过程
过程:定义了活动的时间、人员、工作内容 和达到预期目标的途径. 如一个通用过程框架 (建模活动
(分析任务(获取、分析建立DFD图…文档),
设计任务(结构、数据、接口…设计文档)))
32
1.6
软件开发的基本策略
“软件复用”、“分而治之”、“优化—折中”。 1.6.1 软件复用(Reuse)
实践作业
1) 分析和设计下列问题 之一,并写出文档. 3) 自定题目,如: • 教学管理软件 • 教学网站 • 网上售书,网上购物 • 超市管理 • 食堂管理 • 工寓管理 题目要有创新性。 2) 课程阶段 性报告
学生体会
•
从他的历史发展中我明白了很多道理, 从他的前景中我感到了振奋和鼓舞, 感谢软件工程又给了我很多问题去思考, 很多方法去实践, 更多的命题要在生活和实践中慢慢领悟。
28
DFD on CASE Tool Visual Analyst
Figure 1-4 显示DFD的可视化工具
29
Rational Rose Showing OO Diagrams
Figure 1-5 显示交互图的ROSE工具
30
Together J Showing Class Diagram and Synchronized Java Code
26
1.5.2 工具(Tool)
为软件开发方法或开发过程提供自动或半自动支持。 CASE (Computer-Aided Software Engineering )工具 系统开发中使用的一些工具
项目管理应用程序
制图/图形应用程序 字处理器应用程序 集成开发环境(IDE) 数据库管理应用程序 反向工程工具 代码生成工具
35
软件折中的重要原则:
不能使某一方损失关键的职能,更不可以象“舍鱼而取
美国肯尼迪发射的一枚“阿脱拉斯火箭,当飞地面几十 英里高空时,翻转.地面控制中心被迫下令炸毁,结果 损失1850万美元。 原因:飞行计划程序漏掉一个“连”接字符。
由此可看出:
软件需求量不断增大,复杂度越来越高,软件可 靠性无保障 软件维护费用不断上升 软件进度无法预测 成本增长无法控制 程序人员无限度地增加程序功能。
软件工程
Software Engineering 软件开发既是一门科学, 又是一门工程,也是一门艺术