软件工程作业1
Task1:注册个人博客账号
https://www.cnblogs.com/helloLV/
Task2:注册码云账号
https://gitee.com/hellolv/SoftwareEngineering
Task3:提出问题
Task3:提出问题
快速通读教材《构建之法》,并参照提问模板,提出5个问题。
如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html ,以及 在互联网时代如何提问题。 还有这些要点:
在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文
列出一些事例或资料,支持你的提问。
说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?
问题1.
4.5.2为什么要结对编程,且程序各方面的质量取决于一对程序员中各方面水平较高的那一位。
在进行结对编程的过程中,毋庸置疑的是,在两个结对编程的过程中,的确能够让程序中的错误变得更少一些,程序的质量也能够得到提升,那么在编写初始代码的途中,是否会出现,能力较高的那位在掌控键盘,能力较差的那位只能做一些简单的工作,是否会造成两个人能力的差距慢慢被拉开,以至于好的更好,差的不变这种情况?怎么在编写代码过程中有一种较好的工作分配,能让能力较好的那位对一些基础能力更加扎实,能力较差的那位能力得到提高呢?
问题2.
在读到书籍的第二章中提到了单元测试这一内容,其中提到单元测试应该覆盖所有代码的路径。
对于覆盖率这一方面时,作者有阐述对于“覆盖率”有几个层次的理解,
进一步说,“覆盖率”有下面几个层次:
1.函数的覆盖,这个模块的每一个函数都覆盖了么?
2.语句的覆盖,这个模块的每一个语句都覆盖了么?
3.分支的覆盖,这个模块的每一个条件分支都覆盖了么?
4.条件的覆盖,这个模块的每一个布尔表达式的TURE|FALSE都覆盖了么
对此,在我们实际的软件工程的开发中,是否真的需要覆盖到所有的代码路径吗?假设工程量很大的话,在单元测试完善的工程中是否对于一些已经正确的代码还需要继续覆盖吗?是否会造成工作的重复性,造成一些不必要的时间和精力的投入呢?对于一些非常简单的代码也需要进行单元测试吗?可以通过一些简单的途径将这些简单的代码提取出来避免测试,来加快测试的效率呢?
问题3.
12.1.3 软件服务始终都要记住用户的选择
在设计软件界面时,我们的设计师经常会画新功能的UI设计图,来征求大家的意见。我注意到大部分设计都假设用户是第一次使用产品,所以没有任何积累的文件、照片、处理过的图像、曾经做过的选择等数据。我同意第一印象很重要,但是当用户已经是第N次使用你的产品时,你的UI能否为这些用户提供方便呢?
对此,软件服务是否应该斟酌自己的软件实用性,软件应该记住根据自己的用户进行调整,这个产品是越来越好用,还是越来越难用,如果用户用了N次之后,还能够做重大调整吗,还是要习惯之前的一贯的风格来迎合用户的口味?还是要作出创新来让用户眼前一亮的大胆操作?
问题4.
P324 创新者都是一马当先。
所以说创新者能够在历史的车辙中一直一马当先的吗?难道说只有某个领域的创新人才能够成为某个领域的领军人吗?
其实不然,大部分的创新者都不是先行者。如Goole在成为全球知名搜索软件时,已经有很多搜索软件已经出现了,同样的,早在这个世纪初期称霸一时的诺基亚和摩托罗拉也已经逐渐在一些新兴产业的移动设备公司所取代,所以我觉得只有“不断创新”才能够一马当先的。
问题5.
12.1.6 用户的质量和体验 好的用户体验当然是所有人都想要的,如果它和产品的质量有冲突,怎么办?牺牲质量去追求用户体验么,用户能接受吗?
在文中作者举了关于核磁共振机这一例子进行说明,的确,每个软件公司都会遇到上述所说的情况,当在开发和更新软件时,优化质量和用户体验造成了冲突,书中的例子仅仅是个别案例,怎么样权衡这两者的利与弊呢?应该怎么样做才能使效果最大化呢?用什么法则或方法尽可能让软件更加出色呢?
Task4:Git基本操作练习
完成以下Git基本操作
- 将https://gitee.com/happyfaye/SoftwareEngineering仓库fork到自己的账号下
2.将远程仓库clone至本地仓库
3.在本地仓库添加学号姓名.txt(例如:201621123000happy.txt),并提交至远程仓库
3.在本地修改该文本内容并再次提交
参考:实验楼练习:https://www.shiyanlou.com/courses/4