首页 > 其他分享 >从零做软件开发项目系列之五——系统开发过程

从零做软件开发项目系列之五——系统开发过程

时间:2023-08-25 15:13:52浏览次数:30  
标签:系列 软件开发 迭代 项目 模型 开发 原型 之五

前言

在软件项目的设计开发过程中,除了前期的用户需求调研确认,系统设计、数据库设计等工作之外,还有一些重要的工作需要考虑,比如软件开发模式,如何制定开发计划,如何协调开发人员开展开发工作等。本文将这几项内容与大家进行分享交流。

1 软件开发模式(模型)

我们在项目中,根据具体情况,会采用多种开发模式,以下是项目中会用到的一些开发模型。

1)瀑布模型(Waterfall Model)

瀑布模型是一种比较老旧的软件开发模型,它将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

瀑布模型优点是严格遵循预先计划的步骤顺序进行,一切按部就班比较严谨。

 

 

2)迭代模型(iterative model)

迭代模型,也被称作迭代增量式开发或迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。

在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。对迭代和版本的区别,可理解如下: 迭代一般指某版本的生产过程,包括从需求分析到测试完成; 版本一般指某阶段软件开发的结果,一个可交付使用的产品。  

3)快速原型模型(Rapid Prototype Model)

  快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。

  显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型模型有点整合“边做边改”与“瀑布模型”优点的意味。

4)敏捷软件开发 (Agile development)

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果,关注业务优先级,检查与调整。

敏捷软件开发要注意项目规模,规模增长,团队交流成本就上去了,因此敏捷软件开发暂时适合不是特别大的团队开发,比较适合一个组的团队使用。

 

 

5) 开发模型的融合

每个模式都有一定的特点,适应特定的时期和特定的环境,如果能够取其长,补其短,我们可以在不同的阶段采用不同的模型方式进行开发。

首先,整体我们采用瀑布模型的开发架构,保持瀑布模型的规则性,有严格的规范,保持敏捷的灵活,有文档但并不冗余复杂。

在项目初始阶段,采用快速原型设计方法,通过原型设计,增强需求调研的针对性和有效性。

在项目开发阶段,对系统的模块独立的开发,独立测试,而整体采用的是敏捷开发模型和迭代开发方式,针对客户的需求调研结果,快速分析,敏捷开发,在开发过程中,保持与客户的持续沟通,快速获取客户的进一步需求和反馈信息,对系统进行迭代开发,经过多轮迭代和完善,保证项目的质量,以及项目的顺利推进。

2 制定开发计划

和客户签订合同后,项目有规定的完成期限,根据合同内容和时间规定,来制定合理的系统开发计划,并予以有效的执行。

首先是根据合同要求,确定几个重要的时间节点,在软件工程中也成为里程碑。比如完成时间,也就是项目验收时间,这是最终的时间节点,意味着项目的完成,为了保证这个最终的目标,还需要补充一些时间节点,比如中期目标,一般项目都会有一个中期检查验收,另外,客户可能会根据其实际工作,提出其他的一些进度要求,这些也需要在制定计划的时候加以考虑。

其次是进一步细化计划,根据软件开发大的周期和里程碑,将目标进行分解,把系统模块细分为功能,不断细化,直到可实现的叶子节点功能。然后将功能实现的时间进行合理分配,时间单位可以分到周或者天,细化后的任务和时间要求就会比较清晰。

第三就是将对应的工作分配给具体的人,这里可以画出一个甘特图,让每个人对照甘特图,清楚的知道自己的开发任务,然后根据计划进行工作。

开发计划不是一成不变的,在达成共识的基础上制定出来,也可以根据实际情况进行调整,遵从PDCA循环管理原则,根据执行效果,以及条件的变化调整修正计划,实现既定的开发目标。

 

 

3 开发的团队组织和分工

在实际开发中,一般是由产品经理和客户沟通后,画出原型图,UI设计及美工依据原型图,经过布局和色彩设计画出页面,前端工程师根据页面写出前端代码,页面中使用的数据为静态数据。后端根据前端的数据要求,撰写后端逻辑代码,同时进行数据库的设计,然后,前后端工程师进行对接,前端页面灌入后端提供的接口和数据,联调联试,完成系统开发工作。

 

 

理想情况下,公司会有比较完备的团队组织,包括产品经理、UI设计、美工、前端工程师、架构师、后端工程师、测试工程师、运维工程师等等,在一些大的公司,可能会分的更细,比如数据分析师,算法工程师等岗位,可能也会安排,而在一些小的公司,人员配备没有那么多,一个开发团队可能就只有3-4个人,一个人可能会身兼数职,设计及前后端的工作有可能都会做,职责划分的粒度就会比较粗。

在规模较小的公司,开发过程中,也有可能按照系统的功能模块分配工作,这就需要工程师们具备全面的能力,设计、前端、后端、数据库设计、测试都要比较熟悉,这样做的好处是,减少了前后端的沟通成本,缺点是工程师不会精通所有的技术,产品出来之后可能就会有不如意的地方,需要技术管理者进行把关,特别是需要不断地测试修正,保证系统的开发质量。

4 结语

系统开发过程中,除了开发模式,开发计划、开发团队组织和分工之外,还有一些因素也会影响开发工作,比如资金问题,客户需求的沟通,公司制度,人员管理等等,在实际开发工作中,也应该有相应的管理方法,从多个方面保证开发工作的顺利进行。

标签:系列,软件开发,迭代,项目,模型,开发,原型,之五
From: https://www.cnblogs.com/coodream2009/p/17656998.html

相关文章

  • 【Maven技术专题】「实战开发系列」盘点Maven项目中打包需要注意到的那点事儿
    Maven是什么Maven是一个流行的Java构建工具,它提供了许多插件来帮助开发人员自动化构建和部署Java应用程序。其中一个重要的插件是Maven打包插件,它可以将Java项目打包成可执行的JAR或WAR文件。在本文中,我们将深入探讨Maven打包插件的技术细节和使用方法。Maven打包插件的作用Maven打......
  • Exceptionless系列:简介和部署(Windows、Linux、Docker)
    目录一、简介二、版本三、运行说明1、Exceptionless2、Elasticsearch3、Exceptionless.UI四、打包Exceptionless.UI五、window部署1.Elasticsearch2.Exceptionless六、Docker部署一、简介Exceptionless为您提供了跟踪错误、日志和事件的工具,同时指导您找到可行的解决方案。首先......
  • 模拟集成电路设计系列博客——1.2.2 共漏放大器(源极跟随器)
    1.2.2共漏放大器(源极跟随器)另一个电流镜的常见应用时为源极跟随器提供偏置电流,在下图的例子中,\(Q_1\)为源极跟随器,\(Q_2\)为给\(Q_1\)提供偏置电流的有源负载,这个结构一般用于电压缓冲器,因此也被称作源极跟随器。因为输入和输出节点分别在栅极和源极,漏极作为小信号地,这个结构同......
  • Bisenet系列
    一、BiSeNet1.1背景作者对比了当前用于三种用于加速模型的实时语义分割算法:图(a)左侧所示,通过裁剪图片降低尺寸和计算量,但是会丢失大量边界信息和可视化精度。图(a)右侧所示,通过修建/减少卷积过程中的通道数目,提高推理速度。其中的红色方框部分,是作者提及的ENet建议放弃模型的......
  • Deeplab系列
    Deeplab系列讲解DeepLab系列论文一共有四篇,分别是DeepLabV1、DeepLabV2、DeepLabV3、DeepLabV3+。因为卷积神经网络的空间信息细节已经被高度抽象画,所以它就具有很好的平移不变性,这样可以能够很好的处理图像分类问题,但是它的最后一层的输出不足以准确的定位物体进行像素级分......
  • 从零做软件开发项目系列之四——数据库设计
    前言在对软件进行设计的过程中,数据库的设计是一项重要的内容,软件中主要的处理对象就是各类业务数据,通过对业务数据的处理,实现各种功能。我们经常说的,写程序,说到底就是增删改查,而增删改查的对象就是各种数据。数据都存储在数据库中,其重要性不言而喻,对于数据库的设计也是软件设计的......
  • 从零做软件开发项目系列之三——系统设计
    前言在与客户充分接触后取得需求调研结果,然后分析调研内容,撰写完成项目的需求规格说明书。这是一个正式的文件,需要供需双方签字确认。说明书中会明确需求方的要求和开发方实现的内容,依据需求规格说明书,开发方就要开展系统设计工作。进行系统设计工作,粗略的可以分成两个阶段,概要......
  • 《asyncio 系列》1. 什么是 asyncio?如何基于单线程实现并发?事件循环又是怎么工作的?
    https://www.cnblogs.com/traditional/p/17357782.html楔子许多应用程序,尤其在当今的Web应用程序领域,严重依赖IO操作。这些类型的操作包括从Intermet下载网页的内容、通过网络与一组微服务进行通信,或者针对MySOL、Postgres等数据库同时运行多个查询。Web请求或与微服......
  • iPhone14系列safearea、分辨率及媒体查询
    特别注意:iPhone14Pro和iPhone14ProMax的状态栏高度和safeArea顶部安全距离不一致屏幕尺寸及安全区大小手机型号尺寸(pt)倍数屏幕(px)状态栏高度顶部安全距离底部安全距离iPhone14Pro393*85231179*255654pt59pt34pt(竖屏)/21pt(横屏)iPhone14ProMax430*93......
  • Flutter系列文章-Flutter 插件开发
    在本篇文章中,我们将学习如何开发Flutter插件,实现Flutter与原生平台的交互。我们将详细介绍插件的开发过程,包括如何创建插件项目、实现方法通信、处理异步任务等。最后,我们还将演示如何将插件打包并发布到Flutter社区。第一部分:Flutter与原生平台交互在Flutter项目中,你......