《构建之法》第五次作业
写一篇800字的心得体会,列出五到十个不懂的地方
我是拒绝说什么心得体会的,因为我觉得那东西要说出来总是不知从何入手,表达能力不够丰富,往往言简意赅,达不到要求。
于是我拿起目录,我想按着目录的章节来说体会,会在言简意赅的前提下,表达我的体会。
第一章 概论 ——>软件是什么?软件工程是什么?
以往对软件的认识总是停留在应用层方面,比如一个系统(图书管理系统、教务管理系统等等)、一个app,现在认为,不应该只把眼光放在应用层方面上,比如用python链接opencv算法做一个人脸识别系统。软件不仅仅是增删改查。
要实现一个好的软件一个人是搞不定的,或者说一个人想要搞好一个软件,要么这个软件规模相对较小,要么这个人花费很长的时间。实际开发过程中总是多人开发,要用到Github、svn等版本管理。于是沟通就显得尤为重要,这是为什么要做备注的一个原因。开发过程容易受个人眼光的限制,看不到软件的缺陷,这时需要测试,近几年企业流行的测试驱动开发,tdd等等。我做过一个项目,项目分为好几期,一期做完,第二期是在第二年才开工,这时间需要维护。 如果我继续这样零零散散的说下去的话,我相信看我这篇博客的助教会看不下去,所以我得说得有条理些,开发过程也是一样,于是将软件工程化的思想就出现了,软件工程就是如此,细化软件的整个周期,有规划的分而治之。
第二章 个人技术和流程 ——>开发中的测试
假设我是一个做开发的,在个人开发过程中,想借助软件测试的一些小技巧,让我开发的产品更完善。由于我很少用debug,插桩成为我最常用的,插不同的桩,根据print输出,判断代码的走向。但这有个问题,一旦代码量多了之后,插桩很浪费时间,所以debug还是得多使用。还有是单元测试,这也是开发过程中能做的。还可以写测试用例,当然不需要很规范的写,只要写出简单的例子,通过测试用例来开发。
第三章 软件工程师的成长 ——>要写什么样的软件
开发方向:菜鸟——>写出一个应用——>写出一个单核2G内存服务器每分钟接收两万次并发请求跑得动的应用——>写出一个符合企业的需求、商业价值、耗能低的应用。
第五章 团队和流程
我对书中提到的那几个模式都表示赞同,但我发现那几个模式都团队前提是每个人都要有一技之长,要求每个成员都能发挥出一定的价值,无论是助攻还是主力输出,这样的团队无论是组成“交响乐”还是“主治医师”,每个人发挥出自己的作用,团队才能凝聚。一个综合性项目的开发人员,分为前端,后台,移动端(主流的有iOS、android、微信公众号)。
“写了再改”模式是我们学生一直在用的模式。
第八章 需求分析 ——>软件做什么
我做过一个app,对json的获取并进行对象化,期间服务端的json格式改了几次,每次都要把十几个对象模型重新适配,那么一旦需求不明确,客户要求更改,那对程序猿来说,花在更改需求上面的时间比开发来的多。可见,需求的准确定位决定一个项目的走向。
第十二章 用户体验 ——>傻瓜式
我准备升win10了,为什么现在才想升级?因为前几天微软的一个讲座,微软的工作人员告诉我,升级win10对以往的软件没有任何影响,在设计win10的时候微软和各大产商联系合作,使得win10具有对很多软件的兼容性,即使升级系统也不会对以往的安装有影响,除非你的软件是骨灰级别动软件,包括jdk环境、oracle这样的数据库软件也不受影响,这一下子消除了我的担心,因为我担心升级了之后需要花大把的时间对软件进行重装,这就是用户体验的一个很好的例子 。
同样的,开发过程中会用到各种缓存、异步、并发来提高用户体验。
问题一:
一个网站如何做到高并发请求?比如每分钟接收两到三万次的并发请求。
问题二:
说到单元测试就想到junit,但junit是java的,其他软件的单元测试工具有哪些?比如iOSapp、php
问题三:老师、助教们现在在读什么书?
问题四:个人能力有限,实在看不出这本《构建之法》和其他软件工程书有何太大的区别,请老师助教能讲几点。
区别一:书中举了大量的比喻,形象地阐述问题
问题五:开发过程中会遇到技术和需求冲突的情况,比如android和iOS的产品要求界面要一致,这往往需要用一些繁琐的步骤来实现,此时根据老师和助教以往的经验,是技术妥协还是需求妥协?