我的博客:https://www.cnblogs.com/JxsBK/
课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2
作业要求:第一次阅读作业
课程目标: 通过课程的学习基本掌握软件工程开发流程
具体方面:课程讲解了软件工程开发的具体流程、开发模式、团队合作、个人要求等等让我全面的了解了软件开发的流程
1 .介绍自己
从前没有接触博客园之类的论坛,这是我的第一次在博客园上写作业。我来自一个普通的小县城,像大多数人一样读小学、初中、高中,然后考上现在这个大学。我没有什么特别的闪光点,我想说的是我初中自学的转笔技能,当时看到同班的另一个同学在转笔,感觉特别的帅,就自己练起来了。本人比较固执,不愿意请教别人,就自己一个人练。开始一直失败,转不到半圈,笔就掉下来了,但是我却毫不气馁,上课练下课练,用了一天的时间,终于能转半圈了。经过一周的时间,我终于能转完整的一圈了,同时还把班主任惹毛了,他要求上课不准转笔了。我讲这件事只是为了说明我是一个倔强的人。
2.阅读与思考
(1)回想一下你初入大学时对软件工程专业的畅想
当初你是如何做出选择软件工程专业的决定的?
当时比较迷茫,但是对化学和物理方面的专业比较感兴趣,在父母和亲戚的建议下才填的软件工程。
你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
大一没什么感觉,只是按照课表学习,按照老师的要求学习,老师不讲的知识也不会去看,感觉课程的考试都比较简单,进入大二,从老师哪里听到了学长们在大二的丰功伟绩,我严重感觉到了自己在专业领域缺少实践,缺少知识,虽然专业课也写过几个较复杂的程序,但是老师都不会太重视,只是看你交了吗,一些同学复制粘贴也能在时间快要截至时快速完成。老师讲解的知识都很基础,课下也很少敲代码,自己想要改变,却不知道要从哪里开始,形成了一个恶性循环。相比之下,博客[N]1所说"课前阅读材料有数十页介绍了页岩气,明天花一堂课专门讨论它,再次惊叹于课堂的时效性,不止有科学进展,还关注工业产业创新,相比国内课堂的内容陈旧和照本宣科,这里的学生真幸福!"还有参照博客[Q]2中的分小组教学,我觉得这才是大学应该有的学习方法。当然,中国人口众多,无法做到像国外一样,但是我觉得也应该有所改善。(这只是我个人的见解,有点答非所问了)
你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
经过三个学期的学习,但不上喜欢,但是比较有兴趣,愿意坚持学下去。我的逻辑思维还是比较强,所以学起来也不是很费劲。
将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
会从事软件开发方面的工作。现阶段的话,就想在成都的腾讯科技公司工作,希望在五到六年内能做到项目经理的岗位
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
离散数学、数据库原理及应用、数据结构、线性代数等;C/C++、C#以及初步的编写程序的能力;写过至少五千条以上的代码。
离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
计算机系统基础、软件工程原理与方法、面向对象分析与设计、操作系统;还需要学习java,python这些热门语言,同时对网页的开发如PHP,ASP,等语言也需要学习;在能力上还非常欠缺编程经验,就算毕业学生都没有什么项目开发经验,但是我的编程经验也还远远达不到要求。相比博客[C]3 "我专门扫荡 TP312(计算机理论和编程)那个分类,同时看了很多英文原版书。"和博客 [A]4"具体而言,要把每天把要做的事情分成A、B、C、D四类:A——紧迫且重要;B——重要不紧迫;C——紧迫不重要;D——不重要不紧迫。",我觉得自己的自学能力和时间分配能力还有待提高。
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
对照以上你阅读的前人们的经历,你的选择是什么?
以上的前辈们有毕业后就创业的、有毕业后就找工作的、有出国深造的,他们都有各自的想法,我觉得无论走哪一条路都无关好坏,只是自己选择的道路就要自己独自走下去。我的选择是考研。
在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
优势:我的成绩在专业中排名靠前,绩点也有3.6以上,有一定的基础
劣势:英语
针对你的选择,你给自己的大三设定的规划安排是什么?
本学期先将以前的专业书再认真看一遍
大三规划每周的时间,将空余时间的80%都用来看书
多参加计算机当面的比赛,争取丰富自己的阅历和编程能力,以及自学能力
- http://blog.sciencenet.cn/blog-765339-847817.html
- http://www.cnblogs.com/xinz/p/7465659.html
- https://book.douban.com/subject/4006425/discussion/22802960/
-
3.提有质量的问题
快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。注明是哪一章哪一节。要有观点、有证据或分析。字数不是直接的考核标准,但是要求篇幅长到能把观点表述清楚。
Q1. (8.1,P152)"分析和定义需求:这是指从各个方面获取的需求进行规整,定义需求的内涵,从各个角度将需求量化",我有这样的一个问题:面对像游戏软件的开发,需求的分析往往是摸棱两可的,甚至往往找不到具体的需求,这种情况该怎么办呢?我查了资料,有这些说法:1.足够的玩家参与;2.在开发过程中不断补充需求;3. 需要组织评审会议,集体讨论和统一理解各项功能需求并从不同的角度对需求说明给予补充的解释;4.不要画蛇添足;5.满足核心玩家需求。但我还是想问,有什么具体的模式可以遵循,如果开发到了后期发现了需求的冲突,该如何有效减少损失,或有效地避免到后期才发现需求的冲突?
Q2. (13.1.2,P275)"一个软件除了基本功能之外,还有很多功能之外的特性,这些叫非功能需求,或者服务质量需求。",我很好奇非功能需求体现在哪些方面,我查了相关资料,"非功能性需求是指依一些条件判断系统运作情形或其特性,而不是针对系统特定行为的需求,包括安全性、可靠性、互操作性、健壮性等。"但是这些非功能需求并不是短时间就能测试出来的,那么如何在短时间之内保证非功能需求尽可能的得到保障呢?
Q3. "(13.2.4,P280) "探索式测试的测试流程是不可重复的,因为它的测试都是'特定'测试,没法重复,我想到既然有流程,那为什么不能重复呢?然后我注意到了"特定"这个词,因为每一次的测试都是根据当时的具体情况而定,都有特殊性,所以不能重复。但是就算不能重复,也肯定有其标准,我上网百度了一下,在一篇文章中提到了下面的要素:
· 基于被测对象上下文进行测试;
· 不断回顾测试结果并由此调整测试;
· 测试前需要分析测试结果和确定优先级;
· 测试者的责任感和测试管理者的信任和放权。
但是探索式测试一般是对安全性要求比较高的软件,对于一般的软件用探索式测试会不会显得吹毛求疵?
Q4.在16.1.2中作者提到了创新的两种形式,改良式和颠覆式。我们应该如何看待这两种形式的创新呢?在我看来,大多数创新是在前人的基础上得来的,经过了无数的积累,是自然而然
的结果。这种创新与当前的市场是相互促进的关系。而颠覆式创新是当前事物发展的奇点,从这之后,新的技术或者新的产业会飞速发展,对当前的某些产业会带来巨大的挑战。我无法评论这两种创新那种好或那种不好,但是科技终会进步,社会终会发展,没有谁能阻止,那我们能做到的就只有适应创新所带来的变化。那么在软件行业我们要怎样做才能适应创新带来的改变呢?
Q5.(16.1.5,P347)"但是统计数据表明,70%的创新者说,他们最成功的创新,是在他们拿手领域之外发现的",为什么领域之外的专家有时候没有领域的创新者那么有创意?我想这正好应证了中国的一句古话"当局者迷,旁观者清",一个长久钻研与某项事业的人,往往想的都是些深奥的研究,很难对一些看起来微不足道的事产生兴趣。而一个刚涉及到这个领域的人,对这个领域的一切都感兴趣,往往能产生一些新奇的想法。那是否是我们尽可能多的涉足其他领域就能产生创新呢?
Q1.http://developer.51cto.com/art/200612/36892.htm
Q2.https://www.baidu.com/link?url
Q3.https://www.baidu.com/link?url=BtFni
四.了解和调查源程序版本管理工具
上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些,列举至少三个或以上的版本管理软件各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rational,Apple XCode)
1.Git
优点:
适合分布式开发,强调个体。
公共服务器压力和数据量都不会太大。
速度快、灵活。
任意两个开发者之间可以很容易的解决冲突。
离线工作。
缺点:
模式上比SVN更加复杂。
不符合常规思维。
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
2.Bitbucket
优点:
对于小团队免费,这意味着最多5名成员的团队将获得无限数量的免费存储库。
一个集成的查询管理系统。
通过社交媒体和GitHub认证。
集成Jira工具。BitBucket和Jira在整个开发阶段都做了整合,通过集成的错误跟踪组件,JIRA自动更新有关检测到的问题的信息。
导入现有Git项目。
支持Git,CodePlex,Google Code,HG,SourceForge,SVN导入。
缺点:
不开源
系统不稳定
3.Trac
优点:非常灵活,可以随心所欲控制可以和SVN集成
缺点:功能不是很强大
参考: