文章目录
一:软件工程(1)软件工程的定义(2)软件工程的本质特征(3)软件工程基本原理二:软件工程方法学(1)概念(2)分类一:软件工程
(1)软件工程的定义
软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济的开发出高质量的软件并维护它
(2)软件工程的本质特征
① 关注大型程序的构造
把一个人在较短时间内写出的程序称为小型程序,而把多人合作用时半年以上才写出的程序称为大型程序。传统的程序设计技术和工具是支持小型程序设计的,不能简单地把这些技术和工具用于开发大型程序。
② 中心课题是控制复杂性
软件所解决的问题通常十分复杂,不得不把问题分解,使得分解出的每个部分是可理解的,而且各部分之间保持简单的通信关系。用这种方法并不能降低问题的整体复杂性,但是却可使它变成可以管理的。
③软件经常变化
绝大多数软件都模拟了现实世界的某一部分。 现实世界在不断变化,软件为了不被很快淘汰,必须随着所模拟的现实世界一起变化。因此,在软件系统交付使用后仍然需要耗费成本,而且在开发过程中必须考虑软件将来可能发生的变化
④开发效率非常重要
社会对新应用系统的需求超过了人力资源所能提供的限度,软件供不应求的现象日益严重。软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具
⑤开发人员和谐合作是关键
软件处理的问题十分庞大,必须多人协同工作才能解决这类问题。为了有效地合作,必须明确地规定每个人的责任和相互通信的方法,每个人还必须严格地按规定行事,纪律是成功地完成软件开发项目的一个关键
⑥软件需要有效支持用户
开发软件的目的是支持用户的工作。软件提供的功能应该能有效地协助用户完成他们的工作。有效地支持用户意味着必须仔细地研究用户,以确定适当的功能需求、可用性要求及其他质量要求。还意味着软件开发不仅应该提交软件产品,而且应该写出用户手册和培训材料
⑦软件开发者替代其他领域人员创造产品
软件工程师是软件设计、软件体系结构、测试或统一建 模语言等方面的专家,但他们不仅缺乏应用领域和文化领域的实际知识,还缺乏该领域的文化知识,这是软件开发项目出现问题的常见原因
(3)软件工程基本原理
①按软件生存期分阶段制定计划并认真实施
在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作。应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。不同层次的管理人员都必须严格按照计划各尽其职地管理软件开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划
②坚持进行阶段评审
由于大部分错误都是在编码之前造成的,并且错误发现与改正的越晚,所需付出的代价也越高,所以软件的质量保证工作不能等到编码阶段结束之后再进行。因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则
③坚持严格的产品控制
当改变需求时,为了保持软件各个配置成分的一致性, 必须实行严格的产品控制,其中主要是实行基准配置管理。所谓基准配置又称为基线配置,它们是经过阶段评审后的软件配置成分
④使用现代程序设计技术
采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量
⑤结果能够得到清楚的审查
软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。软件开发人员的工作进展情况可见性差,难以准确度量。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查
⑥用人少儿精
软件开发小组的组成人员的素质应该好,而人数则不宜过多。素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误
⑦承认不断改进软件工程实践的必要性
为了保证软件开发与维护的过程能赶上时代前进的步伐,能跟上技术的不断进步,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。例如,收集进度和资源耗费数据,收集出错类型和问题报告数据等
二:软件工程方法学
(1)概念
软件工程方法学:把在软件生命周期全过程中使用的一整套技术方法的集合称之为方法学,也称为泛型。软件工程方法学包含三个要素:方法、工具、过程
方法:完成软件开发各项任务的技术方法,回答“怎么做”的问题工具:为运用方法提供的自动或半自动软件工程支撑环境过程:是为了获得高质量软件所需要完成的一系列任务框架,回答“何时做”的问题
(2)分类
传统方法学(生命周期方法学)
采用结构化技术完成软件开发各项任务把软件生命周期的全过程依次划分为若干阶段每个阶段开始和结束都有严格标准每个阶段结束后要有严格审查
面向对象方法学
把对象作为融合了数据及在数据上的操作行为的统一的软件构件把所有对象划分为类按照父类与子类的关系,把若干类组成层次结构的系统对象彼此间仅能通过发送消息互相联系