软件过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件过程
软件过程为一个为建造高质量软件所需完成的任务的框架,即形成软件产品的一系列步骤,包括中间产品、资源、角色及过程中采取的方法、工具等范畴。
信息隐蔽
信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的.
桩模块
软件测试技术的一种,主要用在单元测试阶段。由于对已开发的单元模块功能和行为测试会涉及到仿真对象的概念,比如说驱动模块和桩模块。桩模块:桩模块(Stub)是指模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。主模块作为驱动模块,与之直接相连的模块用桩模块代替。在集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。
瀑布模型的优缺点
1、瀑布模型有以下优点
1)为项目提供了按阶段划分的检瀑布模型
查点。2)当前一阶段完成后,您只需要去关注后续阶段。3)可在迭代模型中应用瀑布模型。增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。
2、瀑布模型有以下缺点
1)在项目各个阶段之间极少有反馈。2)只有在项目生命周期的后期才能看到结果。3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。4)瀑布模型的突出缺点是不适应用户需求的变化.
3.衡量模块独立性的两个标准是什么?它们各表示什么含义?
两个定性的度量标准:耦合与内聚性
耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
内聚性:也称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。模块内元素联系越紧密,内聚性越高。
软件质量
概括地说,软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。可划分为三组,分别反应用户在使用软件产品时的三种观点。正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。
软件质量因素软件质量因素主要包括以下十点:功能性质量因素:正确性,健壮性,可靠性非功能性质量因素:性能,易用性,清晰性,安全性,可扩展性,兼容性,可移植性
正确性正确性是指软件按照需求正确执行任务的能力。“正确性”的语义涵盖了“精确性”。正确性无疑是第一重要的软件质量属性。技术评审和测试的第一关都是检查工作成果的正确性。机器不会主动欺骗人,软件运行出错通常都是人造成的,所以不要找借口埋怨机器有毛病。
健壮性健壮性是指在异常情况下,软件能够正常运行的能力。正确性描述软件在需求范围之内的行为,而健壮性描述软件在需求范围之外的行为。开发者往往把异常情况错当成正常情况而不作处理,结果降低了健壮性。用户才不管正确性与健壮性的区别,反正软件出了差错都是开发方的错。所以提高软件的健壮性也是开发者的义务。健壮性有两层含义:一是容错能力,二是恢复能力。
可靠性可靠性是指在一定的环境下,在给定的时间内,系统不发生故障的概率。可靠性本来是硬件领域的术语。比如某个电子设备在刚开始工作时挺好的,但由于器件在工作中其物理性质会发生变化(如发热),慢慢地系统的功能或性能就会失常。所以一个从设计到生产完全正确的硬件系统,在工作中未必就是可靠的。软件在运行时不会发生物理性质的变化,人们常以为如果软件的某个功能是正确的,那么它一辈子都是正确的。可是我们无法对软件进行彻底地测试,无法根除软件中潜在的错误。平时软件运行得好好的,说不准哪一天就不正常了,如有千年等一回的“千年虫”问题,司空见惯的“内存泄露”问题、“误差累积”问题等等。时隐时现的错误一般都属于可靠性问题,纠错的代价很高。
性能性能通常是指软件的“时间-空间”效率,而不仅是指软件的运行速度。人们总希望软件的运行速度高些,并且占用资源少些。性能优化的关键工作是找出限制性能的“瓶颈”可以通过优化数据结构、算法和代码来提高软件的性能。
易用性易用性是指用户使用软件的容易程度。现代人的生活节奏快,干啥事都想图个方便。所以把易用性作为重要的质量属性对待无可非议。导致软件易用性差的根本原因:理工科大学教育存在缺陷:没有开设人机工程学、美学、心理学这些必修课,大部分开发人员不知道如何设计易用的软件产品。开发人员犯了“错位”的毛病:他以为只要自己用起来方便,用户也就会满意。软件的易用性要让用户来评价。当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用“界
面友好”、“方便易用”等词来评价软件产品。
清晰性清晰意味者所有的工作成果易读、易理解,可以提高团队开发效率,降低维护代价。开发人员只有在自己思路清晰的时候才可能写出让别人易读、易理解的程序和文档。可理解的东西通常是简洁的。一个原始问题可能很复杂,但高水平的人就能够把软件系统设计得很简洁。如果软件系统臃肿不堪,它迟早会出问题。所以简洁是人们对工作“精益求精”的结果,而不是潦草应付的结果。千万不要把在学校里“造文章”的手法用于开发产品!
安全性这里安全性是指信息安全,英文是Security而不是Safety。安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。“道高一尺,魔高一丈”,绝对安全的信息系统几乎不存在。开发商和客户愿意为提高安全性而投入的资金是有限的,他们要考虑值不值得。究竟什么样的安全性是令人满意的呢?一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等因素)高于得到的好处,那么这样的系统可以认为是安全的。
可扩展性可扩展性反映软件适应“变化”的能力。在软件开发过程中,“变化”是司空见惯的事情,如需求、设计的变化,算法的改进,程序的变化等等。由于软件是“软”的,是否它天生就容易修改以适应“变化”?关键要看软件的规模和复杂性。现代软件产品通常采用“增量开发模式”,不断推出新版本,获取增值利润。可扩展性越来越重要。可扩展性是系统设计阶段重点考虑的质量属性。兼容性兼容性是指两个或两个以上的软件相互交换信息的能力。兼容性的商业规则:弱者设法与强者兼容,否则无容身之地;强者应当避免被兼容,否则市场将被瓜分。示例:中国联通和中国移动的手机互联互通问题金山软件公司的WPS与微软的Word 之争可移植性
可移植性是指软件运行于不同软硬件环境的能力编程语言越低级,其程序越难移植,反之则容易。软件设计时应该将“设备相关程序”与“设备无关程序”分开,将“功能模块”与“用户界面”分开。
集成测试
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。