2023上下半年 系统架构师论文-软件开发模型(Software Development Model)

135 阅读9分钟

软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架,软件开发过程包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要任务和活动,用来作为软件项目工作的基础。对于不同软件项目,针对应用需求、项目复杂度、规模等不同要求,可以采用不同的开发模型,并采用相应的人员组织策略、管理方法、工具和环境。

请围绕“软件开发模型及应用”论题,依次从以下三个方面进行论述

  1. 简要叙述你参与的软件开发项目以及你所承担的主要工作
  2. 列举出几种典型的软件开发模型,并概要论述每种软件开发模型的主要思想和技术的特点
  3. 根据你所参与的项目中使用的软件开发模型,具体阐述使用方法和实施效果

范例:摘要部分

2018年5月,我所在公司承担了自动化旅游平台的开发工作,我有幸作为该项目的技术负责人参与整个开发过程,并负责了该项目的需求分析与系统设计的工作。该系统主要包括供应商旅游产品自动化上架、价格订单的自动化同步、旅游产品的集成平台化、经销商以及集团公司平台的自动化销售等也业务模块。本文以旅游平台为例,主要论述了统一过程开发模型在该项目中的具体应用。在初始阶段,我们建立了业务模型并且确立项目的边界;在细化阶段,主要对需求流程进行补充和完善;在构件阶段,主要是开发构件和应用程序功能,并将其集成为产品。整个项目历时10个月开发完成,到目前运行稳定。实践证明,这种开发模型有效的提高了开发效率,降低了开发成本和项目风险。

正文部分:

目前由于网络的快速发展,旅游产品的多种多样,价格的变动、产品的热点变动也比较快,公司内存在很多的业务以及销售进行维护这些产品,会逐步出现人员的冗余现象,尤其是对于双十一这种,打折促销活动,单天的销售单量达到了10万左右,很难进行维护,于是集团决定搭建旅游平台的项目。

2018年5月,我所在公司承担了旅游平台的开发工作,我有幸作为该项目的技术负责人,参与整个开发过程,并负责了该项目的需求分析与系统设计工作。该系统主要解决供应商大量产品上、下架以及价格、库存的同步处理,同步更新经销商平台的产品上下架、库存、价格的处理,避免由于人员不足导致的产品无法进行及时的上架、下架、价格、库存更新问题;其中包括供应商的产品接口的接入,旅游平台进行接口的适配处理,然后转换为统一的产品,经过统一的接口分发到各个经销商的平台上面售卖;这个流程是一个产品整合、上家售卖;产品的下单是客户先通过集体旅游平台或者经销商的平台上面进行下单,然后通过旅游平台下单的处理更新到供应商平台进行结算;因此,如何能够让项目开发顺利进行,选择一种合适的开发模型组织开发显得至关重要的。

当前主流的开发模型主要有瀑布模型、演化模型、螺旋模型、统一过程和敏捷开发模型等。其中瀑布模型,是一种严格遵循软件生命周期各阶段的固定顺序,一个阶段完成再进入另一个阶段。适合于业务需求比较明确且很少变更的项目。演化模型,是从初始的模型中逐渐演化为最终软件产品,是一种“渐进式”原型法。适合于用户需求不明确的项目,且软件完善周期较长。螺旋模型,是一种结合了瀑布模型和演化模型的优点,最主要的特点在于加入了风险分析。适合项目规模庞大,复杂且高风险的项目,由于流程复杂,增加了大量成本和时间消耗;敏捷方法,是一种以人为核心、迭代、循序渐进的开发方法。适用于小规模软件或者小团队开发;统一过程(UP),一个通用过程框架,适合于各种应用领域、组织类型、性能水平、项目规模的项目;采用强大的UML建模语言,能够在团队中形成统一规范和模板,同时有很多成熟商业软件提供整个开发周期的相关支持,可以极大的降低开发和管理成本,提高开发效率。因此,我们选择采用统一过程(UP)开发模型。

基于统一过程(UP)的软件项目一般分为初始阶段,细化阶段,构建阶段和交付阶段四个阶段。本文主要着重从前3个阶段具体论述统一过程开发模型在该项目中的具体应用。

首先,初始阶段,我们主要为整个系统建立业务模型并确立项目的边界。由于旅游平台的很多业务流程基本相同,通过调研分析和整理,利用UML工具PowerDesigner对系统业务模型进行梳理,识别出于系统交互外部实体,比如景点门票、火车票、飞机票、以及酒店的住宿产品等;可以使用PowerDesigner建立相关的类结构图和数据结构的概念模型。同时,这些实体如何与系统进行交互的各种流程,为了整理的更加准确和清洗,期间,我们与各个供应商厂家进行反复的沟通和确认,最终定义尽量符合旅游供应商业务规范的通用流程,这样既满足了各种机制的业务要求,又能给成长中的其他旅游供应商提供更好的借鉴参考的空间,最后利用PowerDesigner的建立相关的用例图和时序图,并整理相关的设计文档,以备后续系统设计使用。同时,我们对各个旅游供应商一些特殊需求进行了梳理评估,对其中暂时无法实现或者实现成本较高的,加入风险列表,跟客户最后再进行协商和确认,有些进行进行调整变化,有些直接放到后续项目升级中加以实现。

其次,在细化阶段,主要是基于初始阶段确定下来的需求流程进行补充和完善,同时,淘汰业务中风险最高的元素。识别出主要功能和一些重要的非功能需求,做出最佳的决策。我们基于初始阶段的成果,对实体进行进一步的梳理,譬如,删除无用的实体类,抽象合并和留下真正需要的实体类,同时根据业务需求补充类之间的关系。我们对业务用例也进行进一步的梳理,譬如,一些业务组件,基于我们原有的构件库进行升级和改造,可以直接使用,我们就采取自研,这样既可以提高开发效率,又能既节省项目的成本。而譬如一些队列消息的组件,由于自研成本和本身团队的能力限制,所以采用第三方库的构件来实现。由于旅游平台是需要支持安卓,苹果两种手机操作系统,所以,为了减少后期开发和维护成本,对通信接口规范进行了统一的设计,同时,也在架构层面上降低项目的开发风险。

最后,构件阶段,主要是开发所有剩余的构件和应用程序功能,把这些构件集成为产品。由于平台包括手机端、电脑端的程序设计。我们采用了基于构件的方式进行具体功能的构件,譬如,我们设计开发了统一的登录模块,统一的权限管理模块,产品管理模块,订单查询模块,日志管理模块等。同时,我把团队又根据业务分为产品组与订单组,主要进行具体业务功能的开发;组件架构组,主要对通用的构件进行封装和集成;移动业务组,主要进行移动模块的开发。由于采用了组件进行开发,既能降低开发的风险和后续维护的成本,同时提高了开发效率,项目推进过程中取得了不错的效果。由于涉及了几十家的供应商旅游公司,同时,系统模块进行了功能的测试;同时,由于涉及浏览器和移动端,在各种版本兼容性上也进行了充分的测试;最好,考虑到用户体验,还对系统进行充分的压力测试和性能测试。

整个项目历时10个月开发完成,最终在2019年4月上线完成交付,到目前运行稳定。通过在生产环境一段时间的使用,用户普遍反馈良好,但同时,也存在一些不足,例如,在细化阶段没有充分考虑到供应商产品业务上的区别,缺少了灵活的配置策略,在后期的开发完后无法统一调整,只能在临时为存在差异的旅游供应商的公司进行代码层面的调整。以后在这种问题上准备结合原型法的一些思想进行调整,尽量减少类似问题的出现。

实践证明,这种开发模型的选择有效的降低开发成本和项目风险,提高了团队开发效率。旅游平台是一个通用的管理平台,接下来,作为项目的负责人,我会总结现阶段的经验教训,在后续的系统升级完善中,不断思考和改进统一过程的方法在项目中的应用,充分发挥统一过程开发模型的更大作用,为公司创造效益的同时,也能够为公司开发出更加稳定更高效的系统