欢迎来到天天文库
浏览记录
ID:18444275
大小:339.73 KB
页数:23页
时间:2018-09-18
《软件工程复习提纲》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、v1.什么是软件?v是一系列按照特定顺序组织的计算机数据和指令的集合,包括程序、数据和文档。v附:软件的特征:成本高、风险大、维护困难vv2.什么是软件危机,其内容主要是指什么?v原因:1、与软件本身的特点有关;2、与软件开发人员有关;定义:在计算机软件开发和维护过程中所遇到的一系列严重的问题。1)对软件开发成本和进度的估计常常不准确。2)用户对“已完成”系统不满意的现象经常发生。3)软件产品的质量不可靠。4)软件的可维护程度非常之低。5)软件通常没有适当的文档资料。6)软件的成本不断提高。7)软件开发生产率无法满足人们对软件的生产要求,软件开发生产率的提高落后于硬件的发展。
2、3.什么是软件工程?开发、运行和维护软件的系统方法•软件工程主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本、改进软件产品质量、提高软件生产率水平的目标。4.软件工程的目标(PP.41)及其组成部分。方法、工具和过程。•软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。方法:是指产生某些结果的形式化过程,•工具:是用更好的方式完成某件事情的设备或自动化系统,如各种
3、集成开发环境、编译工具、测试工具等。•过程:生产特定产品的工具和技术的结合•软件工程方法学包含3个要素:方法、工具和过程。5.软件开发方法的定义。通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。比如SASD方法、面向对象的软件开发方法。6.好的软件的一些主要衡量指标。例如McCall的质量模型。(1)质量,它的衡量:产品的质量、过程的质量、商业环境背景下产品的质量。McCall的质量模型:•需求分析员:与客户合作,确定并文档化客户需求•设计人员:生成系统描述:系统要做什么•程序员:编写事先指定需求的代码•测试人员:发现错误•培训人员:向用户说明如何使用这个系
4、统•维护小组:修复系统验收之后出现的错误•资料管理员:准备和存储软件需求文档等•配置管理团队:保持各工件之间的通信附:开发团队的成员第二章1.什么是软件生命周期?主要分为哪些阶段?各个阶段的主要任务及产生的主要制品?定义:当过程是在开发软件产品时,把这种软件开发过程称为软件生命周期。阶段:(1)可行性研究与计划任务:对于问题是否有行得通的解决方法(技术、经济、操作、社会)制品:可行性论证报告初步的项目开发计划(2)需求分析任务:为了解决这个问题,目标系统必须做什么制品:软件需求规格说明书(3)总体(概要)设计任务:概括地说,应该怎样实现目标系统制品:概要设计规格说明书数据库或
5、数据结构设计说明书集成测试计划(4)详细设计任务:应该怎样具体地实现这个系统制品:详细设计规格说明书单元测试计划(5)实现任务:写出正确的容易理解、容易维护的程序模块制品:源程序代码(6)集成测试任务:根据概要设计规格说明书,将经过单元测试的模块逐步进行集成和测试制品:生成满足概要设计要求、可运行的系统源程序和系统集成测试报告(7)确认测试任务:根据软件需求规格说明书,测试软件系统是否满足用户的需求制品:可供用户使用的软件产品(文档,源程序)(8)使用和维护任务:通过各种必要的维护活动使系统持久地满足用户的需要制品:版本更新的软件产品2.需求分析的定义。–确定用户对待开发软件
6、系统的需求包括:•功能•性能•运行环境约束3.典型的软件开发过程模型的特点(优缺点)及要求,特别是原型法、瀑布模型、增量和迭代等(1)瀑布模型:需求分析->系统设计->程序设计->编码->单元测试和集成测试->系统测试->验收测试->运行和维护;优点:采用规范的方法;严格规定每个阶段提交的文档;要求每个阶段交出的产品必须经过验证;缺点:对如何处理开发中产品和活动的变化没有提供相关的指导•将软件开发视为制造而不是创造•创造一个产品没有迭代的活动•需要等待很长时间(2)V模型:•用单元测试验证程序设计•用系统测试验证系统设计•用验收测试验证需求•如果在验证和确认过程中发现了问题,
7、那么在再次执行右边的测试步骤之前,重新执行左边的步骤以修正左边(3)原型化模型:•允许需求或设计反复调查•减少开发中的风险和不确定性••原型模型存在的问题•⑴为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。•⑵为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。•⑶开发过程不便于管理。(3)增量开发:先定义一个小的功能子系统,再在每个新的发布中增加新功能迭代开发:一开始就提交完整的系统,再在每一个新的发布中改变每个子系统的功能•减少循环时间•系统
此文档下载收益归作者所有