软件工程个人博客作业
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2020春季计算机学院软件工程(罗杰 任健) |
这个作业的要求在哪里 | 个人博客作业 |
我在这个课程的目标是 | 学习软件的开发和思想 |
这个作业在哪个具体方面帮助我实现目标 | 通过这作业我更理解软件工程的内容 |
一.通读教材后的一些问题
1.软件需求分析
在老师的博客里(软件工程概述) (Requirement Analysis) 软件工程包括下列领域: 软件需求分析, 软件设计, 软件构建, 软件测试, 和软件维护.
其中除了软件需求分析以外都觉得明白了。但是软件需求分析这个是怎么分析顾客要的要求?一个软件要有人买,就得先找到顾客,顾客有各种需求,有些靠谱,有些不靠谱,我们要把这些靠谱的需求都实现了,一群人要从需求分析。这样的也可以写代码分析吗??我觉得一点不明白了。
2.单元测试
在老师的博客里(单元测试 )中的比较实际结果和预期的结果(Assert.IsTrue(target!= null);)
这个就是我理解的意思是用我建立的函数检查我设置的值的结果是不是对不对。但是这样的话一定要用这个吗?直接代码中插入我要的真,然后看结果不是一样吗?或者还有别的功能吗?
3.单元测试必须由最熟悉代码的人(程序的作者)来写。
在老师的博客里(单元测试 )中有代码的作者最了解代码的目的、特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。
我觉得这是不一定的,因为他觉得他的逻辑一定对的话他的单元测试可能不能发现bug。然后我以前写代码的时候不能找bug,一直找也找不到。这种情况下别的人看代码可能发现bug。
所以这部分一点不太会理解。
4.技能的反面
在老师的博客里(技能的反面 )中的大家可以花10多分钟先读一读这里面的
Before reading on, think for a moment, and tell me what is the opposite of skill?
I'll even give you a hint: I'm not looking for "unskilled."
The intended answer is, "problem solving.
他说技能的反面是问题解决。。这部分我不太会理解。。都看完了也觉得太深奥
5.代码规范和代码复审
在老师的博客里(代码规范和代码复审)
中的10.2.2 goto
问:我们能不能用goto?
答:函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto。
那这意思是我们对goto的用法完全理解的话可以用goto吗?因为以前听说用goto是不好的。
二.请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
软件(Software)
:1953年8月Richard R.Carhart在美国兰德公司发表的研究报告里;
软件工程(Software Engineering)
:1950年Margaret Hamilton在MIT阿波罗计划项目组中提出了。
三.大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
自1970年起,软件开发进入了软件工程阶段。由于“软件危机”的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法。从此软件产生进入了软件工程时代。此阶段的特点是:硬件已向巨型化、微型化、网络化和智能化四个方向发展,数据库技术已成熟并广泛应用,第三代、第四代语言出现;第一代软件技术:结构化程序设计在数值计算领域取得优异成绩;第二代软件技术:软件测试技术、方法、原理用于软件生产过程;第三代软件技术:处理需求定义技术用于软件需求分析和描述。
百度百科
四.调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
Name(名称) | User(使用人数) |
---|---|
GitHub | 31,000,000 |
Bitbucket | 5,000,000 |
Launchpad | 3,965,288 |
SourceForge | 3,700,000 |
GitLab | 100,000 |
GNU Savannah | 93,346 |
OSDN | 54,826 |
Ourproject.org | 6,353 |
软件 | 优点 | 缺点 |
---|---|---|
Microsoft TFS | 有集成性,是对敏捷,msf,cmmi等项目、过程管理、过程改善的支持。任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用。 | 搭建、维护复杂,能应用起来的团队、公司的数量极少,多数真正用起来,也就是源代码管理这部分 |
Git | 分支切换快速,支持离线工作 | 操作繁琐,学习门槛较高,代码保密性差 |
Mercurial | 操作简单、跨平台,封装好 | 分支切换不方便,功能不够强大 |
Github | 流行,能应用起来的团队、公司的数量极少,多数真正用起来,也就是源代码管理这部分 | 中文支持差,价格高,将图片内容转化为代码,或者将设计用于产品设置,看起来依旧不是那样顺利。 |
Bitbucket | 对提交大文件友好 | 用户少 |
Trac | 灵活、可扩充,可以随心所欲控制可以和SVN集成 | 功能缺乏 |
Bugzilla | 支持定制 ,免费,有中文版支持 | UI不好看,,快速搜索结果不准确。只能管理缺陷 |
Rationale | 创建争论地图、推理方便 | 中文支持差 |
Apple Xcode | 编译快,每次操作都很快速和轻松。自动提供撤消、重做和保存功能,无需编写任何编码。 | 只面向OSX 语言少,更新版本后,某个插件可能会失效 |
五:调查完目前流行的源程序版本管理软件和项目管理软件后,请你选择其中至少2个软件来进行动手实践
git:
git的分支切换速度快,但是用法有点难。要学习git!。
github:
github是现在最流行的。所以github上有很多代码。可以看多种代码。觉得太好。而且用法觉得不是那么难。