现代软件工程—构建之法》第一章 中出现的计算机专业术语
软件程序软件工程二叉树遍历算法数据结构算法应用软件软件服务源程序软件架构软件设计与实现依赖关系编译参数链接参数构建源代码管理配置管理质量保证软件测试需求分析程序理解软件维护服务运营软件的生命周期软件项目的管理用户体验国际化和本地化API用户界面设计计算理论信息和编码理论算法和数据结构形式化方法程序设计语言计算机体系结构并行计算和分布式系统实时系统和嵌入式系统操作系统计算机网络科学计算安全和密码学人工智能模式识别机器学习数据挖掘信息提取计算机图形学计算机视觉多媒体数据库和大规模数据处理万维网自然语言处理和语言人机交互冒烟测试我提出的问题
我看了
3.我上班后,发现以前同事写的程序真是垃圾,根本看不懂,无法维护。我要推翻重写!后来一个老员工笑嘻嘻地告诉我,我们现在看到的程序,就是去年的新员工愤怒地推翻重写之后的结果,大家反映 还没有以前的版本好用呢。
我对这段话所表达的意思有异议,因为这个新员工可能因为个人习惯不好或者编程能力不够,或者时间不足导致等出现了各种各样的问题,可这不代表未来的人重写的结果是怎么样,这个老员工很明显就是在警告这个新人,这完全是先入为主的想法,而且,我以前看过别人公司的项目,也不知道是什么时候开始写的了,里面的函数、类没有注释,并且结构混乱,有一些内容已经没有必要存在了,可是对于新人来说却无法做处理,所以这些老项目很可能真的有这些问题。第二,最后这句“还没有以前的版本好用呢” 意思是说新员工新完成的项目需要一步到位,虽然以前的很难维护,可它是经过好几代的修复bug,而新建的项目自然会有一些问题,难道以前的项目刚做出来时大家就没有怨言吗?满足所有人的要求,那可真是太难了。
然后根据我的经验,面对像这种从开始或者经过很多次修改导致项目更难维护,此时应该做软件重构,而不是推翻一切重写,因为那样太浪费精力和时间。
我对源代码管理不理解,书中的内容是
有些时候,我们要为了每个需求写一些特殊功能,不久后又要把这些功能在合并会主要版本。有些程序要配置不同的界面,运行在中文、英文或者其他语言的操作系统上;有些程序还有32位版本、64位版本等。
在有些时候,我们要为了每个需求写一些特殊功能,不久后又要把这些功能在合并会主要版本。
这里我还是理解的,这个我在使用GitHub 或者git 时就会知道有时候会创建一些分支,当这些分支完成时便可以合并到主分支中。但是后面的配置不同的界面
不涉及到分支的问题,还有后面的,一般都是通过xml
或者conf
等的配置文件完成这些设置,这只是一种配置程序兼容性时所使用的方法,无法理解这和源代码管理有什么关系。然后我通过搜索
源代码管理 定义
找不到与之相关的信息,和源代码管理相关的也都是一些git 等软件相关的。不过我所不理解的问题倒是和配置管理
有关。
我对职业道德规范
不理解,因为我不知道这个道德规范的界限在哪里,何为道德,何为不道德。如果一个软件侵犯了用户的利益,比如个人隐私泄漏造成财产损失、名誉损失,这里完全可以通过法律诉讼来解决。以书中举的例子,限制用户安装其他软件,制作软件的公司应该也可以有自己的选择吧,如果说这种行为让用户很不爽,或者说浪费用户时间,很多软件也在未经过用户的同意的情况下展示广告,难道这也是不道德的吗?
我对第9页的软件工程的难题中的第二个复杂性
的“ 而软件工程师的肉眼通常一次只能看到30-80行源代码(相当于显示器的一屏)“的表述不太同意,虽然只能看到30-80行,但是现代IDE 提供hierarchy (层级浏览),或者文件大纲,再加上工程师的记忆力,而且只要记住关键点,这些方法都能够让工程师对自己所操作的部分有更高的把握。
我对第9页的软件工程的难题中的第五个“非连续性” 的解释有异议,现代软件需要拥有的特性就是提供给用户反馈,不管用户做了什么,需要提醒用户当前的操作是无效的,或者不支持当前操作,不能什么都不做,比如按下按钮,需要通过按钮的变化告诉用户你的操作确认了,等待完成就好了,并且这个操作也应该是立即的,如果是个耗时操作那就应该是线程了。如果一个软件进行了操作,一个软件,一个系统,却没有任何输出,包括视觉输出,那用户是很不乐意使用这个软件的。
在第14页引用的费曼的话,
你可以知道一种鸟的名字在全世界各种语言怎么说,但是说完之后,你还是不了解这个鸟。所以我们要观察这个鸟的行动--这才是最重要的。
这句话好像就是说,我饿了,喝了一杯水,还是饿一样。
分类软件
浏览器ChromeChrome CanaryFirefoxQQ 浏览器工具软件AutomateBlockMacro DroidMeasureLoopMi Drop学习EF Hellokeke墨墨背单词外研随身学阅读通讯 社交QQTim酷安购物京东手机天猫小米商城转转我选择的软件
1. 这些软件的开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚钱用户的现金么?还是别的?
王者荣耀
游戏 并没有谁说服我,最早接触的MOBA 的是英雄联盟,然后身边的同学开始玩王者荣耀,自己慢慢也开始玩了。目标是盈利,目标是赚取用户的现金,并不展示广告。Macro Droid
手机应用,没有人说服,自己想要找类似的软件而已。目标应该是盈利,并不展示广告,不过免费版的功能受到限制,想要破除限制,需要购买。draw.io
web 软件 一个在线作图的软件,不盈利,没有广告
2. 这些软件是如何到你手里的(邮购,下载,互相拷贝....)?你当时上几年级?你对这个软件的感觉如何?
王者荣耀
下载的,在大一的时候,挺好的,在这上面也花费了挺长的时间Macro Droid
手机应用 下载,大二,当时还不太会用,后面一段时间都没有再继续使用,等到大三时又重新下载了这个软件。draw.io
web 软件,在手机上的浏览器使用的话体验很不好,如果是电脑的话,挺好的,没有广告,功能挺全的,当时是大二
3. 这些软件是如何处理bug 的?又是如何更新版本的?
王者荣耀
用户发现bug 应该会告诉腾讯,然后再下个版本中就会更新了吧。Macro Droid
上架在Google Play 上,用户可以通过评论的方式告诉开发者,然后再下个版本中更新。draw.io
因为不需要下载,直接在网络上使用,所以用户可能不知道发生了更新
4. 同一类型的软件之间是如何竞争的?
王者荣耀
虽然MOBA 类的手机游戏有很多,但腾讯腾讯本来就有大用的用户,同时作为MOBA 游戏,游戏模型构建的更好,作为在线游戏严格管理作弊问题也会让这款游戏有竞争力。MacroDroid
虽然有类似的软件,但是还没有说ui,操作有这款软件好的。因为这本来就是一个小众软件,不太可能会有很大的市场,用户为此花的钱也不会很多。draw.io
作为一个免费软件,谈不上与谁竞争,倒是很到找到类似的在线软件。
如果觉得《现代软件工程—构建之法》第一章 中出现的计算机专业术语》对你有帮助,请点赞、收藏,并留下你的观点哦!