• 201771010121 唐月晨 实验一 软件工程准备—初读《构建之法—现代软件工程》


    项目 内容
    班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
    软件工程课程要求 https://www.cnblogs.com/nwnu-daizh/p/12369881.html
    课程学习目标 完成课程准备工作,初读《构建之法—现代软件工程》并进行思考
    如何实现学习目标 根据发布的实验任务完成相应内容,根据所阅读的《构建之法—现代软件工程》提出一些问题并自己尝试找出答案

    实验内容

    • 调查问卷(已完成)

    • 在博客园平台注册个人博客账号和加入班级博客(已完成)

    • 注册Github账号(已完成)

    • 各位同学点击以下超级表格链接填写博客园、github账号信息(已完成)

      -超级表格

    • 构建之法与博客首秀

      • 快速浏览邹欣老师博客或《构建之法—现代软件工程》,参照参考文章的提问模板,尝试拟定3个准备从课程学习中找到答案的问题,并以写博客形式记录 下来,博客要求使用Markdown排版。

        • Q1.初次接触软件工程这门课,“软件”和“软件工程”有什么不一样的呢?

        • A1.在邹欣老师的《构建之法—现代软件工程》的p23~p24中,举了一个例子:某程序员为了方便孩子学习而写了一个简单的程序,但随着其在班级、学校的推广之后,这个简单的程序变成了一个软件。综合例子以及邹欣老师的解释,我的理解为:一个我们平常在用的app就是一个软件,从用户方面来讲,我们需要它方便上手(即用户体验),使用过程中如果遇到了问题能够被及时解决(即软件维护);从软件团队方面来讲,要开发一个app,我们先要理出它的需求分析,评估其可行性。确定好项目后,开发人员开始编写源码,将源码与各种数据结合并且使得它们可执行(即软件构建),为了增强用户体验感,我们会不断增加新功能、维护旧功能,不断地debug(即服务运营)。即:一个软件就是由许多行代码(程序)和一些该软件相关的管理和服务(软件工程)构成。

        • Q2.初读第二章后有什么收获?

        • A2.第二章的章节标题是:个人技术和流程,其下面又分了单元测试、效能分析工具、个人开发流程等内容来具体介绍本章内容。在单元测试这一节中,由于我的代码能力较弱,我从中接收到的信息有:单元测试是用来测试已经写好的功能的代码是否运行顺畅;最好边写项目代码边写单元测试代码,这样思路会比较明晰且方便调用API。(对这一节内容没有太理解,待后续学习再来增进理解)效能分析可以选择两种方法:抽样、代码注入。一般的做法是,先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析,经过效能分析,我们可以看到函数的调用次数,从而修改程序使得其复杂度降低。在个人开发流程这一小节中,我着重的看了大学生与工程师的PSP阶段数据比较。


          分析图表可以看出,身为大学生的我们往往还遨游在各种算法各种语言中,而在工作中,需要对项目的分析、设计会更加注重。我想,这也许是因为代码量积累的多了,如果能做好需求分析、明确每一部分的设计,代码的编写工作也不会那么令人头疼了吧?

        • Q3.关于“结对编程”的理解?

        • A3.在大二的《面向对象程序设计》课程中,我们曾接触过一次“结对编程”,而在读《构建之法》这本书时,我才发现之前对于“结对编程”的认识有误。原本我认为的“结对”是指两个人成为一个小组,每个人负责一个模块,最后再进行综合。但并不是这样的,“结对”是指两个人坐在一台显示器面前,使用同一个键盘,同一个鼠标一起工作,一起分析,一起设计,一起写测试用例,一起编码,一起写文档等等。邹欣老师的这本书将结对编程的二人分别比作领航员和驾驶员,但需要注意的是:领航员和驾驶员的身份是可以互换的。使用这种编程方式能够使编码效率更高,对双方都有所收益,于代码而言,由于有两双眼睛盯着同一份代码,代码的错误率越来越低,对于之后的复审也会减轻很多负担。

          同时,对于“结对”的对象我也产生了疑问:强强搭配的模式和强弱结合的模式哪种会更好一点呢?如果是强强搭配的模式,当两人遇到一个问题有不同见解的时候,各执己见,这样好像是不太合适的;如果是强弱结合的模式,问题的思路基本会按强的这一方来,那么弱的这一方虽然能有所收获,但他的价值感是不是就会体现的比较少呢?这两者之间想必是会有一个平衡的吧,不知道会怎么来界定呢?

    实验总结

    此次实验主要做了一些学习《软件工程》这门课所需要的准备工作。其中最大的收获是阅读了邹欣老师的《构建之法—现代软件工程》以及学习运用Markdown排版。通过此次实验,我对本门课程又有了新一步的认识。《构建之法—现代软件工程》作为我们的教材,没有很多晦涩难懂的专业名词或者代码片段,时不时的会举个情景对话的例子来帮助我们理解,比如书中4.6.2 《如何正确地给予反馈》,以三明治的构造将三层面包分别作为:行为和后果、习惯和动机、本质和固有属性,再以生活中的看电影以及代码规范分别举例帮助我们理解,不仅教了我们在软件工程中如何给予反馈,也顺带提点了我们在生活中为人处事的小方法,果真生活处处是学习。希望能在这一学期课程的学习中收获到更多的知识!

    最后,以最近在阅读这本书时印象很深的几句话作为结尾:

    哲学家的宗旨是:我思,故我在。

    科学家的宗旨是:我发现,故我在。

    工程师的宗旨是:我构建,故我在。

    -- 引用自《构建之法—现代软件工程》

    作业参考文献:

    [1]邹欣. 构建之法—现代软件工程[M].北京:人民邮电出版社,2017

  • 相关阅读:
    springboot整合swagger2
    关于lombok
    RSA加密和AES加密
    守护进程监控tomcat并自启
    java按照目录结构压缩文件夹以及文件夹内内容
    wxx
    附加作业
    软工作业3
    软工作业2
    软工作业一 201621123070陈伟杰
  • 原文地址:https://www.cnblogs.com/tangyuechen/p/12392515.html
Copyright © 2020-2023  润新知