【软工】第 一 次作业 (阅读作业)
前言
1.这个作业属于哪个课程?
2.这个作业的要求在哪里?
3.我在这个课程的目标是?
- 了解并学习软件工程的教学内容,完成课程任务,培养工程化设计和开发软件的能力。
- 提升在软件开发中计划、管理、测试和维护软件的能力。
- 理解团队与个人编程之间的异同与优劣,培养团队协作能力。
4.这个作业在哪个具体方面帮助我实现目标?
阅读《构建之法》,相当于完成对整个课程的第一遍预习
阅读作业
问题一:"软件人体工学"何解?(1.2 软件工程是什么)
“······软件工程和下列的学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计。“
初次看到这段话的时候,我愣住了,”软件“和”人体“有什么关系?随后我百度查找了“软件人体工学”,但并没有直接完整的解释,百度所给出的相关检索内容主要是关于“人体工学”的,例如,符合身体姿态的椅子,或者是能让手握起来更加舒适,有更多功能键的鼠标······其中,与软件最相关的是软件按键的位置,一个好的按键位置可以使用户使用起来更加舒适和方便。但我还是不太懂,我的困惑是,软件人体工程就仅仅包含按键位置设计吗?这是否与用户体验设计有重叠部分?
问题二:下划线的存在意义?(4.2.7 下划线)
" 下划线用来分割变量名字中的作用域标注和变量的语义,如:一个类型的成员变量通常用m_来表示,或者简单地用一个下划线”_“来做前缀。······”
结合我个人的编程经历来说,我很少使用到,甚至基本不使用下划线。所以下划线究竟被使用在哪些方面呢?它的使用是否仅是代表着一种规范呢?可不可以不使用下划线呢?
问题三:结对出默契的两人为何不能继续在团队中默契合作?(4.6 两人合作的不同阶段和技巧)
"······一些成文或不成文的规则逐步建立起来了······为什么这一节要讲这么多两人合作的反馈问题?因为,如果软件工程师连一对一的合作都做不好,不能有效地去影响同伴,让合作双方都能从中受益,提高水平,那大家就别扯什么团队合作这些事了。”
当我看完这一章之后,我意识到两条比较重要的陈述:一,有效的结对编程能提升软件开发效率和质量;二,从零到有默契的编程合作需要付出时间精力,运用编程技术能力以外的沟通技巧等,即完成这一过程需要一定的成本。课程规定结对编程者不得在同一团队,同时课程规则也暗示希望原来不太熟悉的人能组成一个团队进行软件开发,于是我在思考,这样的规定的好处是否在于能从无到有、完完整整地完成一次团队开发,而它的坏处是否在于增加了在团队建设和管理上的风险和成本投入,进而导致团队成员在软件开发的其他方面上的学习精力和效率降低?所以在一个6人团队中,独立出一个PM是否能带来团队管理质量和个人工作效率的双相提升?这种提升到底有多少?是否值得?
问题四:团队模式?(5.2 软件团队的模式)
看了那么多团队模式之后我在想,我们团队有6个人,可否采用“PM+测试+结对编程+结对编程”的模式?这样的模式或许是大家所熟悉的,能够快速上手;PM与测试也可进行少量的工作;结对编程能提高成员的动力和效率。那么这种模式的缺陷在何处呢?究竟是否能采用这样的结构?这是我正在思考的。
问题五:如何进行绩效评定?(17.6 绩效管理)
团队规则中团队贡献分是团队自己进行评定的,在看了多种绩效考量的方法之后,我觉得应当采用以评比为主,其他考量为辅的方法,这样的评分方式是否合适?如何排除评比中来自非工作因素的主观性判断?是否应当在刚开始分工时就商量好?
“软件”与“软件工程”的词源
“软件”:1958年,John Turkey于“The Teaching of Concrete Mathematics”这篇文章中提出。
“软件工程”:1968年, Margaret Hamilton于阿波罗计划中提出。 (参考:https://linux.cn/article-4778-weibo.html)
附加作业
冷知识:电脑病毒的设计初衷并非是造成损害
史上第一款电脑病毒,竟然是由防御技术专家Fred Cohen亲手设计出来的。他创造电脑病毒的目的仅仅是为了证明程序对电脑感染的可行性,从未希望借此对电脑造成任何危害。但这款程序却能够对电脑进行感染,并且能通过软盘等移动介质在不同计算机之间进行传播,因而命名为病毒。后来,他又创造出一种主动式电脑病毒,主要目的是帮助电脑用户找到未受感染可执行文件。
管理软件优缺点
名称 | 优点 | 缺点 |
---|---|---|
Git | 速度快;功能全 | 熟练掌握有难度门槛 |
Mercurial | 拓展性好;命令简洁 | 支持功能不如Git |
Trac | 灵活,具有强扩展性 | 不支持多项目;需要安装众多插件 |
Bugzilla | 检索与数据库功能强大 | 配置流程复杂 |
部分管理软件流量排名
GitHub | 31,000,000
Bitbucket | 5,000,000
Launchpad | 3,965,288
SourceForge | 3,700,000
GitLab | 100,000
-- 参考