音乐在线制作网站,网站开发与程序开发,厦门网站制作系统,西安可以做网站的前言
本篇文章适合于以下同学阅读
接触编程时间不长的初学者#xff1b;经常需要编程#xff0c;但是对工程的概念相对模糊的同学。
初步认识工程
工程的概念大家或多或少都有接触过。比如在开发环境#xff08;如Qt Creator#xff09;里编写一个软件#xff0c;我们…前言
本篇文章适合于以下同学阅读
接触编程时间不长的初学者经常需要编程但是对工程的概念相对模糊的同学。
初步认识工程
工程的概念大家或多或少都有接触过。比如在开发环境如Qt Creator里编写一个软件我们首先需要新建一个“Project”中文翻译通常叫做项目或者工程。一个项目中包含了以下内容
项目配置用于告诉开发环境如何为你工作项目代码项目代码是开发者编写的用于实现你的编程目标比如实现一个播放器、实现一个游戏等项目其他资源如图片、文本等数据资源。
可以看到**项目是实现一个目标所需要的信息、资源、工具、步骤的集合。**换言之把实现一个目标所需要的资源有机的结合起来就变成了项目。
在脑海中树立项目的概念是很有用的。项目能够让你更加有条理地、高效地管理你正在做的事情让你能够更加专注于和目标相关的事物而不是把精力放在无关紧要的东西上。
但是上述的项目/工程仅仅是软件开发过程中的一个狭义的概念。在实际的软件开发行业中也就是在公司、团队在做产品开发的实际生产实践中需要将上述的“Project”即项目/工程的概念作推广。
概念推广
每个人都是初学者过来的记得在笔者本人初学编程的几年内总以为软件开发就只是写代码而已。随着参与了一个又一个实际的软件项目笔者才明白软件开发绝不仅仅是闷头写代码而已。
也许你觉得编程做软件不就是写代码吗我一直都是这样做的啊代码也能写出来也能运行很好。之所以产生这样的认知是因为你没有接触到相关的实际问题。
例如一个总价50万的软件总代码行数5万行如果交给你做项目交付时间为三个月软件的需求由客户来提需求有一定的变动你有多少把握去接判断有多少把握当然不是直接把代码写出来再评估评估和分析的工作要在编码之前做好。例如至少需要评估以下方面
需求变化范围需求绝大多数情况下是会变的就像是每个App每年都在更新。要和客户确认需求的变化范围保证需求可控考虑不可控因素。在后续的开发编码中要对不确定因素做好软件架构上的冗余设计。技术难度项目涉及到哪些技术有哪些解决不了的问题哪些难点大概需要花多长时间技术选型同一个业务可能有多个技术方案选一个综合考虑最优的方案软件的结构设计代码在5万行的项目对于一个人来说是一个不小的项目了。可能你平时写万行以内的小工具、小demo不是很费力完全用不上精心考量设计模式和架构。但是随着代码行数的增多代码的维护越来越难。如果软件没有一个章法、结构可寻你的代码将逐渐失控。最典型的例子是在你写一个新的功能时需要在已有的代码中添加、修改或删除代码。但是因为代码量多代码耦合性强导致你每改一个地方都有可能破坏已有功能引入bug导致软件bug横行最终项目失败软件测试如何做以及需要多少工作量软件部署、维护如何做以及需要多少工作量
如上所述软件从开始到结束除了编写代码还有很多步骤需要完成而且每个步骤都需要产出相关的文档、资料作为后续编码人员进行编码的依据。现实中软件公司的软件生产流程和上述过程类似。之所以说类似是因为实际上并不是所有公司、团队都会严格遵循以上步骤。其中重要的原因是成本问题步骤增多成本自然会上升。对于规模较小的公司、团队可能流程更加精简规模较大的公司因为出错成本高会更加注重软件工程的实施提高软件质量。
我们一定要摒弃“做软件只是写代码”的陈旧观念写代码是软件过程中的重要部分但并非全部。读者可能会觉得上述内容可能用不到这是因为暂时你还没有遇到实际的问题。在日后的工作中你将会逐渐地遇到这些问题。在遇到这些问题之前最好先建立起相关概念做好心理准备并随着时间的推移慢慢消化。
软件行业发展已有将近一个世纪软件开发过程中什么情况下会遇到什么问题以及这些问题如何解决相关的研究已经比较成熟。这一套成熟的理论叫做“软件工程”。这个“工程”不再是“Project”而是“Engineering”。
如果你想要进一步了解的话可以查阅“软件工程”相关的书籍。这里推荐一本《软件设计师教程第五版》。此书电子版百度云地址链接: https://pan.baidu.com/s/1s9rQjIIAxFmccCf7fZUvOA提取码: htcq。也可以关注公众号“Qt未来工程师”后台回复1获取下载地址。此书中有软件工程的相关章节。大家下载下来以后可以在闲暇之余阅读。
Project和Enginnering的异同点
相同点
都是为了实现某个目标而创建的信息、资源、步骤的集合。
不同点
Project更倾向于代码管理而Engineering倾向于整个软件从确定软件需要实现什么功能开始到软件投入使用结束整个过程中所有需要做的事情。
了解工程的概念对个人的作用
本文读者中可能有一些尚未参与到工作中的同学对软件开发的整体过程可能没有完整的接触。了解软件工程可以帮助你了解最真实的软件开发流程为将来的工作作准备。
同时软件工程中包含的一系列设计步骤和方法是提高软件质量的重要保证。对个人来说学会参与到软件工程为主导的开发过程中是提高自身软实力的重要机会能让自己的编程生涯更加顺利减少不必要的麻烦避免因质量、进度问题产生严重后果。
结语
笔者根据自己多年的编程和工作经验简述了工程相关的概念并没有作深入介绍。希望能够引起读者对工程的注意帮助读者避开自己曾经走过的弯路扩充知识面提高自身实力。