考试内容 | 考试要求 |
---|---|
1. 软件和软件工程的含义、软件工程的基本原理 | 1.理解软件和软件工程的含义、软件工程的基本原理。 |
2. 软件危机的原因、表现和消除途径。 | 2.理解产生软件危机的原因和消除软件危机的途径。 |
3. 软件生命周期各个阶段的基本任务。 | 3.了解什么是软件生命周期,了解生命周期各个阶段:可行性分析、需求分析、系统设计、详细设计、实现、测试的基本任务。 |
4. 软件生命周期模型。 | 4.了解各种软件生命周期模型的优缺点和适用场合:瀑布模型、增量模型、快速原型模型、螺旋模型。 |
软件定义
程序、数据及相关文档的完整集合。其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。
软件工程定义
1)把系统的、规范的、可度量的途经用于软件开发、运行和维护过程,也就是把工程应用于软件;
2)研究1)中提到的途径
软件危机:
定义:在计算机软件的开发和维护过程中所遇到的一系列严重问题。
范围: 1.如何维护数量不断膨胀的已有软件。
2.如何开发软件,以满足对软件日益增长的需求。
典型表现:1.对软件成本和开发进度的估计不准确。
2.用户对“已完成的”软件系统不满意的现象经常发生。
3.软件产品质量往往靠不住
4.软件常常是不可维护的
5.软件通常没有适当的文档资料
6.软件成本在计算机系统总成本中所占比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
产生的原因:
与软件本身的特点有关(客观) | 与软件本身的特点无关(主观) |
---|---|
缺乏可见性,进展较难衡量,软件质量较难评价(用户与产品之间的矛盾) | 软件开发与维护的方法不准确,即采用了错误的方法和技术。 |
不会用坏,难维护 | 忽视软件需求分析的重要性 |
复杂性随规模的增加呈指数上升 | 轻视软件维护 |
消除途径:
1.对计算机软件有一个正确的认识(软件是程序,数据,及相关文档的完整集合)
2.软件是一个工程项目(软件开发是一种组织良好,管理严密,各类人员协同配合,共同完成的工程项目)
3.推广使用成功的技术和方法,探索更有效地技术和方法。
4.开发和使用更好的软件工具
软件工程( Software Engineering):
定义:是指导计算机软件开发和维护的一门工程学科,采用工程的概念,原理,技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
方法学:通常把软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。
软件工程方法学包含3要素:方法(回答“怎么做”的问题)
工具(软件工程支撑环境)
过程(任务框架)
软件生命周期:
定义:一个软件从提出开发要求开始直到该软件报废为止得这个时期。
阶段:软件定义-问题定义,可行性研究,需求分析
软件开发-总体设计,详细设计,实现
软件维护-软件维护
软件周期的各个时期及其阶段的基本作用
软件生命周期分为3个时期:软件定义、软件开发、运行维护。
软件定义分为3个阶段:问题定义、可行性研究和需求分析。
软件开发分为4个阶段:总体设计,详细设计,编码和单元测试,综合测试。
其中,总体设计和详细设计又称为系统设计,编码和单元测试,综合测试又称为系统实现。
软件过程:
瀑布模型:必须等前一阶段得工作完成之后,才能开始后一阶段的工作
优点:可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须 经过质量保证小组的仔细验证。
缺点:由于瀑布模型完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需求
快速原型模型:快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集
软件设计人员快速建立一个能反映用户主要需求的原型系统,让用户试用后提出许多修改意见,开发人员按照用户的意 见快速修改原型系统,用户再次使用,反复执行上述操作,直到用户任务符合他们的需求,开发人员据此书写规格说明文档。
增量模型:把软件产品作为一系列的增量构件来设计,每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
优点:能在较短时间内向用户提交可完成部分工作的产品;
逐步增加产品功能可以使用户有较宽裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的 冲击;
螺旋模型:使用原型及其他方法来尽量降低风险,可以理解为每个阶段之前都增加了风险分析过程的快速原型模型。
优点:1.对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标,有助 于把软件质量作为软件开发的一个重要目标;
2.减少了过多测试或测试不足所带来的风险;
3.维护和开发之间没有本质的区别;
缺点:风险驱动型的特点会由于风险评估不准确给项目带来的风险。
喷泉模型:是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。
体现了面向对象软件开发过程迭代和无缝的特性