软件的开发过程——从想法到实现,是什么让我们半途而废?
软件的开发过程
-
-
- 一、什么是软件的生产过程
-
- 具体完整的软件开发阶段
- 二、软件开发过程模型
- 欢迎关注我、共勉:star:
-
一、什么是软件的生产过程
是不是时不时都有一些新的idea冒出来,或者刚学完某种技术总有种把它用出来的冲动,每次都急急忙忙的开始,然后又毛毛躁躁的收场,这就是初学者的软件“生产过程”——最后他也可能会有总结:这是一次失败的尝试,我技术还没学到家?
软件开发、想法落地的失败到底是不是你编程能力的问题?毫无疑问,确实是!
但是这里说的编程可能不是你理解的编程,看一看软件开发的具体阶段你可能会有所体会:
具体完整的软件开发阶段
1、软件定义包括以下三部分——
- 问题定义
- 可行性研究
- 需求分析
其中问题定义确定需要解决的问题,或者切实的想法,比如说:我想开发个软件?!!!——还是我想:做个能够解决学生成绩手工录入麻烦和成绩管理核查以及保存困难,我们现在都是人工把学生成绩录入电脑,能不能开发一套能够扫描导入成绩的东西,并且…
可行性研究主要确定项目的价值和成本,以及采取相关的技术难度等,你不可能一个人立刻开发一个人造火箭出来!!
最后需求分析是对软件开发指导价值最大的部分,切实到每一点需要实现的需求,注意:直到这里和代码仍然一点关系都没有!!——以上完成后,产生《可行性分析报告》、《软件需求规格说明》都有标准规范的格式,可结合项目裁剪…比如说我做一个自娱自乐的小游戏,可行性分析就直接…em…“项目可行,加油!!”
2、软件开发:我不懂为什么需要这么多文档?但我大受启发!
- 总体设计
- 详细设计
- 编码和单元测试
- 综合测试
设计方面的问题简单的说就是在需求的基础上,完成对三大模型的解析(面向对象分析方法——参见我的这篇文章),根据程度不同,以及迭代增量更新等开发计划的要求,详略得当,大到模块划分,小到类的属性都属于这部分的内容
然后就是喜闻乐见(bushi)的编码环节啦!其实只是软件开发中很少的一部分——如果设计得很好,各种类和变量名词以及类的关联都清清楚楚,明明白白;这确实只需要很简单的编程能力就能完成…所以“底层码农”是这么来的吗?!!不过很大程度上,设计都不可能尽善尽美,而是需要深厚的编程经验去处理。
最后测试——良好的单元测试习惯,以及交给专业的测试人员
总的来说,软件开发到这里就可以算是完成了,以及能够产生一个完整的可交付的产品了,并且可以看到——编码只是很小的一部分,软件的成功与否取决于设计和规范——没有人希望陷入功能修改的代码泥潭里——此阶段产生《概要设计说明书》、《详细设计说明书》、《模块开发说明》、《单元测试报告》《软件测试计划报告》
3、运行和维护:现在不是一次开发,成就经典的时代了
- 环境更新
- 功能更新
- 错误修复
时不时的活动,新的功能,游戏的Bug修复都是人们喜闻乐见的事情,看起来好像只是一则短短的公告,但是确实还是需要修改代码的,还是属于软件的扫尾工作…而且会持续很久!!!想想游戏的流行周期吧——产生《软件问题报告》、《软件修改报告》
二、软件开发过程模型
过程模型:为了获取高质量软件所需的一系列任务框架,规定了相应的任务步骤——大体规定了什么人在什么时候做什么事(3W)
常见的过程模型:
1、瀑布模型:可行性研究-需求分析(验证)-设计阶段(验证)-编码(单元测试)-综合测试-运行维护
想瀑布一样自上而下,难以回头,因此要求每步严格保证质量,所以需求更改困难
2、快速原型模型:主要特点就是先快速开发一个能够运行的模型,基于此模型进行需求探讨
3、增量模型:先交付一部分基础,后面逐渐扩张功能
4、螺旋模型:制订计划-风险分析-实施工程-客户评估-…(反复迭代)
5、喷泉模型(面向对象之一):无明显分界线,协同开发,相互增量修改
…
——经典的统一过程模型和敏捷过程见下一次更新~~
欢迎关注我、共勉⭐️
⭐️⭐️代码之狐⭐️⭐️
主要内容:
- 时不时更新算法题解,算法与数据结构
- 时不时分享心灵鸡汤,详见杂谈栏
- 目前主要在学Java高级内容(虚拟机、框架什么的),以及很重要的软件工程、重构和设计模式等,会将书中的知识点提炼总结分享
怎么还没人关注我😢