《构建之法》—— 系统分析与设计第一次作业
《构建之法》—— 系统分析与设计第一次作业
这个作业属于哪个课程 | 课程连接 |
---|---|
这个作业要求在哪里 | 作业要求链接 |
我在这个课程的目标是 | 了解软件工程项目的开发流程以及项目管理等知识 |
这个作业在哪个具体方面帮助我实现目标 | 统览全书,对软件工程有初步了解,为进一步学习打基础 |
自我介绍
- 本人为软件工程大三学生一个,平阳府岳阳县人氏(用古地名就显得比较高大上了( ̄︶ ̄)↗)。好读书,不求甚解,张爱玲、沈石溪、阿加莎、东野圭吾等作家的书籍都有拜读,不过大抵还是偏爱悬疑一些。游戏黑洞,玩啥啥不行,吃啥啥不剩┐(‘~`;)┌ 。曾疯狂痴迷口琴,尤爱其音色,苦练三个月,不得其技,舌头仿佛打了个结,十分僵硬。到如今也只会两三首曲子,还磕磕绊绊实是拿不出手,爱好也仅仅终于爱好而已。最喜欢的事情莫过于一个人看书和发呆扣手手了。至于优点,审视自己良久,毫无发现,只觉得普通到我这个程度的人也算是世上少有了,不知旁人如何看我,大概是只缘身在此山中吧。
阅读与思考
(1)回想一下你初入大学时对你所在专业的畅想
当初你是如何做出选择你所在专业的决定的?
- 在高考结束之后,我对于学校和专业的选择还十分迷茫。虽然我对专业并没有足够深刻的认识,但也许是出于男人的直觉๑乛◡乛๑,当时的我对机械和计算机方面的专业还是抱着一种无法言说的兴趣。在啃完一本厚厚的志愿填报书和翻遍了各年的报名数据之后,填报了志愿。志愿专业的先后顺序也没有仔细的考虑,觉得都能接受,加之当年我省报考西南石油的人属实不多,几乎没有竞争,于是乎就进了顺序第一位的软件工程。想来若是当年志愿的顺序换一换,恐怕现在可能就是一根机电院的老油条了。
你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
- 大学之前,计算机行业对我来说可谓玄之又玄,虽然大学以来的课程狠狠的嘲笑了我那没见过世面的亚子,但并没有让我对这个行业失去兴趣。万丈高楼平地起,这些基础的知识让我看见了软件背后的东西,一如廖老师所讲:别人看到的都是富丽堂皇的高楼大厦,而我们,需要见到它当初搭满脚手架的样子。对于我而言,学会如何盖房子远比看别人家的高楼有趣的多。
你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
- 虽然是被神奇的命运安排了一手,但说实话,这个专业待我不薄(⁄ ⁄•⁄ω⁄•⁄ ⁄),现在我对软件工程有一种情感,对19届大类招生学弟们疯狂安利软件工程······
但擅长属实算不上,先天不足,大一大二囿于学生会繁忙的事务之中,后天的努力亦不够,只是偶尔抽闲,写一写基础的算法,不至于手生而已。
将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
- 那是必然,无论是从个人爱好、情感、专业技能、行业前景、薪资报酬等多个方面考虑,我个人都觉得转行不是一个明智的选择。我对城市并没有特殊的要求,但鉴于并不喜欢南方潮湿的气候和山西人不吃面会死的特性,可能还是会考虑回到北方,哏都天津似乎是个不错的选择。公司自然更倾向于大厂,想来没有人会拒绝BAT,能力之内尽可能的进入大公司,至少也可以涨涨见识。岗位还是偏向于web后端,但实是所学不精,亦无把握。
(2)对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
- 我的大部分专业知识还是来自于课堂,机缘巧合之下,Java、C#、poyton都学过一些但都只是些皮毛,掌握了基本的语法而已。代码量亦不明有多少,大一在团队敲了很多的代码,大二在课堂之外的专业技能并没有太多的进展,只是会写一些题来安慰自己罢了,大部分题目大同小异,并没有跳出自己的舒适区,想来也不能计入代码量之中。之前同别人一起写过网页,抱在也在做一个python的项目。就论个人而言,最复杂的可能还是大一翻来覆去写了许多遍的图书馆管理系统,这让我的C语言的基础还算扎实。
相较于一个合格本毕业生还有很长的路要走,很多的东西要学。计网、操作系统、汇编等一大堆专业知识。除此之外自己还想去学习一些web后端的开发技术,希望能像某大佬一样自己写一个属于自己的网站出来。
(3)目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
对照以上你阅读的前人们的经历,你的选择是什么?
在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
针对你的选择,你给自己的大三设定的规划安排是什么?
你对于实现自己的梦想已经做了或者计划做什么样的准备?
- 我的选择是考研,在我的认知里,大学的教育只是一个领域内的通识教育,我想要更加深入的去了解这个专业,去学习更多的专业知识,打下足够牢固的基础之后再进入公司,通过真正的商业软件项目实践来提高自己。(我才不会说是因为我技术太菜)
- 与其他同学相比,我的优势可能就是知耻而后勇吧(╥╯^╰╥)。
- 首先,学好大三所有的专业课,开始复习高数和英语,并且开始有目的的学习技术,在技术学习的深度和广度上都要跳出自己的舒适区,去攻坚克难,先自闭,后变强。
- 至于准备嘛,可以说现在已经在路上了,踏实地走好每一步就是对明天最好的准备了。白天走干讲,晚上读写想,实践与思考结合,努力去做,无愧于心就好。
问题
-
第四章:结对编程
课本中提到当两人结对编程,互相提供思路、指出错误,这样会提高代码的初始质量。但两个人之间的合作需要磨合,对于一些相对代码量较少的项目,可能会出现因两个之间的配合问题而影响工程进度。但文中并没有提到在何种情况下适合采取结对编程的方式。另外,当工程较为复杂之时,若多人进行结对编程,那么团队可能会需要更多磨合的时间,另外还可能会出现团队成员借结对编程之名而摸鱼偷懒的问题。 -
第八章:需求分析
在面对需求时,用户所反馈的信息和其需要往往有所冲突,用户的眼中需求也会受到现存产品的限制,一个符合调查中多数需求的产品也未必能够真正地符合市场需求,如何选择开发者可以“信任”的需求,如何在需求调查中发现产品的特色和创新点? -
十二章的用户体验
一个好的产品需要考虑到用户人群的使用体验,但如果不同的用户人群对于产品的体验出现分化,例如:对于社交软件,年轻人追求新颖的多样化的功能,但是年纪较大的用户却会因繁多的功能感到使用不便。在上述情况之下,应该如何处理解决呢? -
十六章 迷思五:要成为领域的专家,才能创新
我对作者书中所言有一些不同之见,外行人有旁观者清和初生牛犊不怕虎的优势,但他们的创新大都是出于一个点子,然后深入去研究该行业,创新之时也成为了行业内的专家。若是一个纯粹的外行高喊着“对XXX行业的创新”,多半都是荒唐的闹剧。总而言之,外行可以提出一些内行人想不到的观点,打破内行们被专业禁锢束缚的思路,但真正的创新,还是要由内行人来完成。
了解和调查源程序版本管理工具
- Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
Git的功能特性:
从一般开发者的角度来看,git有以下功能:1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。2、在自己的机器上根据不同的开发目的,创建分支,修改代码。3、在单机上自己创建的分支上提交代码。4、在单机上合并分支。5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。6、生成补丁(patch),把补丁发送给主开发者。7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
优点:
1、适合分布式开发,强调个体。2、公共服务器压力和数据量都不会太大。3、速度快、灵活。4、任意两个开发者之间可以很容易的解决冲突。5、离线工作。
缺点:
1、资料少(起码中文资料很少)。2、学习周期相对而言比较长。3、不符合常规思维。4、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。 - GitHub可以托管各种git库,并提供一个web界面,但它与外国的SourceForge、Google Code或中国的coding的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。
在GitHub进行分支就像在Myspace(或Facebook…)进行交友一样,在社会关系图的节点中不断的连线。
GitHub项目本身自然而然的也在GitHub上进行托管,只不过在一个私
有的,公共视图不可见的库中。开源项目可以免费托管,但私有库则并不如此。Chris Wanstrath,GitHub的开发者之一,肯定了通过付费的私有库来在财务上支持免费库的托管这一计划。
是的,我们正是这么计划的。通过与客户的接洽,开发FamSpam,甚至是开发GitHub本身,GitHub的私有库已经被证明了物有所值。任何希望节省时间并希望和团队其它成员一样远离页面频繁转换之苦的人士都会从GitHub中获得他们真正想要的价值。
在GitHub,用户可以十分轻易地找到海量的开源代码。 - TFS(Team Foundation Server)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。
(以上资料来自百度百科)