MyException - 我的异常网
当前位置:我的异常网» 综合 » 老师的有关问题和《构建之法》笔记

老师的有关问题和《构建之法》笔记

www.MyException.Cn  网友分享于:2013-09-19  浏览:0次
老师的问题和《构建之法》笔记

谈构建之法之前,先回答老师的几个问题~

  1.我本科专业是物联网工程,四年间的学习内容一直处于软硬件间摇摆,一度使我怀疑人生。这种学习方式最大的好处是可以从底层理解整个计算机的运作,循序渐进,而最大的缺点是,体系太过于庞大,低效,冗杂。当我到了大三的时候,我依然不能够独立编写一些软件,也不能处理有意义的硬件问题,所以当务之急便是做出取舍,否则我的大学可能就止步于C语言和单片机了。几经周折,最后还是选定了偏向软件的方向,原因众多,硬件的学习难度和深度让我苦不堪言,对数模电,通信原理,高频电路亦有较高要求,而周边同学也大多偏软,大环境下,软件是占有优势的,所以最终还是选择了偏向软件的计算机专业读研。自认为本人资质普通,但对生活兴趣高涨,有生之年如若再有机会,还是愿意将丢掉的硬件知识再次捡起,毕竟当年学的很痛苦...

  2.在做出一个大方向的转折之后(选择偏向软件方面),问题依然重重,一个具体的专业是很重要的。计算机发展史虽短,但也体系庞大,门类众多。兴趣任然是生活的导向,本科实习期间有过一个Unity的小的项目,让我对图像,游戏方面有兴趣,最后读研也是选择了图形图像方面。至于擅不擅长计算机领域,怎么说呢,我学了四年物联网,也算是计算机相关吧,加上平日的一些积累,相比于其他的技能,应该是蛮擅长的吧...

  3.对一名合格的计算机专业的硕士研究生,我们的培养方案里是这样说的:

关于差距,我自己的看法是,在专业知识方面不够深入,目前还不具备独立从事计算机应用工程的开发能力,对专业前沿的信息不够清楚,外语能力也需提高。相信通过三年的学习情况会大为改善。

  4.初来不久,同学们卧虎藏龙,我对他们还是不够十分的了解。只能谈谈我的自以为是,我本科期间我还算兴趣广泛,学习过C/C++,写过几个小的项目,用Unity做过简陋的游戏,了解一点C#,写过静态网页HTML/css,了解一点js,但没有用过,毕设开发一个APP,所以懂点Java和Android,用Python写过内涵网的爬虫,看过鸟哥的Linux私房菜,能简单操作Linux系统,能在Linux在进行简单的网络编程,和多线程/进程编程。若日后能用到这技能,那可能也是我的一点小小优势,然而劣势是,我会的都不太深入,与有深入学习的同学相比,我可能还没有入门。。。

  5.三年规划:学习所需课程;完成一些项目,延伸学习项目中的一些技术;多读一些前沿论文,发表论文,顺利毕业;找个实习,毕业后找到个回报好点的工作。。。

 

 

以上信息纯手打(图片除外),真实可靠,人艰不拆,不喜勿喷,谢谢!

 

 

《构建之法》笔记

  诚实守信是科学严谨和求真务实,这书我没全部看完。

  从简单的编写一段代码,到一个软件工程,隔着一本《构建之法》。软件工程的目标是创建“足够好”的软件,在开发流程中又有5点特别的难题:复杂性,不可见性,易变性,服从性,非连续性。

    复杂性:现代软件的规模都非常巨大,动辄超百万行代码,上万个文件,用以满足大规模用户的不同的复杂的要求和良好的用户体验。软件的各个模块之间有各种显性或隐性的依赖关系,随着系统成长和模块的增多,这些关系的数量往往以几何级数的速度增长,而理解这些复杂性的人却没有太大变化。软件团队的成员每天都在修改各种源码,在维护软件修改过程中维持和提高质量是一个很大的挑战,需要高效的源码管理和软件测试。

    不可见性:软件以机器码的形式在计算机上运行,还可能在多核上运行,工程师是根本无法看到自己的源码是如何被执行的,一旦出现错误,只能看到出错的一瞬间留下的蛛丝马迹(错误代号,目标代码的大致位置,错误信息等),几乎无法完整重现程序的错误。

    易变性:软件的更新迭代速度也在随着用户需要快速改变而进行,同事软件还要适应新的硬件基础,正确的修改软件也十分的困难。

    服从性:软件并不独立,它必须服从于系统,硬件,用户甚至行业要求。

    非连续性:人们比较容易接受连续性系统,增加输入,就能看到相应的输出增加。但要保持这样的特性越来越困难,大多时候,输入上很小的变化,就会引起输出上极大的变化。

  在个人开发中,必须要遵循一定的流程来管理开发活动,这也是软件工程师在软件生命周期所做的工作流程。软件是由各种模块组成的,各个模块之间需要定义尽量明确,模块内部的改变不会影响其他的模块。单元测试是这些模块的质量稳定的,量化的保证。单元测试是指对软件中最小的可测试单元进行测试和检查,在最基本的功能上验证程序的正确性。好的单元测试标准为:由程序作者来编写测试代码;测试过后,机器状态保持不变;测试过程要快;测试结果为一致的,可重复的;保持独立性;测试覆盖所有代码路径。在单元测试的基础上,就能够建立这一模块的回归测试。当模块在构建一个新的功能时,有时会出现从稳定状态到不正常工作的“退步”,在一个模块功能完善的同时,与此的测试用例也在完善。而一个模块的单元测试便是这个模块最初的基准线(Baseline)。例如模块A的123测试用例通过了,打在新的版本中,改测试用例失败了,这便是一个“退步”,工程师们应该在新版本上测试所有已通过用例,验证是否“退步”。这个过程便是回归测试。然后便是软件的效能分析,以使自己的程序更加的高效。在效能分析中,通常采用抽样和代码注入来检测和分析代码在运行中的各项参数(运行时间,运行次数,内存开销等),对代码进行优化。
  在多人合作中,代码的规范变得很重要,在开发的初期,便要代码风格,设计规范做出详细讨论,最后还需代码复审来增强程序的鲁棒性。在开发流程中我推荐也是普遍采用的敏捷流程,敏捷流程的开发原则是:

    尽早持续的交付有价值的软件满足客户需求

    欢迎需求变化,以此调高竞争力

    经常发布可用的软件

    业务人员和开发人员共同工作

    项目核心为有进取心的人

    面对面交流

  步骤为:找出产品的当下所需,冲刺所需解决的问题,然后冲刺,最后得出软件的一个增量版本。

  一款真正的软件,要经历需求分析,确定项目经理,确定典型用户和场景,软件设计与实现,用户体验设计,然后通过软件测试进行质量保证,直到稳定然后发布。这一整套的流程当需依据确定的项目来进行设计和调整。而这些思路正是《构建之法》教给我们的。

文章评论

写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
每天工作4小时的程序员
每天工作4小时的程序员
代码女神横空出世
代码女神横空出世
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
旅行,写作,编程
旅行,写作,编程
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
我的丈夫是个程序员
我的丈夫是个程序员
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
如何成为一名黑客
如何成为一名黑客
程序员应该关注的一些事儿
程序员应该关注的一些事儿
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
编程语言是女人
编程语言是女人
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
 程序员的样子
程序员的样子
为什么程序员都是夜猫子
为什么程序员都是夜猫子
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
10个调试和排错的小建议
10个调试和排错的小建议
鲜为人知的编程真相
鲜为人知的编程真相
程序员都该阅读的书
程序员都该阅读的书
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
Java程序员必看电影
Java程序员必看电影
总结2014中国互联网十大段子
总结2014中国互联网十大段子
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
一个程序员的时间管理
一个程序员的时间管理
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员和编码员之间的区别
程序员和编码员之间的区别
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员必看的十大电影
程序员必看的十大电影
程序员的鄙视链
程序员的鄙视链
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
老程序员的下场
老程序员的下场
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
我是如何打败拖延症的
我是如何打败拖延症的
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
那些争议最大的编程观点
那些争议最大的编程观点
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有