作业课程:
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2
作业要求:
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706
课程目标:
了解软件工程;学会项目设计分析;学会团队分工合作。
作业目标:
这个作业能帮助我审视自己目前的境况,并且从一些前辈身上学习到有关软件开发的经验与领悟,还能了解到自己的优点与不足,有助于日后对自身的改造和提高。
一,建立博客并介绍自己
1, 博客地址:https://www.cnblogs.com/cc456xie/
2, 自我介绍:我是本校软件工程专业一个普通学生,直到上学期都在划水,现在慢慢认识到自己专业能力的不足,所以我在这学期开始自学一些方面的知识,并且打算以更认真的态度对待学校课程。
二,阅读与思考
(1)回想一下你初入大学时对软件工程专业的畅想
- 当初你是如何做出选择软件工程专业的决定的?
觉得这个专业很高大上,工资又高。
- 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
大学之前从没接触过相关的知识,所以我根本没有期待,只是觉得能让我写出软件就行了。
- 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
对某些领域比较感兴趣,比如游戏开发,但是自己目前也只是在摸索。
- 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
现在我对自己未来能否具有足够的开发能力感到怀疑,当然如果我在未来有能力从事软件开发相关的工作,我是非常愿意的。比较想留在成都,公司和职位的话暂时没有什么要求。
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
学习过C,C#,XHTML,CSS,U3D,但都没有特别熟悉,还有如数据结构和算法,离散数学,线性代数这类课程,但是分数都不高。
代码量没统计过,但不会超过5000行。
离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪
软件设计开发维护等方面的知识,还有面向对象编程能力,继续学习的能力。
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
- 找工作。
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
- 相比同级考研的同学,我能更早地接触真实职场,能先人一步累积职场经验,还能有更多的资金累积。缺点的话,我的上升空间没有研究生大。
- 针对你的选择,你给自己的大三设定的规划安排是什么?
- 在大二强化自己的技术的基础上,大三可以参与一些实际项目或者比赛,为自己累积经验,充实简历。
-
三.提有质量的问题
- 快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。注明是哪一章哪一节。要有观点、有证据或分析。字数不是直接的考核标准,但是要求篇幅长到能把观点表述清楚。
(如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html,以及在互联网时代如何提问题。 还有这些要点:- 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文。
- 列出一些事例或资料,支持你的提问 。
- 说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?
一个模板可以是这样:
我看了这一段文字(引用文字),有这个问题(提出问题)。我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。
【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。d. 大学生应该能写出自己的思考, 而不是摘抄书本内容。
e. 提示:编程经验不多的同学,建议看16章 “创新”, 提出自己的问题。)
- 快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。注明是哪一章哪一节。要有观点、有证据或分析。字数不是直接的考核标准,但是要求篇幅长到能把观点表述清楚。
- Q1,第一章1.2
- 关于软件工程的定义,那么软件工程与普通程序之间的主要区别是什么?
- 分析:根据书中描述,软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程。那么可以说软件工程就是把工程学的知识应用到软件开发的领域,包括计算机科学,计算机工程,管理学,数学等等学科的知识统一到一个流程中,叫 软件开发流程。二程序没有经过这道流程的规划和设计,就不能说他是一个软件,这也是软件工程与程序之间的区别。
- Q2,第五章5.1
- 相比于非团队,团队有什么优点和缺点?
- 析:非团队开发项目往往具有临时性,所以对立面的各个成员都很难弄清他们的真实水平和擅长领域,并且也无法做到像团队之间那样紧密的合作,畅通的交流,所以在开发一个项目是往往很容易发生问题。团队也分很多种,但都有一些相似的特点,比如紧密性都要好于非团队,不会存在东拼西凑的现象,能有更好的分工和交流。但是如果团队的结构不好,也会存在一些问题,如团队中一个成员过于突出,这就会使团队处于解体的边缘,或者一个团队只有一个人干活,其他人都抱大腿打酱油,那这个团队也很容易出现问题。
- Q3,第八章
- 如何尽可能的实现用户需求,或者说如何更好的了解用户的需求。
- 分析:用户需求主要指对软件功能性,安全性,可维护性,稳定性方面的要求。不同的项目有不同的需求,这时需要对软件利益相关者进行了解和挖掘,这一步骤叫做“需求捕捉”,我们需要明锐的洞察力和好的理解力来分析需求,很多时候用户不能明确的表达,甚至根本不知道自己的需求,那么就需要开发者对其进行引导,并且设身处地的为用户分析需求。最后整合主管和客观的需求分析和成本预算,来进行软件开发的设计。
- Q4,第十二章12.1,12.2
- 如何平衡用户体验和开发成本
- 分析:根据书中所讲用户体验的要素,保证用户对软件的基本使用要完全没有障碍,例如界面要足够简洁,外观要基本符合用户的要求,不能有过多BUG,要保持对软件的更新和维护。这些是一款软件必须具备的素质。软件开发者无需将软件做的完美无瑕,只要用户再使用之后表示没问题就行了,因为控制成本也是软件开发中很重要的因素。
- Q,软件工程创新的作用是什么
- 分析:为未来可能的工程进步提供基础。
-
四.了解和调查源程序版本管理工具上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些,列举至少三个或以上的版本管理软件各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rational,Apple XCode)
-
Git的功能特性:从一般开发者的角度来看,git有以下功能:1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。2、在自己的机器上根据不同的开发目的,创建分支,修改代码。3、在单机上自己创建的分支上提交代码。4、在单机上合并分支。5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。6、生成补丁(patch),把补丁发送给主开发者。7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
- Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。