19秋软件工程基础第一次作业

这个作业属于哪个课程 课程链接
这个作业要求在哪里 作业要求链接
我在这个课程的目标是 掌握软件工程这门课的核心知识点,对职业规划有清晰的认识,在完成该课程之后对未来学习历程有明确的方向
这个作业在哪个具体方面帮助我实现目标 通读教材并提出建设性问题
参考文献 在 GitHub 可以做什么,用户又习惯做些什么?
参考文献 版本管理(一)之Git和GitHub的区别(优点和缺点)
参考文献 GitHub、Bitbucket、Google Code 各有哪些优缺点?

1.关于我

  • 我是来自计科1801的陈纪龙,叫这个名字是因为有个双胞胎哥哥叫陈世龙^_^

  • 博客园博客地址: https://www.cnblogs.com/FourtyTwo/

  • 个人优点大概是自控与自学能力较强,对感兴趣的事物有着强烈的好奇心与求知欲

  • 平常喜欢跑步和乒乓球

  • 大一的一学年里通过自学倒也学了不少东西,但大多都不是很精通/(ㄒoㄒ)/~~,新的一学年争取把之前落下的东西补回来,把学的不扎实的东西再巩固一下

  • 之前通过Hexo+Github搭建了个人博客,以记录学习过程中遇到的各种问题,但已经停更挺长时间了〒▽〒,也希望借此机会能够督促自己,多多记录自己的学习历程(ง •_•)ง
    (==>My blog)


2.阅读与思考

阅读以上材料,并回答下面几个问题:

(1)回想一下你初入大学时对你所在专业的畅想

  • 当初你是如何做出选择你所在专业的决定的?

    其实在高中对计算机相关专业的认知并不是很清晰,在选择志愿前也是通过知乎了解到计算机相关专业就业率与薪酬都比较高,并且自以为自学能力与独自解决问题的能力尚可,最终将计算机科学与技术专业排在了第一志愿。

  • 你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?

    符合期待。过去一年学校开设了C语言与数据结构这两门专业课程,因为程序=算法+数据结构,所以作为一名程序员,重中之重便是对于数据结构的学习,而要学好这门课又需要C语言作为支撑,对我们的学习与发展有较大的帮助。

  • 你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?

    既然主动选择了这个专业,当然是喜欢这个领域了,计算机行业只要有一台电脑,便有了无限的发展空间。但由于一入学便加入网络联盟,参加了几次CTF和AWD网络攻防赛, 所以目前最擅长的领域是渗透测试o((⊙﹏⊙))o,但我会努力做到全面发展,开发渗透两开花( ̄︶ ̄*))。

  • 将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因

    会,根据自己的能力与学习情况选择对应的工作。可能的话会在成都发展,公司和岗位目前还无法确定X_X。

(2)对照前人们走过的路和描述未来发展,现在的你

  • 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。

    目前通过自学掌握了Linux与SQL语句基础;可以自己鼓捣虚拟机,在kali-Linux上利用常见web前端后端漏洞进行渗透测试;此外还有些php和python基础,但不是特别熟练。代码量可能有个两千行?做过的最复杂的作业可能就是上学期程序设计综合实践课上做的推箱子小游戏,通过多维数组完成地图的创建,开始的图形界面通过网上查阅利用windows的一些命令实现。

  • 离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?

    目前熟练掌握的语言很少,并且不知道软件开发的具体流程,不了解如何通过团队协作来实现软件的开发;并且没有实际的软件开发经验,对未来的发展规划尚不清晰。

(3)目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。

  • 对照以上你阅读的前人们的经历,你的选择是什么?

    如今本科生就业竞争十分激烈,加上父母的建议并且不让未来的自己后悔,我选择考研这一方向。

  • 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?

    考研需要比较好的自控能力,我的优势便是如此,能在无人监督的情况下时刻保持自律,合理制定并且比较好地完成学习计划;劣势可能就是脑袋不如别人灵光〒▽〒,需要用更多的时间来理解某一道题或某一事物,正因如此,我更要我加倍努力,付出更多的时间与精力(ง •_•)ง。

  • 针对你的选择,你给自己的大三设定的规划安排是什么?

    由于不想把考研战线拉的太长,我准备在大三下学期开始考研的复习工作,这样距离考研大概有九个月的时间,也避免了时间过短导致复习不充分的情况;每天至少八小时的学习时间,并且保证留有外出锻炼的时间,毕竟身体是革命的本钱,做到劳逸结合才能事半功倍。

  • 你对于实现自己的梦想已经做了或者计划做什么样的准备?

    目前做的准备就是当然就是做好作为学生的本职工作:认真对待所学的每一门课,并且在大一学年也取得了令自己满意的成绩,也相当于为考研夯实基础;未来还要进一步提升自己的专业技能,还要尽量克服社交恐惧/(ㄒoㄒ)/~~。


3.提有质量的问题

问题①:什么算是“足够好”?

  • 问题来源:

    教材第一章概论部分第17页提出要通过一定的软件流程,在预计的时间内发布“足够好”的软件,但究竟什么算是“足够好”呢?

  • 我的理解:

    关于“足够好”,这个定义本身就模棱两可,未能对软件发布的具体时机有个明确的阐述;况且“未完成的”也不一定就是差的,例如Valve公司旗下Steam平台开创的Early Access模式就开创了这一先河,开发者可以在开发流程尚未完成时就将软件发布在平台进行买断制售卖,这种模式不仅可以解决开发过程中可能出现的资金短缺问题,还可以将软件的雏形展示给用户,这样一来,开发者可以及时吸取用户的意见,优化开发流程与调整开发方向,将“更加好”的软件展示给客户。

问题②:如何对软件设计思想有深入的理解?

  • 问题来源:

    教材第三章谈到软件工程师的成长时提到了要对软件设计思想又深入的理解,但书中并未提出究竟如何才能对软件设计思想有深入的理解。

  • 我的理解:

    我认为要对软件设计有深入的理解最不可取的方法便是直接翻阅各种讲解软件设计思想的书籍,因为若缺乏基本的实践经验,不了解一个软件从策划到开发结束的具体流程,从书籍中直接获得的东西便都是过往云烟,到头来也只是纸上谈兵。我认为好的方法应该是先尽可能的去寻找实践机会,实在没有便自己创造机会,在一个个项目中便可以潜移默化的掌握很多软件设计思想。

问题③:PM的职能?

  • 问题来源:

    教材第九章集中讲解了有关PM的内容,并介绍了Program ManagerProject Manager的区别,但我对于Project Manager的职能产生了疑问

  • 我的理解:

    书中指出Program Manager就是负责具体的代码开发工作,和大家平等工作,对具体的软件开发流程有深入了解;Project Manager就相当于一个领导者,负责与客户交流,组织用户调查,书中后续又指出PM还要管理软件的生命周期,具体如设计、实现、测试、升级、迁移等工作,但这些工作对于不熟悉具体软件开发流程且没有直接参与软件开发的Program Manager又如何做到呢?

问题④:如何做好软件体验中的长期影响?

  • 问题来源:

    教材第十二章用户体验的要素中提到了“短期刺激”的弊端,但又如何做到用户在软件体验中的“长期影响”?

  • 我的理解:

    教材中写道短期刺激如冗余的动画和所谓手势操作会带给用户糟糕的体验,无异于画蛇添足;通过查阅资料,我了解到苹果公司在软件体验中的“长期体验”方面做的非常好:就APP启动时的过渡动画而言,Android在应用启动时的过渡动画大都只是从A到B的“位移”,或者干脆不做过渡动画。而IOS却在这个方面下足了心思,苹果很聪明的运用了很多非线性动画,这些动画在很大程度上会给你很流畅顺滑的感觉,并且将这些过渡动画之类的图形处理应用的优先层级调整的十分靠前,而Android则相反。注重细节,这便是IOS总是比Android流畅的原因,这便是IOS给用户的“长期体验”好的原因。

问题⑤:如何确定正确的设计负载?

  • 问题来源:

    教材十三章中的效能测试小节里提到要在一开始确定正确的设计负载。

  • 我的理解:

    由于缺乏实际的软件开发经验,我始终觉得确定正确的设计负载是件很困难的事。就比如在准备搭建个人博客时服务器的选择:对于刚开始写博文的小明来说,512mb的内存可能就够用了,但万一他的其中一篇博文突然成为“网络爆款”,博客访问量猛增,服务器这时便会不堪重负,若不及时采取补救措施,甚至会导致数据丢失;而若一开始就选择较大容量与内存的服务器,大概率出现浪费的情况,不仅如此,实际的软件开发中,设计负载还要让客户满意,所以“设计负载”究竟该如何确定呢?


4.了解和调查源程序版本管理工具

GitHub

- 优点
    - 托管代码
    - 托管编程环境
    - Github Pages 可以为项目建立静态主页(即gh-pages分支), 也可以建立命名特殊的
    - 生态环境较好
    - 用户群体基数大,知名库多
- 缺点
    - 私有项目收费较高
    - 连接不稳定
    

Git

- 优点
    - 适合分布式开发,强调个体
    - 公共服务器压力和数据量都不会太大
    - 速度快、灵活。
    - 任意两个开发者之间可以很容易的解决冲突
    - 离线工作
- 缺点
    - 学习周期相对而言比较长
    - 不符合常规思维
    - 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息

Bitbucket

- 优点
    - 支持Hg,最易学易用,同时也支持Git
    - 完全免费的闭源项目,还支持5人以内的合作开发
    - 支持中文
- 缺点
    - 用户数量限制
    - 用户基数小,生态环境不如GitHub完善

猜你喜欢

转载自www.cnblogs.com/FourtyTwo/p/11502574.html
今日推荐