《系统分析与设计》个人第一次作业:阅读与准备

这个作业属于那个课程 课程的链接
这个作业的要求在哪里 作业要求的链接
我在这个课程的目标是 充实自己的编程理论
这个作业在哪个具体方面帮助我实现目标 对这本书有一个全局观

关于我

  1. 我的博客主页,您们可以到我的博客中尽情的提出您们的宝贵的意见,这样可以让我有进一步的提升。
  2. 当然,说到这里,您们肯定还不认识我。我是一名大三在校生,通过两年的校园生活以及专业课程的学习,对于编程有一定的基础(其实编程能力可以说是怎一个“一塌糊涂”能形容得了的)。当然在学习之余肯定还是有一些业余活动,或者说业余爱好的——那就是打篮球啦,篮球陪伴我的时间挺久的了,从初中开始接触的篮球,一直到现在(虽然还是打的不行),但是好歹还是强身健体了。接下来通过这门课程继续深入了解我们专业——软件工程,通过学习现代软件工程充实自己的编程理论。静下心,沉住气,接下来开启学习的必然之路。

阅读与思考

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

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

    在大学之前的生活中我很少有接触电脑的机会,因此电脑对于我来说是神秘的。正是因为有了这一份神秘感,在我接触了电脑过后不由自主的陷入了。在了解过不同电脑,当时并不知道操作系统是什么,就只是单纯的认为电脑都是一样的,没什么区别,要是有那么一定是外观的区别。在高中时期,看着同学们经常出校上网玩游戏,这时我知道了软件工程开发师。由于小时候经常玩“小霸王“游戏机,当时对于它是有一种近乎痴迷的状态,这也是选择我们软件工程的原因之一。在选取志愿的时候,在近几年热门的专业中,选出了两个专业作为我的首选专业——软件工程和临川医学,不过后面考虑到种种原因以及我对专业的渴望程度,我最终还是选择了软件工程,也算是圆了儿时的一个梦。

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

    这两年中接触的课程,部分课程是符合我对自己所在专业的期待的,然而另一部分课程并不在我的期待之中。在学校学习的这两年,我从一无所知的小白慢慢成长了。C语言在我的一张白纸写写画画,留下了点点墨迹;数据结构教会了我数据不同的存储结构;概念实习让我接触我人生当中的第一门面向对象语言——c#,通过对该门程序语言以及相应工具的使用,在老师的带领下我们完成了我人生中的第一个游戏。看着游戏的运行,脸上的笑容根本隐藏不了。可以说专业课程还是挺符合我的期待的,但又是不符合的,因为部分课程过于浅显,只能说是入门,接下来的路只能由我们自己走。总的来说,过去两年中接触到的课程大致符合我对自己所在专业的期待。

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

    通过两年的接触,我觉得我所在的专业是我目前喜欢的领域,但是要说到我目前擅长的领域,我个人觉得就该阶段,计算机还不是我擅长的领域。通过编程解决一些问题,我会感觉到心情愉悦,通过对一些项目的了解,我觉得还是挺有趣的,虽然我现在还没有参与进去的能力。但是这并不妨碍我对该领域的喜欢。由于目前个人技术的不成熟以及很多专业知识的欠缺,在计算机领域,我并不能称得上是擅长该领域。不过,我相信在我付出努力,不断学习,不断进步,在不久的将来,计算机肯定会成为我擅长的领域。

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

    这肯定是必须的必呀,接触软件工程的两年时间,我慢慢发现了软件工程的魅力。虽然说,现如今很多大学生都从事着与他们大学时期所学专业不相关的工作。我觉得我应该不属于这一类人。我必将投身于IT事业之中,从事软件开发的相关工作。就目前而言,杭州、深圳、北京、上海、广州这些发展的很好的大城市是我想要去的城市。杭州的阿里巴巴,深圳的腾讯,北京的新浪、京东,广州的网易,我相信这些公司都是大多数IT人员理想的公司,当然我也不例外。至于岗位的话,我个人想作为一个软件工程师,立足于IT领域。

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

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

    经过两年时间的学习,我了解了WEB开发的部分相关知识,数据结构,面向对象设计思想,编程范式,软件开发过程中的设计模式。针对编程语言来说的话,我编写过C、C#、Python、HTML的代码,对这些编程语言都有一定的了解。写过的代码量,具体有多少我也不知道,每天都或多或少的敲一点,亦或者修改代码。在已经写过的代码中,最多的肯定还是for循环语句、if条件判断语句、以及输入输出语句。初略估计代码量应该有上千行了。就目前而言,做过最复杂的项目应该就是基于SSM的酒店管理系统了吧,搭建数据库,建立数据库模型,运用spring框架来完成该项目。还好战斗的人不止我一个,通过小组成员的共同努力最终还是完成了。

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

    有很多的软件都还不会使用,比如Photoshop,当我们需要制作logo等图的时候,只得求助他人的帮助,在专业知识上面仍然有很大欠缺,很多仍然处于表面的理解,深层次的理解不够,很多时候缺乏独立思考的能力与习惯。对于专业软件的使用也停留在表面,就像数据库SQL Server软件的使用依旧不能很好地使用,对于数据库的操作目前一直停留在增删改查的地步。编程思想方面的欠缺也挺多的,也就是理论不足,技术不足,最缺乏的还是项目的实战经验,不能很好的将理论运用到实战中去。

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

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

    在前面我提到了,我觉得我个人的理论知识储量仍然显得比较少,因此,我想选择继续深造(考研)。先继续充实自己的知识量,万丈高楼平地起,最主要的就是打好地基,在接下来的学习中,需要的是将自己的基础打好,在研究生阶段,可以多参与一些项目积累经验,将理论运用到实践中去,积淀技术。而且由于现在的大学本科学历是较为常见的,在同等条件下,研究生还是比较方便找工作一些的,因此选择考研也是为了以后的工作(最主要的原因还是我目前的技术很菜)。

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

    在这种选择下,我的优势应该是有耐心,能静下心去看代码、了解技术,至于劣势的话,应该就是接受新知识的速度有点慢吧,总是要花费比别人还要多的时间去学习了解他们很快就看懂的知识。

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

    先将大三上学期的专业课认真的学习,在空余时间里继续深入学习Python。身体是革命的本钱,因此每周的锻炼是必不可少的。还要去了解学习对我们开发过程有帮助的软件的使用方法,同时还要参与到一些项目的开发过程中去,积累项目实战经验。接下来,还需要学习数学知识、英语、政治以及相关专业知识备战考研。

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

    梦想很丰满,现实很骨感。对于我的梦想,我只能说:不放弃、不抛弃、坚持下去,总会有实现的那一天的(当然这句话说不定也只是想想就行了)。为了梦想的实现,还是先得考研,继续深入学习,积累技术,积累经验。

相关问题

  1. 《构建之法——现代软件工程》p250中提到了用户的体验,这里的体验指的是性能体验还是视觉体验呢?其次当性能与用户体验发生冲突了,这个时候我们是否应该和用户交流让用户选择(以交流的形式为主)还是说做出来两个版本让用户通过使用来选择他最后的使用版本(以实际体验为主)?如果设计出来的系统针对的用户很多的时候那么在性能之间与用户体验之间我们又该如何选择呢?
  2. 书中p151中提到了软件的需求,通过了解用户的需求来进行对软件的设计,那么使用用户调研的方式无疑是一种很好的方式。然而使用用户调研的方式,只是了解到用户该阶段的想法,随着开发时间的流逝,如果用户觉得之前的想法跟不上现有的节奏,需要改变需求,亦或者说就连用户本人都不能清晰的提出他对这个软件的需求(只是说了部分界面的要求,多数实际功能描述的很模糊)或者说要求时,那么我们这个时候又应该怎么做呢?换句话说,就是在还未完成上一次的软件需求,这时用户的需求又发生了改变,这种情况我们应该怎么应付?
  3. 在第十六章中看到了“效能过剩”这一概念,那么我们在设计过程中到底应该是努力做到我们能做到的最好,还是说做的刚好满足用户需求就行了?就目前市场上的笔记本电脑基本都是性能过剩,不过这样电脑的使用寿命会较之相对长一点。如果我们做软件的时候向制作电脑一样性能过剩,后面用户增多的时候也不需要做太多的改动。而如果当时做的时候就只是刚好满足当下的用户需求,那么后期还会有较大的改动。而如果效能过剩,那么我们软件制作的成本也会增加。因此,在软件设计过程中,我们到底应该选择“效能过剩”的模式还是应该选择“刚好满足需求的模式”?
  4. 书中p257中提到了“不让用户犯简单的错”,用一些限制条件将原本很容易出现的失误变为更加困难。从这么一句话中也就是体现出了,程序的功能的实现以及程序功能的使用都是由开发人员通过代码控制实现的。飞机中的工作人员肯定想让呼叫乘务员是真的呼叫乘务员而不是误碰导致的,而飞机中的乘客肯定是想更加方便快速的寻求乘务员的帮助,那么此时我们应该采取“限制的方式”来满足乘务员的需求还是满足乘客的需求呢?
  5. 在书中的第六章——敏捷流程,是一种快速开发软件的一种开发方法,这个开发方法的驱动核心是人,需要做到每日一会,报道各自的进程,根据相应的进度,来确定下一天的工作量。那么敏捷开发过程中,团队分工中是一个人做一个模块的好,还是每个模块由几人协商完成?如果每个模块只是由一个人去完成,然而这个人中途出了事故,那么他那个模块的进度不知道的时候,又应该怎么做?如果每个模块都是由几个人一起做,那么,发生思想以及技术中途的时候又应该怎么做?在团队中,不能进行有效的沟通时(万一有人失联),又该采取怎样的措施?

源程序版本管理工具GitHub、Git、Bitbucket

GitHub

优点:

1.Github支持多人同时维护庞大的开源代码(linux),所以它的分支能力强大,体验好。

2.Github除了基本的服务以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。

3.Github使用的基于Web的代码托管服务。

4.Github支持离线提交,分布式推送拉取,使得代码层面的协作相当流畅。

缺点:

1.Github提交大文件无法成功。

2.Github不是捕捉创意过程和记录创意点子的最佳工具。

Git

优点:

1.适合分布式开发,强调个体。

2.公共服务器压力和数据量都不会太大。

3.速度快、灵活。

4.任意两个开发者之间可以很容易的解决冲突。

5.可以离线工作。

缺点:

1.资料少(起码中文资料很少)。

2.学习周期相对而言比较长。

3.不符合常规思维。

4.代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

Bitbucket

优点:

1.Bitbucket免费支持私有仓库,提交大文件时速度很快,而且私人项目免费,且不限容量。

2.Bitbucket无限制的磁盘空间。

3.Bitbucket灵活的权限控制、Bug 跟踪等优点。

缺点:

1.Bitbucket不开源。

posted @ 2019-09-11 16:14  Linls  阅读(242)  评论(1编辑  收藏  举报