几乎所有学计算机的人,都是先学的程序设计,学各种各样的语言,c,c++,c#,java,fortran,python等等,掌握这些内容后基本就能进行程序开发了,也可以实现我们想要实现的相关功能。所以很少有人再去思考软件设计是怎么回事。

工作以来,开始真正的接触工程,开始真正进行软件开发,长久以来都在思考软件开发的一些问题,今日开始将想法整理,一是借此机会捋一捋自己的思路,二是为自己以后的软件开发做一些经验性的总结。自己仅有过两次十万级以上代码软件开发的经历和一次工程建设经历,虽都深入参与其中,但所写内容难免粗浅,今日分享,更多的是想接受各位看官的批评指正。

一、软件开发的特征

程序开发是软件开发的具体实现,两者有着包含与被包含的枝叶关系。相比较而言,软件开发有着复杂性的特征,具体表现如下:

代码量大。在各种封装库如此丰富的当下,进行一个一般的程序开发,千行以内的代码几乎就能完成,我清楚地记着自己的硕士毕业论文大概也就是8500行的代码量。但软件开发往往都在万行代码之上,十万行也是常有的事,据了解,windows7系统的代码量约有5千万行。
需要团队合作。没有任何一个人可以实现如此多的代码书写,往往需要多个人或者多个组之间合作开发完成。
需要工序化管理。有合作的地方就有管理,如果能做到一加一大于一,就已经是一个合格的管理方式了,如果能做到一加一等于二,那就能称得上优秀。
面向用户需求。这是软件开发最重要的特征,是软件开发的根基与命脉。软件的开发是为了让用户使用,它归根到底是一种产品,满足用户的需求才能在市场生存,也才能有其经济价值。而我们平时所进行的程序开发,则更多的是为了满足自己的需求。

二、软件的内容

从产品的角度来讲,软件包含程序代码,文档,数据结构和数据三大部分。程序代码、数据结构和数据大家了解的较多,现在单说一下文档。

文档通常包含开发文档,产品文档和管理文档三类。

开发文档的主要作用是描述开发过程,含需求分析文档、软件设计文档、软件测试文档等。

产品文档是在进行产品交付时提供给用户的文档,目的是为了让用户更好地了解和使用产品,含产品手册、用户指南、培训手册以及广告宣传页等。

管理文档是我有一次去机场接一位上级行政领导在路上聊天时他提供给我的思路,顿时感觉茅塞顿开。管理文档的基础要素(也可以理解为是约束条件)是人员、时间、环境、资金四大方面,作用是用来记录项目管理的过程信息,含开发计划,开发阶段性进度,职责划分,任务安排等。其还有另外一个好处,一般来说,一个软件的开发是一个长周期的过程,项目组的人员难免有来回的变动,使用好管理文档,就能将人员变动对开发进度的影响降到最低,新人可以在管理文档上迅速了解到在干什么,已经干了什么,自己需要干什么等信息,尽可能地做到即插即用。

三、软件开发过程

软件开发的基本流程是:

需求分析 → 软件设计 → 编码实现 → 软件测试 → 软件维护

这只是一个基本流程,很少有人一次性将需求分析调查得非常充分,也很少有人能将软件一次性设计得非常合理,软件开发的过程是一个循环往复的过程,需要不停地在这五步之间进行迭代更新,直至它不再被使用。

软件开发(一)——软件开发的基础思考相关推荐

  1. 【web前端特效源码】使用 HTMLCSSJavaScript实现各种跳跃浮动慢跑翻转旋转坠落的魔幻文字动画效果~太上头了~/动画效果|前端开发|IT软件开发基础入门教程|网页制作|网站开发定制

    b站视频演示效果: [web前端特效源码]使用 HTML&CSS&JavaScript实现各种跳跃浮动慢跑翻转旋转坠落的魔幻文字动画效果~太上头了~/动画效果|前端开发|IT软件开 效 ...

  2. 安卓手机应用软件开发 手机软件开发基础

    随着安卓手机市场的不断扩大,再加上3G的推出对整个行业的巨大推动作用.于此同时也引爆了安卓手机应用软件开发行业的火热发展.越来越多的应届大学生开始关注安卓手机软件开发行业,因为安卓工程师展现出良好的发 ...

  3. 基于软件开发对嵌入式开发的思考

    由于本人专业方向是计算机体系结构方向的,平时做嵌入式方面的实验以及项目较多,这个学期又学习了软件工程的课程,因此想借此机会,总结下在软件工程上面学习到的知识,并看看是否有什么能够借鉴到嵌入式方向的开发 ...

  4. 学软件开发都要学哪些基础内容?

    不知道从什么时候开始,小程序突然爆火了起来.当然这不是没有原因的,一方面是由于小程序依托着微信庞大的用户群体,另一方面也是由于它自身即用即走的便利性. 目前正处于小程序开发的红利期,一时之间国内的企业 ...

  5. 软件项目开发 学校自行开发_自行开发游戏

    软件项目开发 学校自行开发 Making a game is not easy. Quite the contrary; it's an incredibly difficult and daunti ...

  6. 基于软件分析的智能化开发新型服务与技术

    摘要:从云服务厂商的角度来给大家介绍一下,当前业界围绕该领域要做哪些事情. 本文分享自华为云社区<基于软件分析的智能化开发新型服务与技术>,作者:敏捷的小智 . 本文以技术文章的方式回顾梁 ...

  7. window直接运行不需要环境的软件是什么语言开发的_C语言为何不会过时?你需要掌握多少种语言?_C 语言...

    01为什么C语言不会过时 评价任何一门编程语言,都是招人骂的.永远是这样.就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过,双方一定是同时在心里出现了两个字:"s b!"这个在 ...

  8. 软件开发、软件设计培训笔记

    一.代码质量的提高培训笔记(2013.11.29): 部分内容摘自网络: 1.      struct:注意成员排列顺序. 2.      #pragma pack(1) :指定按1字节对齐. 3.  ...

  9. B站硬核up主稚晖君:对于有志学习嵌入式开发的软件工程师,我有这些建议!...

    稚晖君,何许人也? 本硕就读于电子科技大学 华为AI架构师 热爱硬件开发 B站硬核UP主 "栈溢出"工程师 加入"华为天才少年计划" 或许当你看到这一堆Titl ...

最新文章

  1. Adobe的学者约翰—沃洛克博士
  2. python 知识点记录二
  3. Java集合框架:LinkedList
  4. 前端学习(2873):Vue路由权限『前后端全解析』4递归组件
  5. JavaScript 监听手机端的touch滑动事件(滑动手势)
  6. Android集成支付宝支付
  7. 发力金融市场,中兴通讯有何硬实力?
  8. bi导入数据失败 power_主机数据库平台迁移 6 个典型问题
  9. 巧用gmail转发邮件
  10. [Java]一步一步学 Web
  11. MySQL Online DDL 方案剖析
  12. ctype.h(c标准库)
  13. aix-裸设备文件大小查看
  14. 无人驾驶的分级以及产品化后会带来的改善
  15. OSChina 周一乱弹 —— 达叔撸猫图还是满满的少女心
  16. Symbian开发——Symbian开发知识(转)
  17. 没有服务器认证消息,关于《跑跑卡丁车》没有服务器认证消息的问题,怎么解决?...
  18. Pixelmator Pro for Mac(图像编辑软件)
  19. 使用上古神器帮姐姐完成寸照自动排版/打印
  20. HTML 锁定表格首行首列、拖拽表格列宽

热门文章

  1. MySQL/MariaDB中如何支持全部的Unicodesql数据库及配置环境变量的图文教程
  2. 21.1 三目运算符
  3. 『2021语言与智能技术竞赛』- 关系抽取任务基线系统
  4. 通过xshell从Linux服务器下载文件夹
  5. GitHub下载指定文件夹的方法(简单快捷)
  6. 【19调剂】关于中国传媒大学2019年部分专业接收调剂生的通知
  7. srilm安装,ngram-count使用
  8. 季胺化聚苯乙烯微球载纳米铁/镍降解氯代硝基苯/载金纳米粒子聚苯乙烯/聚丙烯酸微球的探究
  9. 醛基化改性交联聚苯乙烯微球载金属卟啉/交联聚苯乙烯微球载吡啶基卟啉的研究
  10. 换不锈钢脸盆的ipad充当win10拓展屏 超简单!!!!(spacedesk)