一、采访对象
本次采访的对象为一家小型互联网公司—钟吾网络科技有限公司软件开发的项目经理,他于2017年本科毕业于河南工业大学,目前已就职4年。
二、采访方式
本次采访于2021年3月17日通过腾讯会议以口头采访的方式进行,采访过程大约持续20分钟。

三、软件开发流程
1.需求分析阶段
需求分析阶段是由产品经理和和项目经理主导,召集开发人员进行需求讨论会,根据前沿市场反馈的产品需求,进行需求的细化分析,确认需求的可行性、合理性和存在的必要性。最后再确定需求是否实现、怎样实现。
产品经理制作产品原型产品的线框图。
研发工程师基于线框图作需求概要,进行技术评估,达成业务理解的一致性。
2.项目启动阶段
调研文档了解项目背景,了解项目干系人以及目标方向。
签订合同后编写工作说明书,评估企业环境和组织过程资产,据此制定项目章程,记录反映干系人需要和期望的初步要求、项目的目的或立项理由、概要的里程碑进度计划、概要预算、项目的主要风险、可测量的成功标准、概括性的项目描述和项目产品描述、项目的审批要求、项目经理及其职责、职权。确认团队人员及配置。明确项目的目标、角色、各端口及模块。
产品经理和项目干系人确定项目方向,产品型项目的干系人包括公司领导、产品总监、技术总监等。
公司领导确认项目组团队组成,包括产品经理、研发项目经理、研发工程师、测试团队等。
明确项目管理制度,每个阶段的成果产物需要进行相应的评审,评审有相应的会议纪要;从项目启动起,研发项目经理每周提供项目研发周报;测试阶段,测试工程师每周提供项目测试周报。
产品经理进行需求调研,输出需求调研文档。需求调研的方式主要有背景资料调查和访谈。产品经理完成业务梳理。首先,明确每个项目的目标;其次,梳理项目涉及的角色;再来,每个角色要进行的事项;最后,再梳理整个系统分哪些端口,要有哪些业务模块,每个模块再包含哪些功能。
3.设计阶段
UI设计师基于线框图制作界面效果图,须适量考虑交互内容。在UI界面基础上输出主要界面的设计规范。
研发工程师基于界面效果图列出需求规格,明确业务实现细节,消除对最终成果理解的不一致。进行概要设计,实现功能的可视化,有助于理清思路,减少技术盲区和低级缺陷,实现并行开发,提高效率。编写通讯协议,通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。进行表结构设计,确认要建的数据库表及其表结构。形成初步的效果图,经过首次客户的确认。
各个部门进行项目的碰头会议,过程文档整体团队评审会议纪要,再根据交流的具体结果进行二次修改,最终与客户确认高保真视觉图,开始进入研发阶段。
4.研发阶段
前端开发——程序开发——接口对接——第三方接入(支付宝支付功能等)——定期项目会议沟通和管控项目开发进展——开发预算审计。
5.测试阶段
测试工程师形成每周测试内容及下周测试计划,给出测试用例,明确测试方案,包括测试模块、步骤及预期。进行产品面向的平台多机型同步测试,包括App内容测试、App性能测试、App功能测试、App视觉测试,将BUG反馈给研发人员,由研发人员修复BUG后,再进行新一轮的测试,如此循环测试多次确定没有问题以后,测试环节结束。形成测试结果报告以及用户手册系统操作手册。
6.上线阶段
苹果的APP store审核一个应用需要一周左右时间,所以如果是有具体规定上线时间的项目,开发测试一定要提前半个月完成,给上线审核预留时间。安卓各市场一般审核较快,普遍在3天左右。这个阶段由运维人员进行服务器的环境搭建,由开发人员进行代码的编译打包,部署上线。
7.维护更新阶段
上线以后,并不代表软件开发就已经结束,这个时候仍然需要处理生产版本出现的BUG,出现的异常,或者需求的变更、业务的拓展以及对代码的优化。

四、该流程的优缺点及个人感想

1.优点
有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
2.缺点
(1)开发过程一般不能逆转,否则代价太大;
(2)实际的项目开发很难严格按该模型进行;
(3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。
(4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。
3.个人感想
根据被采访人口述,我认为该流程的主要难点在于:
(1)需求梳理,要明确甲方具体要做什么功能,要达到什么目的,主要是双方的沟通成本高。
(2)具体看做哪种类型的项目,再看功能上有没有什么难点,比如直播APP的并发就比较难,因为一个主播可能有几万甚至几十万同时观看,需要保证用户体验。难点主要在于:解决用户的高并发(就是指怎么解决几万几十万用户同时访问服务器,而不至于让程序崩溃)、逻辑难点(有些产品内部的业务逻辑很复杂,又存在很多交叉的点,要保证数据正确流程正确不出错比较难)、效果难点(一些比较优秀的用户体验,或者精美的界面效果要花费很多的时间)、体验优化(被采访人之前做过一个处理图片的项目,初期实现处理一张需要3秒,后期版本要求他们优化成0.5秒,只是3秒的处理,就写了几个月上万行代码,在这个基础上优化难度较大)
(3)开发APP应用有多种模式,模板开发,混合开发及定制开发。其中模板开发就是套用现成的模板,制作周期非常短,工作量非常小,价格最便宜,但APP应用也会缺乏特色,后期效果不强。而定制开发则是根据企业情况做个性化定制,制作周期会很长,工作量非常大,价格最贵,这类APP应用效果最好。混合开发的工作量和价格处于二者之间的位置,效果也是比上不足比下有余。
五、关于新的软件开发流程
1.目前较流行的软件开发模型
(1)边做边改模型(Build-and-Fix Model)
•模型的表现
在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户满意为止。
•缺点
缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;忽略需求环节,给软件开发带来很大的风险;没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。
(2)瀑布模型(Waterfall Model)
•表现
将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实时完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。
•缺点
瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
(4)快速原型模型(Rapid Prototype Model)
•表现
快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
•特点
快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。
(5)螺旋模型(Spiral Model)
•表现
它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型刚开始规模很小,当项目被定义得更好、更稳定时,逐渐展开。“螺旋模型”的核心就在于不需要在刚开始的时候就把所有事情都定义的清清楚楚。可以轻松定义最重要的功能,实现它,然后听取客户的意见,之后再进入到下一个阶段。如此不断轮回重复,直到得到最终产品。
(6)喷泉模型(fountain model)
•表现
喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动.该模型的各个阶段没有明显的界限,开发人员可以同步进行开发.其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。
•缺点
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理.此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
2. 是否会有新的软件开发流程
我认为会有新的软件开发流程,因为时代是在不断发展的,比如就敏捷开发流程的出现为例,随着软件使用的客户从大型研究机构、高精度的科学研究、高性能的复杂项目变为现代社会的每个人,软件的开发流程也发生了相应改变,从原始的复杂固定的软件开发流程变为现在轻便简捷的敏捷开发,所以时代的发展会导致软件开发流程的改变。软件开发流程在实际开发过程中不断优化,最终会形成更加符合时代要求的新的软件开发流程。

软件开发流程及思考—采访某项目经理相关推荐

  1. 一套完整的软件开发流程是怎样的?

    ​做什么事都需要一个流程,软件开发也不例外. 那么,一个软件从无到有到底是怎么开发的?一个软件产品的结果为什么是这样?为什么开发的速度不能再快一点.为什么程序员大多秃顶?他们有那么忙吗?完整的软件开发 ...

  2. 瑞吉外卖项目(一)软件开发流程设计及环境搭建

    第一章 软件开发整体介绍 软件开发流程 软件开发流程 需求分析:产品原型.需求规格说明书 设计:产品文档,ui界面设计,概要设计,详细设计,数据库设计 编码:项目代码,单元测试 测试:测试用例,测试报 ...

  3. 对于维护型项目,是不是可不可以不用按照一般的软件开发流程走?

    有朋友提到: 对于维护型项目,是不是可不可以不用按照一般的软件开发流程走,有没有什么更简洁高效的流程来管理呢?每次都有计划,实际情况比较多,比如来个紧急需求,比如严重bug,导致不能按照计划进行,导致 ...

  4. 软件开发流程包含哪些内容

    2019独角兽企业重金招聘Python工程师标准>>> 能否开发出一个好的软件,关键是看软件开发前期所做的工作,重点是这个软件有没有一个好的 软件开发流程,因为一个好的软件开发流程关 ...

  5. 软件开发模型_QT开发(二十三)——软件开发流程

    一.软件开发流程简介 软件开发流程是通过一系列步骤保证软件产品的顺利完成,是软件产品在生命周期内的管理学. 软件开发流程的本质是软件开发流程与具体技术无关,是开发团队必须遵守开的规则. 二.常见软件开 ...

  6. 用MSBuild.... DailyBuild和软件开发流程的东东

    看到CoolBug在研究有关NAnt的东东,感觉非常的有趣,也来聊聊这个问题,聊聊我喜欢的MSBuild,关于MSBuild 我想JJX比我更有发言权,很早的时候他的WebLog就有记载MSBuild ...

  7. 大智慧 软件 开发语言_智慧工厂培训软件开发流程篇

    为了提高河北钢谷电子商务股份有限公司软件开发的工作效率,明确软件开发过程中相关人员的岗位职责,2020年4月2日下午五点,智慧工厂项目组特开展此次软件开发流程有关培训会议,由纪伟经理担任主讲. 智慧工 ...

  8. 3星|《大产品,小团队》:携程软件开发流程改进的故事

    大产品,小团队:携程敏捷技术与管理转型实战 携程集团创作,作者有产品.开发.测试.PMO等多种角色.有一点比较怪异,每个章节的作者是放在书的最后部分的. 主要内容是携程的软件开发流程改进的故事.携程的 ...

  9. 怎么做软件开发,软件开发流程八个步骤

    软件开发流程是指软件开发设计的一般流程,包括软件的总体结构.模块的组成.功能的设计.程序的编译.调试.联调.测试等过程.主要步骤有:项目分析.确定开发.需求分析.设计.编程.软件测试.软件交付.验收. ...

最新文章

  1. 从头开始学习Adobe Photoshop CC图像编辑
  2. windows客户端安装
  3. Mac VirtualBox 命令行Centos 挂载Mac系统中的文件夹
  4. mysql系列十、mysql索引结构的实现B+树/B-树原理
  5. java servlet是接口_JavaWeb:Servlet 接口
  6. android上方导航条跳转页面,Native Navigation导航组件的使用说明
  7. 理解JVM(五):Java内存模型与线程
  8. HDU 2546 饭卡 动态规划01背包
  9. 手机app测试方法(二)App测试-常见测试点
  10. 如何高效地阅读技术类书籍与博客
  11. ROS中gazebo工具学习(使用gazebo加载机器人模型)
  12. python+appium+android模拟器自动化测试 源码
  13. UE4 VR 重置摄像机朝向
  14. “放心消费”宣言传递正品心智,网易考拉8.16大促首日获用户好评
  15. Cocos Creator 热更新文件MD5计算和需要注意的问题
  16. jmeter监听器---jp@gc - PerfMon Metrics Collector
  17. 怎么让自己平静下来!
  18. 2012-04-28
  19. 香港十大正规外汇黄金交易平台排名(2021版)
  20. 【Swish】Mac 触控板手势窗口管理工具

热门文章

  1. Excel表格无论是新建还是另存保存的格式xlsx会自动变成xlsm,到底是怎么回事? 来看看解决方法
  2. Ubuntu20.04安装QQ
  3. 夏日茶庄java_基于jsp的点心阁茶楼-JavaEE实现点心阁茶楼 - java项目源码
  4. #游戏unity-VR场景漫游#有关VR环境的搭建【HTC vive】
  5. 系统仿真(一):到达教学楼时间拟合
  6. 数据库系统概念笔记-关系模型介绍
  7. C/C++基础面试试题大全
  8. 计算机系统配置流程,如何查看电脑配置 查看电脑配置的方法技巧步骤
  9. 在UE4(Unreal Engine4)中安装 Quixel Bridge Megascans bridget插件
  10. 携手企业创新 共创美好未来——低代码助力企业数字化