软件工程第一周作业:软件工程和代码托管平台

0x01 请问 “软件” “软件工程” 这些词汇是如何出现的 - 何时、何地、何人

软件:最早的软件的概念,由Richard R. Carhart在1953年8月,Rand Corporation的备忘录中提出,并将其使用于工程背景中(The earliest known publication of the term "software" in an engineering context was in August 1953 by Richard R. Carhart, in a Rand Corporation Research Memorandum.),而真正的电子的软件,是由John Tukey在论文"The Teaching of Concrete Mathematics"中引用,并被发表在JSTOR中(In 2000, Fred Shapiro, a librarian at the Yale Law School, published a letter revealing that Tukey‘s 1958 paper "The Teaching of Concrete Mathematics" contained the earliest known usage of the term "software" found in a search of JSTOR‘s electronic archives, predating the OED‘s citation by two years.)

 

软件工程:"软件工程"一词是Margaret Hamilton致力于为软件以及那些发明者争取应有的正统性与尊重,所以开始使用“软件工程”这样的字眼来将之与硬件还有其他工程学类做出区别,最早发明于阿波罗11号软件系统的开发期间

0x02 源程序版本管理软件和项目管理软件及优缺点

VSS

VSS 采用Windows操作界面,且配置和安装相对简单,参考微软的开发文档即可应用于实际工程中。VSS配置管理提供文件的版本跟踪、基线的管理,同时提供Share\Branch\Merge功能以支持团队的开发。

但与其他代码托管平台相比,VSS智能运行在Windows平台而不支持其他操作系统,同时其安全性较低,即便可以设置正常的四级权限,但完全共享给用户后极易导致文件的恶意删除,同时,VSS也不支持对流程的管理,和异地团队的开发支持。

Git

Git是一款免费的、开源的、分布式的版本控制系统。git采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。每一个git克隆都是一个完整的文件库,含有全部历史记录和修订追踪能力。其最大特色就是“分支”及“合并”操作快速、简便。支持离线工作,git是整个项目范围的原子提交,而且git中的每个工作树都包含一个具有完整项目历史的仓库。

因此,Git适合于分布式开发,公共服务器压力和数据量不大,能相对容易地解决冲突,也满足离线工作的工作状态;但学习周期相对较长,且若其他开发者将整个库克隆后可完全公开全部代码和版本信息。

Mercurial

Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。

与传统的使用集中式的 repository的版本控制系统相比,Mercurial由于采用了分布式的模型,可以由用户自主管理属于自己的repository,同时,分布式系统比集中式的单服务器系统具备更强的健壮性,不会因为单个节点崩溃而导致全部系统无法运行,同时其对网络的依赖性也有所降低,同Git类似,可以实现离线的工作。

Bitbucket

BitBucket 同Github类似,属于代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户。用户能在BitBucket上无限制地添加私有仓库,并提供无限制的磁盘空间,能同时支持HTTP/SSH的访问,同时也提供了丰富的扩展功能供用户使用,如:Bug 跟踪、项目Wiki、API 支持、灵活的权限控制、可自定义域名等

SVN

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。在功能上,它管理方便,逻辑相对符合大众的思维习惯;同时集中式的服务器更能保证安全性,也使得代码一致性非常高。

Trac

Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。Trac是以面向进度模型为项目管理模型的,很明显的特点就是它以里程碑(Milestone)方式进行项目管理的。每个里程碑中的具体要做哪些事情,就使用Ticket来进行定义、跟踪等。同时,Trac提供SCM配置管理平台,具备良好的扩充性。通过WebAdmin界面中的Plugin功能,可以很方便的安装下载的插件,也可以通过此功能查看已经安装的插件,并可对其中的插件进行启用或停用操作

Rational

Rational是提供基于业界开放标准的工具、最佳方案和服务,用于开发商业应用和构建软件产品及系统,包括移动电话和医疗系统等设备使用的嵌入式软件,是IBM软件开发平台的一部分,包括生命周期管理、统一建模语言、功能测试和回归测试等多个组成部分

0x03 《构建之法》阅读提问

n  在开发过程中的设计框架中,预留接口方便维护是讨论的重要组成部分,但如果开发过程遇到需求的急剧调整,如何设计独立性较强,模块集成较高的接口

n  既然软件开发是一个具有不可预知性和变化性的动态的过程,如何在初期的架构过程中合理地为可能的需求预留扩展的空间

n  开发的后期阶段,遇到用户需求的发生急剧变化的情况,应当选择重构代码,还是实行敏捷开发,尽早在更新的版本中增加一夹在前端和后端间的中间层

n  软件开发过程,在遇到文档不全面的旧代码,如何重新维护或测试保证其正确运行

n  软件工程是团队型的项目,那仅针对学习过程,能否提供崭新的思路保证每个人都能去担当每一角色来保证学习的完整性

时间: 2024-10-27 02:12:39

软件工程第一周作业:软件工程和代码托管平台的相关文章

软件工程第一周作业 - 导航

本周作业内容链接 软件工程第一周作业 - 关于计算机.职业生涯 http://www.cnblogs.com/vector121/p/7496387.html

软件工程第一周作业 - 每周例行报告

本周PSP C(类别) C(内容) S(开始时间) E(结束时间) I(耽误时间) △(实际时间) Part One 个人情况阐述 9:10 9:35 2分钟 25分钟 Part Two 阅读<构建之法> 12:40 次日18:46 495+32+41+10-36 19小时52分钟 Part Three 评价作品 8:20 12:48 2+10+5 4小时11分钟 Part Four 采访往届同学 14:00 14:56 2 56分钟 总结 第一次作业       25小时24分钟 本周进度条

软件工程第一周作业 - 针对“天天向上”团队的采访

针对“天天向上”团队的采访 1.当时的项目有多少用户,给用户多少价值? 现在还有人用吗? 因为我们团队开发的是一款单机游戏,所以具体有多少用户我们也不太清楚,当时我们将项目放到CSDN上,我删除项目之前看到的下载量是56个,如果可以的话,这个就算是用户量了.因为我们的项目是款游戏,所以带给用户的当然就是娱乐消遣的价值了,希望大家每天早上打开电脑的时候先玩几盘连连看,开启一天的好心情.至于现在还有多少人用我就不太清楚了,反正我(张政)还是偶尔无聊时玩几盘. 2.这个项目能否给我们团队继续开发,源代

软件工程第一周作业----小学生四则运算题

实现功能: 1.整数和真分数的四则运算, 运算数和运算结果都可以是整数或分数: 2.能生成任意个运算数的算式(不超过100): 3.算式的个数.数的范围.运算数的个数由命令行输入: 4.不支持括号. 实现思路: 1.定义算式类,数据成员包含两个数组,分别存储运算数和算符:以及算式的结果: 方法成员包括一个初始化函数,随机生成算式并计算结果:一个输出函数,用来打印算式:以及其他辅助函数. 2.定义运算数类,数据成员包含两个整数,即分子和分母. 3.在主类里调用算式类的方法,来生成和输出算式:接受用

软件工程第一周作业----个人项目总结

需求分析: 写一个自动生成小学生四则运算题的程序,要求: 1.支持整数.真分数: 2.允许有多个运算数和括号组成的复杂表达式: 3.能接受用户输入并判断正误: 4.能接受命令行参数. 计划估计: 1.计划先实现两个整数间的四则运算,然后再加入真分数,最后实现多运算数和含有括号的表达式. 2.估计大概用时4个小时,代码行大约100行左右. 遇到的问题: 1.一开始实现整数的四则运算时,运算数都是用的整型:后来再加入真分数时,感觉如果整数用整型数据表示的话,没法和分数一起处理,比较麻烦,所以就把整数

现代软件工程第一周作业

2.  软件有很多种,也有各种分类办法: ShrinkWrap (在包装盒子里面的软件,软件在CD/DVD上):   Web APP (基于网页的软件):   Internal Software (企业或学校或某组织内部的软件): Games (游戏):   Mobile Apps (手机应用):    Operating Systems (操作系统):    Tools (工具软件)      选取一类软件,  请分析: 1) 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为

软件工程第一周作业----小学生四则运算题2.0

实现功能: 1.整数和真分数的四则运算, 运算数和运算结果都可以是整数或分数: 2.能生成任意个运算数的算式: 3.算式的个数.数的范围.运算数的个数由命令行输入: 4.保证生成的算式不重复; 5.支持括号. 实现思路: 1.新定义了表达式类,数据成员包含表达式的值,表达式的字符串形式,以及两个子表达式中间的算符. 方法成员包括两个构造函数,其中一个随机生成算式并计算结果,另一个是默认的,用来分配空间:一个输出函数,用来打印算式:以及其他辅助函数. 构造函数的思路:构造两个较短的子表达式,然后用

软件工程 第二周作业

##软件工程第二周作业 提出问题 1. 一般来说,想要自己的程序跑得又快又好,就要减少函数的反复调用,但有所得则必有所失,效能提高就有可能伴随着程序的稳定性的降低,这两者应该如何权衡呢? 2. 关于5.3.5 老板驱动的流程,这种开发流程模式存在着一些问题,那要如何解决这些问题呢? 这种模式当然也有它的问题. 领导对许多技术细节是外行. 领导未必懂得软件项目的管理,领导的权威影响了自由的交流和创造. 领导最擅长的管理方式是行政命令,这未必能管好软件团队或任何需要创造力的团队. 领导的精力有限,领

解题报告——2018级2016第二学期第一周作业

解题报告——2018级2016第二学期第一周作业 D 算24 题目描述 描述 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式.现在的问题是,是否存在一种方式使得得到的表达式的结果等于24. 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法). 比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24.又比如,对于1,1,4,2,我们怎么都不能得到24. 输入 输入数据包括多