这个做业属于哪一个课程 | 课程的连接 |
---|---|
这个做业要求在哪里 | 做业要求的连接 |
我在这个课程的目标是 | 经过这本书的学习,可以清晰理解软件工程、程序、和开发过程所须要的知识 |
这个做业在哪一个具体方面帮助我实现目标 | 看书写博客,在作项目的同时,关注需求分析、设计实现、测试与维护等必要过程 |
我是一个来自计算机科学学院软件工程专业的大三学生,当初选择计算机专业时,我就想着要努力把计算机学好学扎实,积极进取,不辜负这大学美好时光。以前选择计算机专业并非个人本意,当时本想学医,治病救人,但因为一些缘由选择了计算机专业。最开始的时候,本觉得本身对计算机不感兴趣,随着对计算机的深刻了解,也渐渐感觉到计算机的魅力。利用计算机,咱们能够开发出本身之前作不到的东西,学习HTML、CSS制做前端页面,js、jquery经过渲染,将页面的丰富化等等,这些都是咱们学习计算机带来的好处。
同时,我也是一个性格开朗,对一切新鲜事物都感到好奇的人。我喜欢说话,我也习惯于倾听。我心里细腻,可以很好的倾听别人的话语,所以你们都愿意向我倾诉他们的问题,而且我能提出很好的建议,帮助他们。我喜欢倾听别人经历的故事,无论是喜仍是悲,我也喜欢听一些光怪陆离的故事,每一个人都有本身不一样的成长,都会经历不同的故事,这些故事能够是使人难忘的,也能够是震撼人心的,我喜欢把它们记录下来,当本身碰到问题感到迷茫的时候,拿出它们,向他们的作法学习,攻克这丝迷茫。别人的经历是咱们最好的老师。我喜欢听音乐,喜欢听一些舒缓的音乐,我也喜欢看书,喜欢逗小孩等等。个人逻辑推理能力比较好,我喜欢在数学、物理方面花时间和功夫,只要我理解了一道题,从此这种相似的题就不会出现问题。而对于专业课,我但愿在最后这两年大学生活里能学到更多的知识,充实大脑。css
我是一个理科思惟比较好的人,当初高中数理化考试都能获得一个满意的分数。当时高三的时候,我就下定决心要考川大的临床系,但因为高考发挥失常,致使高考后分数不够,没上到这个学校,所以我爸就提议,要不就学计算机吧,计算机的前景也很好,并且也和数学这些逻辑联系的比较紧密,所以就选择了计算机。当时的我还未从从医的梦想中醒过来,还想着读其余学校的临床系,因为分数的限制,我不得不选择计算机专业,今后我就踏上了求计算机学之路了。虽然不情愿,但随着对计算机的深刻了解后,我才发现我对计算机的喜好也在逐年增长。经过计算机系统的基层学习,我了解到一个程序是如何在计算机中存储的,其中的数据又是怎样在寄存器或栈又或者堆中存储的,这些一切的一切,都是我在努力学习计算机组成原理后获得的重要知识。
大一大二两年接触到不少课程,像C语言、数据结构、计算机系统基础、软件设计模式、计算机科学基础等等专业课,都是技术层面上的专业课,在刚开始还不懂计算机时,觉得计算机课程非常无聊枯燥,天天对着一台电脑,敲着键盘,盯着屏幕,日复一日得生活,而当我真正接触到计算机时,我才知道计算机底层是多么得奥妙,计算机全部的内部结构都有它必定的道理,每一个结构对应的功能都是很是有条理的。计算机专业是我喜欢的专业领域,由于它涵盖的东西不少,多是其余专业接触不到同时很难理解,所以若是说高考再有一次机会选择专业的话,我必定仍是会选计算机专业的。虽然计算机不是我擅长的专业,但倒是我喜欢的专业。若是个人技术学的够好,可以有机会在腾讯的总部深圳去了解更多关于计算机的奥秘,我愿意用更多的时间去了解它。前端的网页设计是我一直想要学习的,若是能有一个好的前端技术支持的话,我想将个人好的设计理念运用在前端设计中,将个人想法和思考用网页的形式表达出来。html
大一大二这两年里,我学到了不少知识,除了学习计算机的部分语言(C、C#、Java)外,还学了一点专为web网页设计的脚本语言HTML,为了将网页作的更加美观大方,又去学习了HTML五、CSS3和JavaScript,学习了这三种脚本语言后,我可以本身独立的完成一个简单的网页设计,好比说,登录注册界面、导航栏、下拉列表等一些经过js渲染事后的功能更加多的简单界面。好比登录注册界面选择使用邮箱验证或者添加验证码来确保用户的真实信息等验证方法。为简化 JavaScript 编程,我又去学习了jQuery,它封装JavaScript经常使用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操做、事件处理、动画设计和Ajax交互,具备高效灵活的css选择器,而且可对CSS选择器进行扩展,极大简化了JavaScript的书写,用起来很是方便。为了加快网页的开发效率,我又去学习了Bootstrap框架,Bootstrap框架提供了优雅的HTML和CSS规范,它便是由动态CSS语言Less写成。它包含了丰富的Web组件,根据这些组件,能够快速的搭建一个漂亮、功能完备的网站。并且,Bootstrap自带了13个jQuery插件,对于jQuery的使用,大大加快了网页的制做。利用Amazing UI跨屏前端框架,更好的了解到了网页制做的乐趣。为了学习这些web前端的网页制做,我先要看网上的教程,但在看教程时,我都是用“意念“编程,不多去学习写本身的网页,所以当我真正作项目时,我才发现本身不能很流畅快速的写代码,所以我开始了学习web网页制做的代码之旅,虽然没学多久,但如今的网页制做的代码量也应该有2000以上了。而我作过最复杂的项目则是作一个购物平台,这个购物平台不仅是静态的展现商品,还要动态的从数据库中添加商品信息到网页上,并以动态的形式展示出来,出来登录注册界面,还要添加商品展现的主界面,每一个商品详情信息页面,购物车的信息页面,每一个商品的分类等一系列的页面,而购物车不只须要展现个人订单管理,还要实现数据的增删改查等功能,难度确实有点大。若要成为一个合格的本科毕业生,在专业知识、技能、能力上还要有很大的提高。好比说数据库的运用。当今社会是一个数据量繁重的人工智能时代,而数据除了相互要增删改查等功能,并且还须要最重要的一点,怎样去安全的存储这些数据是咱们须要解决的,所以这学期的目标是但愿可以努力将数据库学好,可以很好的利用数据库为咱们作事。一些技术上的知识也还有不少没有学,所以,除了数据库之外,我还应该学习有关web网页的其余知识,为本身可以快速有效的作出一个优秀的网页而努力。前端
我多是一个摇摆不定的人,大一时,目标明确,一心想要开始工做,想着大学毕业后就能找到一份和专业对口的薪酬不错的工做。大一结束后仍是秉承着毕业就找工做的宗旨,可到了大一暑假实训才发现本身的能力是多么的弱,和班上的同窗一比较,就发现本身在专业技术上不达标,一些专业知识也只是学了皮毛,根本没有深刻了解,所以个人选择发生了变化 -- 想要考取公务员,获得一个稳定的工做,安安稳稳度过一辈子。但上了大二,我努力学习专业知识后,才发现计算机的专业知识没有我想象中的那么难,只要认真努力肯下功夫肯花时间就必定能学好,所以大二时,我又选择就业。如今,大三了,我对计算机又有了一个新的认识。计算机是一门新兴的学科,因为以前大一大二花费在专业课上的时间不多,使得个人计算机代码方面很弱,而高度的考研复习阶段能够帮助本身把大一大二浪费的专业课时间补出来,若是能考上研究生,就能在研究生的这段时间里更好的了解计算机,学习计算的内部结构和组成原理,加强对计算机的认识,固然也能够在研究生这三年里把握当今计算机行业局势,跟随潮流的变化,把本身学的更增强大,为本身就业作准备。由于个人逻辑推理能力和算法能力比较好,并且能在短期内接受新兴事物,所以我以为本身能够尝试一下考研。为了顺利考上研究生,我须要在大三这一全年里开始着手准备数学、英语、思想政治、专业课。由于学习英语是个长期的积累过程,所以如今就能够开始英语的复习了,而数学科目包括高数、现代、几率统计,这些科目也都须要大量的时间去学习,而思想政治对于咱们理工科的学生们来讲,可能须要的也仍是时间,合理运用这些时间,争取考个好的成绩,报考好的大学,不负这些年的准备。若是能考上研究生,我想学习web前端页面的设计,作一个平面UI设计师,这是个人梦想,也是我要努力的方向,为了实现它,我更应该好好努力,一步一个脚印,不要急功近利。首先我须要努力奋斗一年考上研究生,考上研究生后,学会合理利用本身的零碎时间,一步一步充实本身,最后实现本身的梦想。jquery
学习了《构建之法》这本书,我了解了不少有关软件工程的模式,文档的做用是咱们软件开发者的很是重要的一点。何为软件,软件就是程序加上相关文件,按照特定顺序组织的计算机数据和指令的集合。由于邹欣老师的这本《构建之法》,让我对程序,软件、软件工程、文档、团队合做、敏捷开发有了更深一步的了解。但仍是有些不懂得地方:linux
敏捷开发是一种新型软件开发方法,也是一种能应对快速变化需求的软件开发能力。敏捷开发(AgileDevelopment)是一种以人为核心、迭代、按部就班的开发方法。它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导咱们用规定的环节去 一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发。敏捷开发须要每日例会,须要团队每一个成员在同一时间,同一地点,在相同的地方面对面开会汇报昨天或者当天所作的工做量。但若是 团队成员不能知足以上条件,那怎么办?敏捷每日例会的要求达不到,不能面对面沟通,不能了解其余人在作什么,当前项目计划进展如何,是否遇到了问题,减小了发现问题的机会,这个时候又该怎么作?而书上113页只提到了这个问题,却没有明确的指出该问题的解决方法。虽然须要文档和其余辅助工具的帮助,但若是长期不能面对面交流又该怎样解决?git
需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员通过深刻细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而肯定系统必须作什么的过程。 但需求分析是软件开发中很是重要的一步,若咱们的开发模型是按照瀑布开发模型开发的,若咱们对用户需求没有一个好的认识和了解,等软件开发完成后,用户不能按照本身期待的软件功能,下降了用户满意度,可能致使后面不少补课预料的结果。所以,如何在咱们软件开发前能更好的了解用户的需求?书中P151中提到软件团队能够分析技术的发展趋势以及产业的变化,社会的发展趋势,推测用户的新需求。那么应该怎样设身处地,替用户着想引出用户需求呢?咱们又该如何掌握用户的新需求?若是软件开发不能一次性知足全部的利益相关者的要求,那咱们又应该怎么作呢?需求分析相关资料github
一个项目经理能正确的协调团队内部外部,调配各部门资源和时间,有效的进行风险管理,保证一个项目顺利按计划结项,根据时长和用户需求,协调各部门资源,正确的把我产品的定位和方向,解决用户的痛点,持续优化产品。教材P188页针对项目经理PM须要的能力进行了分析:观察、理解和快速学习能力;分析管理能力;必定的专业能力。这些能力都是一个项目经理必不可少的能力要求,但我认为一个优秀的项目经理应该具有更多的能力,如:
1.应变能力:应变能力是指天然人或法人在外界事物发生改变时,所作出的反应,多是本能的,也多是通过大量思考过程后,所作出的决策,对于一个好的项目经理,应该具备随机应变的应变能力以适应当前社会的变化;
2.影响力:一个良好的影响力,不只能增长团队成员对项目经理的信服力,还能让团队成员将项目经理所提出的建议放在心上,并付诸实践。
3.项目经理要与明确的目标定位和总体意识。项目是一个错综复杂的总体,它可能含有多个分项工程、分部工程、单位工程,若是对整个项目没有目标定位和总体意识,势必会顾此失彼。web
根据书上Stone网站中卖家吴石头经过他儿子吴小石头在网站上卖石头的例子告诉咱们,软件不是为全部人服务的,因从小部分出发,明确的定义谁是咱们的用户,最后肯定咱们的用户群体(简称典型用户)。利用 吴小石头和刘兰的故事,告诉咱们场景的不一样之处。可是,场景应该怎么区分?怎样找到场景的特殊之处?怎样重点描述场景中的特殊因素?这个场景如何让用户满意?P213中经过讲简单的故事来传递信息,那么,怎样讲故事?讲故事的技巧又是什么?P214中“增量开发,逐渐构件整个系统"中的”增量开发“又是什么?如何作到增量开发?增量开发的优缺点?为何不能用瀑布开发?原型开发?它们之间的区别又是什么?(资料详看:增量开发 瀑布模型、增量开发、原型化开发、统一过程模型(RUP)之间的区别)算法
表达数据的流动(Data Flow Diagram)简称DFD。DFD从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。如书中P227页所示,当咱们关注数据在不一样的实体之间依赖必定的规则流动的时候,DFD是一个很是合适的工具。P228中提到,DFD能够将数据分红不少不一样的数据流,若是将数据的操做进一步细分,又会造成一个新的、更低层次的DFD,这些数据流能引导设计者全面设计系统的信息处理流程。可是,怎样合理的将数据中的数据进行划分来表示不一样数据的流动?又怎样将已划分的数据流进行再一次的细分以获得安全的系统设计?若盲目的胡乱划分出现了严重的后果后又该如何去作?数据库
源程序版本管理也称源代码版本控制,源代码版本控制的基本原理以下:
在服务器端创建该项目的数据库,并保存你选定的项目源文件的第一个版本。客户端任一用户要得到某源文件的修改权利,需进行check out操做。以后客户端通常每完成一个无编译错误的版本想保存的时候,进行check in操做,将当前版本保存在服务器端上并成为最新版本(注:不是覆盖之前的)。任一客户端能够方便地获得服务器上的文件的任意版本(若是有权限的话)。通常还实现了一个重要的功能是版本比较,任一客户端能够利用版本控制工具对某文件的不一样版本进行版本比较,它会标记出不一样版本的同名文件的不一样点,能够轻易地看出版本内容的演化。
若是没有软件版本管理,最大的麻烦是工做成果没法回溯,发生工做成果被覆盖或丢失等问题。随着工做的进展新的程序覆盖了老的程序,当忽然发现新程序有问题而老程序正确时怎么办?那只能重写老的程序来覆盖新的程序。过一段时间又发现原来的老程序有问题,而解决方法在原来的新程序中……为了不成果被覆盖,不少人早期采用手工管理版本的方式,例如当一个新版本产生时用当时的日期来命名文件夹,而后再复制一下之后的修改在复制的文件夹内进行,这样上一个版本就被保存下来了,周而复始不一样的版本不会被覆盖。
1.若是保留结果过于频繁,将会致使产生大量的有着重复内容的文件夹,庞大的物理空间,管理起来很麻烦;
2.若是保留旧版本的时间间隔太长,可能产生某些有用的老程序没法回溯;
3.容易产生版本的混乱,若是是团队开发软件,这种简单的方法更难解决问题的本质了。
软件研发和管理过程当中会产生许许多多的工做成果,例如文档、程序和数据等,都应当妥善地保管起来,以便查阅和修改。若是把全部文件一股脑的塞进计算机里,那么使用起来很麻烦。
凡是归入版本管理范畴的工做成果统称为配置项主要有两大类:
1.属于产品的组成部分,例如需求文档、设计文档、源代码、测试用例等等;
2.在管理过程当中产生的文档,例如各类计划、报告等。每一个配置项的主要属性有名称、标识符、文件状态、版本、做者、日期等。配置项及历史纪录反映了软件的演化过程。
版本控制的目的是按照必定的规则保存配置项的全部版本,避免发生版本丢失或混乱等现象。配置项的状态有三种:“草稿”、“正式发布”和“正在修改”
配置项的版本号与配置项的状态紧密相关:
(1) 处于“草稿”状态的配置项的版本号格式为:0.Y.Z
(2) 处于“正式发布”状态的配置项的版本号格式为:X.Y。 通常只是Y值递增,当Y值到达必定的范围时X值才发生变化。
(3) 处于“正在修改”状态的配置项的版本号格式为:X.Y.Z。 通常只增大Z值,当配置项修改完毕,状态从新变成“正式发布”时,将Z值变为0,增长X.Y值。
项目管理软件是指专门用来帮助计划和控制项目资源、成本与进度的计算机应用程序。主要用于收集、综合和分发项目管理过程的输入和输出。传统项目管理软件包括时间进度计划、成本控制、资源调度和图形报表输出等功能模块,但从项目管理的内容出发,还应包括合同管理、采购管理、风险管理、质量管理、索赔管理、组织管理等功能。若是把这些软件功能集成、整合在一块儿,即构成项目管理信息系统。
优势:
1.Github支持多人同时维护庞大的开源代码(linux),因此它的分支能力强大,体验好。
2.Github除了基本的服务之外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协做图谱(报表)、代码片断分享(Gist)等功能。
3.Github使用的基于Web的代码托管服务.
4.Github支持离线提交,分布式推送拉取,使得代码层面的协做至关流畅。
缺点:
1.Github提交大文件没法成功
2.Github不是捕捉创意过程和记录创意点子的最佳工具
优势:
1.Microsoft TFS是一个团队工具,贯穿需求,开发,测试,发布各个流程提供自动化工具。(与开发工具无缝集成)
2.Microsoft TFS提供源代码管理、 数据收集、 报告和项目跟踪(与Project工具集成,方便任务跟踪)。
3.Microsoft TFS内置BUG管理工具,提升开发效率
4.开箱即用的Microsoft TFS就集成的自动生成和发布功能。能够实现修改代码之后,生成和发布自动完成。
5.Microsoft TFS的全部源代码和版本信息都存储在数据库中,在大型软件研发团队中,能够大幅提高数据的查询和存储速度。同时,基于数据库存储,系统管理员能够方便的备份和还原Microsoft TFS中的任何数据。
缺点:
优势:
1.Bitbucket免费支持私有仓库,提交大文件时速度很快,并且私人项目免费,且不限容量
2.Bitbucket无限制的磁盘空间
3.Bitbucket灵活的权限控制、Bug 跟踪等优势
缺点: 1.Bitbucket不开源