[软件工程]第一次阅读作业
|项目|内容|
|:--|:--|:--|:--|:--|
|这个作业属于哪个课程|https://edu.cnblogs.com/campus/buaa/BUAA_SE_2019_LJ|
|这个作业的要求在哪里|https://edu.cnblogs.com/campus/buaa/BUAA_SE_2019_LJ/homework/2625|
|我在这个课程的目标是|熟悉了解软件开发流程,锻炼工程实践能力|
|这个作业在哪个具体方面帮助我实现目标|初步阅读《构建之法》,对软件工程深入了解|
一、阅读教材后的问题
问题一:
根据第三章软件工程是的成长中的内容,我们学生毕业后大部分都应该只是初级软件开发工程师水平,即只在学校中学到了一些技能,尚未在实践中得到充分锻炼。那么,像这种情况,如果到了一个公司里,是不是前几个星期或者几个月,都只是会处于一种接受培训学习的状态呢?又有什么方法可以快速对公司的一些业务上手呢?
问题二:
在第四章结对编程里面,文章中说到,在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。等等。但就我现在的经验和结合实际来看,如果只是一个1000多行的程序,而2个人来合作完成的话,一起编码是不是有点不太契合实际。还有一系列的工作都由两人共同完成,这样的效率真的会提高很多吗?
问题三:
在第六章敏捷开发流程中,在冲刺阶段,还要进行每日例会是不是有点拖慢节奏?虽然说只是报告一些简单的东西,但确实需要每个团队成员去花更多的时间去准备和计划这些内容。像书中所述的“狗熊级”程序员,会不会一段时间之后,每天这种重复的例会,使得团队中每个成员都变成这种状态。
问题四:
同问题三,在冲刺阶段,每个成员的时间都非常紧迫,是否会出现由于缺少时间和其他成员沟通,只顾自己编码,最终可能会出现接口非常复杂,对不上,或者说拼接起来后出现其他各种各样的问题?
问题五:
第九章项目经理的内容。PM做开发和测试之外的所有事情。PM可能在实际的调查过程中,发现某种功能可能会受欢迎,是否就能在团队开发过程中就命令成员加上这种功能,而不去更多地去考虑加入这项功能的复杂性和代价?
二、请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
- “软件”最早是由Alan Turing在他1935年的关于可计算数字的论文中提出的。
- “软件工程”由Margaret Hamilton在1968年阿波罗计划期间提出。
三、目前流行的源程序版本管理软件和项目管理软件优缺点比较
|软件|优点|缺点
|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|
|Git|1、适合分布式开发,强调个体。2、速度快、灵活。3、任意两个开发者之间可以很容易的解决冲突。4、离线工作。|1、模式上比SVN更加复杂。2、不符合常规思维。。3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
|Mercurial|1、使用简单,容易熟练。2、可以一键完全恢复到历史版本的某一个切面。3、封装好。|分支管理不灵活
|Trac|1、良好的扩充性。2、权限体系是比较完备的设计。3、非常灵活,可以随心所欲的定制。|1、需求和缺陷没有分离。2、中文化不完整,美术人员接触起来困难重重。3、核心功能很少,不安装插件基本上没法用。
|Bugzilla|1、不收费。2、有中文支持。3、检索功能强大。|1、需要配置数据库,过程繁琐。2、流程无法定制。
Github用户量最大,大约为31,000,000人。