软件工程是计算机领域的一门专业基础课,它对于培育学生的软件素质、提高学生的软件开发能力与软件项目管理能力具备极其重大意义。本篇介绍软件项目的开发模型。
软件开发模型是指软件开发全部过程、活动和任务的框架结构。根据软件开发工程化及实际要,软件生存周期的划分不一样,形成了不同的软件开发模型,或称软件生存周期模型。
瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。瀑布模型的核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,它将软件生存周期划分为制订计划、需求分析、软件设计、程序编写、软件测试和运行维护6个基本活动。
瀑布模型就是自顶向下的结构化开发模型方法,其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容,给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若评审通过,则继续下一项活动;否则返回前面,甚至更前面的活动。瀑布模型如图1-1所示。
瀑布模型奠定了软件工程方法的基础,流水依赖,便于分工协作。同时,瀑布模型为项目提供了按阶段划分的检查点,有复审质量保证。
瀑布模型是线性的,用户见面晚,从而增加了开发风险,瀑布模型的突出缺点是不适应客户的真实需求的变化。
正确的需求定义是系统成功的关键。但是许多用户在开始时,往往不能准确地描述他们的需要,软件研发人员需要反复地和用户交流信息,才能全面、准确地了解用户的需求。在用户实际使用了目标系统以后,通过对系统的执行、评价,使用户更加明确对系统的需求。此时用户常常会改变原来的某些想法,对系统提出新的需求,以便使系统更符合他们的实际需要。
原型模型是在开发真实系统之前,构造一个原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其实现用户的要求;第二步则在第一步的基础上开发客户满意的软件产品。原型模型如图1-2所示。
原型方法打破了瀑布模型方法的僵化,让开发过程之间和开发过程中的主客体之间提前融合。原型模型缩短了开发周期,加快了工程进度,降低了工程成本。
原型模型所选用的开发技术和工具不一定符合主流的发展,快速建立起来的系统结构加上连续修改有几率会使产品质量低下。
增量模型也称为渐增模型,融合了瀑布模型的基本成分和原型模型的迭代特征,该模型采用随着日程时间进展而交错进行的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第一个增量往往是核心的产品,实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这样的一个过程在每一个增量发布后不断地重复,直到产生最终的完善产品为止。
增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。增量模型本质上是迭代的,但与原型模型不一样的是其强调每一个增量均发布一个可操作产品。早期的增量是最终产品的“可拆卸”版本,但提供了为用户服务的功能,并且还提供了评估的平台。增量模型如图1-3所示。
增量模型在较短的时间内向用户提交有用的工作产品,解决一些急用功能。同时,增量模型提高了系统的可维护性,总系统由构件集成,当需求变更时只变更部分部件,而不必影响整个系统。
由于在加入构件时,一定要保证不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。增量模型的灵活性使其适应需求变化的能力大大优于瀑布模型和快速原型模型,但也非常容易退化为边做边改模型,从而使软件过程的控制失去整体性。
螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代特征以及瀑布模型的系统化与严格监控特征。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型如图1-4所示。
螺旋模型具有设计上的灵活性,可以在项目的各个阶段允许其变更。同时,以小的分段来构建大型系统使成本计算变得简单容易。此外,客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
螺旋模型很难让用户确信这种演化方法的结果是能控制的,况且该模型建设周期长,软件技术发展比较快,所以常常会出现开发结束后的软件和当前的技术水平有了较大的差距,从而不足以满足当前用户的需求等问题。
喷泉模型是一种以客户的真实需求为动力,以对象为驱动的模型。喷泉模型克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,可使开发过程具有迭代性和无间隙性。喷泉模型在各个开发阶段是重叠的,因此不利于项目的管理。此外,这种模型要求严格管理文档。喷泉模型如图1-5所示。
喷泉模型对生命周期各阶段的区分变得不重要,不明显了。喷泉模型分析阶段得到的对象模型也适用于设计阶段和实现阶段,提高了软件项目开发效率,节省了开发时间。
喷泉模型的开发过程过分无序,面向对象范型本身要求经常对开发活动进行迭代或求精。同时,在开发过程中需要大量的研发人员,因此不利于项目的管理。
本书共分为11章,设计体系遵循教育部“新工科”工程技术人才“实基础、精专业、强实践、重创新、懂管理”的育人理念。全书涵盖软件工程基础知识、软件分析与设计、软件实现、软件测试、软件项目管理、软件开发实践和应用工具拓展等方面的内容。
第1章绪论,涵盖了软件工程概述、软件工程学习者阶段性知识与能力框架和全书实践任务预览。
第2章可行性分析,介绍了可行性研究,包括项目立项、可行性研究的方法与工具。以Visio软件为例,详解了流程图的绘制过程。
第3章需求分析,描述了需求分析的步骤和结构化分析方法。以机票预订系统需求分析报告为例,从数据、功能、性能三个维度展示了需求文档的书写流程与规范。
第4章软件设计,介绍了软件设计的步骤、面向对象的软件设计方法——UML和UML的主要建模工具RationalRose。借助在线选修课程管理系统模块设计案例,展现了用例模型和UML图的构建方法。
第5章UI设计,总结了界面的设计原则和交互设计的操作技巧。采用基于Axure的高保真Web原型图设计案例和基于Kitten的交互设计案例进行讲解,带领读者快速入门交互设计。
第6章软件数据库设计,介绍了数据库系统、关系数据库管理系统、MySQL和结构化查询语言SQL。此外,介绍了数据库管理工具Navicatfor MySQL的基本操作。
第8章软件测试,归纳了软件测试常用的方法和工具,重点介绍了自动化测试工具Selenium。基于此,设计了单元测试实战和自动化网页资料单选实战,帮助读者快速熟练使用测试工具。
第9章项目管理,介绍了项目管理的相关概念及应用,设计了多个实践案例,模拟了项目管理中的关键步骤,以帮助读者快速理解项目管理的基本流程和技术应用。
第10章软件工程实践,引导读者以案例贯穿软件工程开发全流程的方式,实践了“湖北省青少年运动员竞赛注册管理信息系统”项目和“疫情地图小程序”项目,从而驱动读者自主探索软件开发的工具和过程。
第11章软件工程中的“黑科技”工具,拓展了一些科技狂潮下应用于软件工程实践的“黑科技”工具,激发读者欣赏科技之美,追求创造科技之美。返回搜狐,查看更加多