西门子S7-200模块CPU224CN继电器
时,应考虑到需求的变化,以保证整个项目的顺利进行。
第3阶段:软件设计,该阶段在需求分析结果的基础上,对整个软件系统进行设计,如系统框架设计、数据库设计等。
第4阶段:软件开发,该阶段在软件设计的基础上,选择一种编程语言进行开发。在开发过程中,必须要制订统一的、符合标准的程序编写规范,以保证程序的可读性、易维护性以及可移植性。
第5阶段:软件测试,该阶段是软件开发完成后对软件进行测试,以查找软件设计与软件开发过程中存在的问题并加以修正。软件测试过程包括单元测试、集成测试、系统测试3个阶段;测试的方法以黑盒测试、白盒测试或者两者结合的形式进行。在测试过程中,为减少测试的随意性,需要制订详细的测试计划并严格遵守;测试完成之后,要对测试结果进行分析并对测试结果以文档的形式汇总。
第6阶段:软件维护,软件完成测试并投入使用之后,面对庞大的用户群体,软件可能无法满足用户使用需求,此时就需要对软件进行维护升级以延续软件的使用寿命。软件的维护包括纠错性维护和改进性维护两个方面。软件维护是软件生命周期中持续时间*长的阶段。
1.1.2 软件开发模型
软件测试工作与软件开发模型息息相关,在不同的软件开发模型中,测试的任务和作用也不相同,因此测试人员要充分了解软件开发模型,以便找准自己在其中的定位与任务。
软件开发模型规定了软件开发应遵循的步骤在瀑布模型中,软件开发的各项活动严格按照这条线进行,只有当一个阶段任务完成之后才能开始下一个阶段。软件开发的每一个阶段都要有结果产出,结果经过审核验证之后作为下一个阶段的输入,下一个阶段才可以顺利进行。如果结果审核验证不通过,则需要返回修改。
瀑布模型为整个项目划分了清晰的检查点,当一个阶段完成之后,只需要把全部精力放置在后面的开发上即可,它有利于大型软件开发人员的组织管理及工具的使用与研究,可以提高开发的效率。
但是瀑布模型是严格按照线性方式组件完成之后,经过客户审核评价形成下一个组件的开发计划,包括对核心产品的修改和新功能的发布,这样重复迭代步骤直到实现*终完善的产品。
迭代模型可以很好地适应客户需求变更,它逐个组件地交付产品,客户可以经常看到产品,如果某个组件没有满足客户需求,则只需要更改这一个组件,降低了软件开发的成本与风险。但是迭代模型需要将开发完成的组件集成到软件体系结构中,这样会有集成失败的风险,因此要求软件必须有开放式的体系结构。此外,迭代模型逐个组件地开发修改,很容易退化为“边做边改”的开发形式,从而失去对软件开发过程的整体控制。4. 螺旋模型制订计划、风险分析、实施工程、客户评估,各象限含义如下。
(1)制订计划:确定软件目标,制订实施方案,并且列出项目开发的限制条件。
(2)风险分析:评价所制订的实施方案,识别风险并消除风险。
(3)实施工程:开发产品并进行验证。
(4)客户评估:客户对产品进行审核评估,提出修正建议,制订下一步计划。
在螺旋模型中,每一个迭代都需要经过这4个步骤,直到*后得到完善的产品,可以进行提交。
螺旋模型强调了风险分析,这意味着对可选方案和限制条件都进行了评估,更有助于将软件质量作为特殊目标融入产品开发之中。它以小分段构建大进式的改进,每次改进一小部分,如果可行再逐步扩大改进范围。在敏捷模型中,软件开发不再是线性的,开发的同时也会进行测试工作,甚至可以提前写好测试代码,因此在敏捷模型中,有“开发未动,测试先行”的说法。
另外,相比于传统的软件开发模型,敏捷模型更注重“人”在软件开发中的作用,项目的各部门应该紧密合作、快速有效地沟通(如面对面沟通),提出需求的客户可以全程参与到开发过程,以适应软件频繁的需求变更。为此,敏捷模型描述了一套软件开发的价值和原则,具体如下所示。
(1)个体和交互重于过程和工具。
(2)可用软件重于完备文档。
(3)客户协作重于合同谈判。
(4)响应变化重于遵循计划。
对于敏捷模型来说,并不是工具、文档等不重要,而是更注重人与人之间的交流沟通。
敏捷模型可以及时响应客户需求变更,不断适应新的趋势,但是在开发灵活的同时也带来了一定程度的混乱。例如,缺乏文档资料;软件之前版本的可重现性、可回溯性较低;对于较大的项目,人员越多,面对面的有效沟通越困难。因此敏捷模型比较适用于小型项目的开发,而不太适用于大型项目。多学一招:敏捷模型的开发方式
敏捷模型主要有2种开发方式:Scrum与Kanban,下面分别对这两种开发方式进行简单的介绍。1. Scrum
在Scrum开发方式的团队中,会选出一个Scrum Master(产品负责人)全面负责产品的开发过程。Scrum Master把团队划分成不同的小组,把整个项目划分成细小的可交付成果的子项目,分别由不同的小组完成,并对各小组的工作划分优先级,估算每个小组的工作量。
在开发过程中,每个小组的工作都是一个固定时长的短周期迭代,开发短周期一般为1~4周。开发完成之后,经过一系列的测试、优化等,将产品集成,交付*终成果。2. Kanban
Kanban(看板)源于丰田的生产)效率:在指定条件下,相对于所有资源的数量,软件产品可提供适当性能的能力。
(5)可维护性:指软件产品被修改的能力。修改包括修正、优化和功能规格变更的说明。
(6)可移植性:指软件产品从一个环境迁移到另一个环境的能力。
这6大特性及其子特性是软件质量标准的核心,软件测试工作就从这6个特性和27个子特性去测试、评价一个软件的。多学一招:纸杯测试
“纸杯测试”是一个经典的测试案例,这是微软公司曾给软件测试者出的一道面试题,用于考察面试者对软件测试的理解与掌握程度。
测试项目:纸杯。
需求测试:查看纸杯说明书是否完整。
界面测试:观察纸杯外观,测试表面是否光滑、手感是否舒适。
功能测试:用纸杯装水,观察是否漏水。
安全测试:纸杯是否有毒或细菌。
可靠性测试:从不同高度摔下来,观察纸杯的损坏程度。
易用性测试:用纸杯盛放开水是否烫手,纸杯是否易滑、是否方便饮用。
兼容性测试:用纸杯分别盛放水、酒精、饮料、汽油等,观察是否有渗漏现象。
可移植性测试:将纸杯放在温度、湿度等不同的环境中,查看纸杯是否还能正常使用。
可维护性:将纸杯揉捏变形,看其是否能恢复。
压力测试:用一根针扎在纸杯上不断增加力量,记录多大压强时针能穿透纸杯。
疲劳测试:用纸杯分别盛放水、汽油放置24小时,观察其渗漏情况(时间和程度)。
跌落测试:纸杯(加包装)从高处落下,查看可造成破损的高度。
震动测试:纸杯(加包装)六面震动,评估它是否能应对恶劣的公路/铁路/航空运输等。