201771010127-王艳 实验一 软件工程准备-阅读《现代软件工程-构建之法》学习总结
项目 | 内容 |
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
这个作业要求链接 | <https://www.cnblogs.com/nwnu-daizh/p/12369881.html> |
我的课程学习目标 | 对软件工程这门课程有更进一步的认识;学会精准的提问 |
这个作业在哪些方面帮助我实现学习目标 | 问题的提问技巧方面 |
作业正文 |
(1)学习博客园软件开发者学习社区使用技巧和经验; (2)了解Github的基本操作 |
参考文献 | 邹欣. 构建之法:现代软件工程[M]. 人民邮电出版社, 2014. |
实验内容:
任务1:调查问卷
在以下网址提交课程调查问卷:https://www.wjx.cn/jq/60177777.aspx
完成情况:课堂已提交问卷
任务2:在博客园平台注册个人博客账号和加入班级博客
用途:师生交流、同学交流、发布作业、学习先进技术与工程经验
完成情况:
任务3:注册Github账号
用途:管理项目,记录(源码、文档,历次版本变更,bug发现与修复)等信息。
GitHub是一个面向开源及私有软件项目的托管平台,只支持git 作为唯一的版本库格式进行托管。
Github基础知识:
(1)仓库(Repository):仓库即项目,在GitHub上开源一个项目,必须要新建一个Repository。如果有多个开源项目,就有多个Repositories。
(2)收藏(Star):收藏项目,方便下次查看。
(3)复制克隆项目(Fork):复制之后不会影响原有项目的代码与结构。
(4)发起请求(Pull Request)):如果别人在你的项目基础之上做了一些改进,并且觉得改得很不错,应该要把这些改进让更多的人受益。于是,他就想把自己的改进合并进原有项目之中,这时他就可以发起一个Pull Request。而原有项目创建人也就是你,可以收到这个请求,这个时候你可能会仔细review他的代码,并且测试后觉得OK,就可以接受他的Pull Request,之后他做的改进就可以融入到原有项目之中了。
(5)关注(Watch):类似于微博中的关注,如果你Watch了某个项目,那么以后只要这个项目有任何更新,你都会第一时间收到关于这个项目的通知提醒。
(6)事务卡片(issue):你开源了一个项目,别人发现你的项目中有bug,或者哪些地方做的不够好,他就可以给你提一个Issue(即问题)。你如果看到了这些Issue,就可以逐个去Fix修复,修复OK之后就可以一个一个地Close掉。
(7)Github主页:如果你注册了一个GitHub账号,那么久会有一个属于你的GitHub主页,该页面左侧主要显示用户动态以及关注用户/仓库的动态,右侧则显示所有的Git库。
(8)仓库主页:仓库主页主要显示项目的信息,如:项目代码、版本、收藏/关注/Fork情况 等等。
(9)个人主页:个人信息:头像、个人简介、关注我的人,我关注的人,我关注的Git库,我的开源项目,我贡献的开源项目信息 等等。
Github已在课堂上完成注册,因此下面简单总结Github中的基础操作。
(1)创建新的仓库:
在GitHub中点击New或Start a Project:
Demo1如图所示:
假期已经完成了Git的下载和安装,正在学习使用中。
任务4:各位同学点击以下超级表格链接填写博客园、github账号信息
https://www.chaojibiaoge.com/index.php/U/url/daldh614
完成情况:
任务5:构建之法与博客首秀
快速浏览邹欣老师博客或《现代软件工程—构建之法》,参照参考文章的提问模板,尝试拟定3个准备从课程学习中找到答案的问题,并以写博客形式记录下来,博客要求使用Markdown排版。
读了参考文章的提问模板后,我意识到自己以前不论是学习还是日常生活中, 提问时经常存在“没有上下文”的问题。读了这篇文章之后,我觉得自己获得到很多,“提问”也存在着很大的学问。从这次作业开始,我会慢慢改正自己以前的问题,争取慢慢能够提出高质量的问题,提升自己的学习效率和思考的深度。
三个问题:
- 问题1:阅读了《现代软件工程—构建之法》第四章4.5节后,我有这样一个问题:如果两个实力都很强的人组队结对编程,当他们有分歧的时候,该如何解决?如果课堂上老师随机结对编程,一强一弱的两位同学被分到一组,这个水平较弱的同学会不会跟着划水,而失去结对编程的意义?
大二时的JAVA课上进行过一次结对编程实验,老师的目的是为了让我们相互配合,更好的完成两个人的试验任务。在本书中,看到了结对编程的好处,比如两人合作,解决问题的能力更强,解决问题的方法也更有创意;此外,可以互相交流经验,更加有信心等等。但是在结对编程时,如何组队是让我比较困惑的一个问题,是否有一种比较好的组队方法去解决易意见不统一或者划水等这些问题?
- 问题2:阅读了《现代软件工程—构建之法》第五章后,有了这样一个问题:在项目完成过程中,必定会有团队协作,那么我们应该怎么做,才能够使一个团队发挥出最大的力量,最出色的完成项目?
在上学期的项目管理过程中,我给每个成员分配了任务,大家各司其职,最终基本顺利的完成了项目。而读了这章节的内容之后,我发现一个优秀的团队不是分工就去执行就可以,更要注意以下问题:首先让团队的各个成员对自己的分工和目标都有统一的理解;其次作为团队的管理者要注意增加团队的管理能力;最重要的是要在项目完成过程中,及时发现并处理问题,不能等到后期再去匆忙修复问题。这个问题的答案我也将会在本学期的项目中多加注意,争取出色地完成每一个任务。但是面对各种各样的团队模式,我们具体应该如何选择一种适合自己团队的,这个问题还需要在以后的项目管理中不断的去发现并解决。
- 问题3:阅读了《现代软件工程—构建之法》第十一章11.5节后,有了这样一个问题:一个项目规划好并开始实行之后,要保证这个项目可以在PM的掌控下顺利进行,最关键的是什么?
本学期第一节软件安全课上,老师推荐了一段关于安全思维构建的演讲视频,其中让我印象很深的一句话是“所有失败的项目,从来不是技术上的问题,项目失败都是管理的问题。”结合本节内容,我更加理解了这句话的意义。对一个项目而言,注重日常管理极其重要,这样可以是我们及时的发现项目存在的问题并解决。若不注重项目管理,待小问题演变成了大问题,可能我们再想解决也变得难上加难了。
总结:以上三个问题,是我在翻阅《现代软件工程—构建之法》这本书的目录时,比较吸引我的几个章节,通过目录提出这样的问题,阅读这几个章节,基本找到了相关答案。通过粗略翻阅这本书,相比之前我比较深入的了解了软件工程的含义,它是一个把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。最重要的是,我学到了如何进行“提问”的方法,以后我也会一直使用这种提问方法。