做业属于的课程:https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesignhtml
做业的要求:http://www.javashuo.com/article/p-awxmclqg-dw.htmljava
我在这个课程的目标:python
(1)系统分析做为咱们专业的核心必修课程,其在软件组织中,分析与设计的做用是举足轻重的。本身也是但愿利用这门课程,把大1、大二两个学年所学到的在软件开发过程当中最重要的一些核心思想、设计模式等方面的知识贯穿起来,使本身可以有一个更加完整的知识体系结构,深入对软件工程的理解。git
(2)不管从提高本身的专业动手能力,仍是为得到一个更高的分数。本身都应该认真高质量的完成每一次的做业。本身也感受到每一次的做业设计的都很合理。特别是团队和我的项目时,应该利用所学的理论,从相反方面加以讨论软件系统分析与设计的方法、流程、工具与文档。实现从理论和实践两方面的能力同时提高。程序员
这个做业在哪一个具体方面帮助我实现目标:面试
本次做业针对性对博客园优秀的博文和教材进行了大量阅读,也使本身对软件工程这门课程和博客园这个工具备了一个更深刻的认识。同时也是第一次在博客园写文章,接下来的日子也会利用好这门课程的每一次做业和博客园的丰富文章来极大的丰富和完善本身的知识体系。算法
本身的博客地址:https://www.cnblogs.com/Slow-Walker/数据库
自我介绍:编程
我叫王柄钞,是来自2017级软件工程卓越班普通程序员一枚,爱好登山、打篮球、喜欢处处陪“girl”一块儿吃吃逛逛。本身认为本身动手能力仍是不错,追求突破和解决困难问题以后的成就感,遇事可以比较成熟稳重思考以后再作决定,可以吃苦、勇于挑战,记得曾经作的一个比赛,大概熬了一个月的通宵原本是不可能完成的项目,最终提交做品的时候仍是作出了比较满意的做品也取得了意想不到的成绩。有些时候总以为本身学东西老是比人家慢了一个节拍同样,可是相信本身只要可以持续性的努力就必定不会比人家差,正如本身的博客名Slow-Walker,I’ am slow-walker ,But I never walk backwards.c#
当初你是如何作出选择你所在专业的决定的?
回首两年前选专业的场景,其实那个时候本身对计算机这个行业不是很了解,也仅仅就知道他在将来就业还很是好,对于咱们这种家庭没有特别厚的背景的人学计算机可以经过本身的能力,走出属于本身的一片天地。模模糊糊就选了这个专业,从大学进来的时候本身想着,本身在大学里面必定要好好学,由于这专业学好了本身可以凭借本身的技术去创业开公司。
你认为过去一(两)年中接触到的课程是否符合你对你本身所在专业的期待,为何?
在过去两年里本身接触和学习的东西主要来自两个方面,第一个就是学校开始的课程的学习,第二个就是来自本身阅览和看的视频所学的感兴趣的方向的知识。都比较满意本身在刚刚大一之处对本身这两年的规划,惟一还有点不足的是本身学习的知识仍是比较零散,也但愿经过本身这一年的学习巩固和增强丰富本身转也课程体系。
你以为你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
自我感受软件工程学生将来有不少发展方向,所以针对本身也选了一个本身的将来发展方向,我喜欢大数据领域,我相信本身经过这三年一直朝着这个目标前进,不断曾强本身在这方面的知识,相信到即将大三结束工做面试活动研究生面试都能取得本身一个较满意的结果。
未来你会选择从事和你专业相关的工做吗?是的话给出你想去的城市、公司和岗位,否的话给出缘由
未来的我会选择从事如今所学专业的工做,固然想去的城市可以留在成都固然也是挺不错的,公司的话仍是但愿本身起初实习以及起初正式工做不该该只看中眼前的工资,而应该考虑将来五年深知十年的薪水,因此起初应该本着对将来学习和发展更有帮助的公司去上班。指望的固然仍是BAT这种大公司,岗位仍是想作大数据研发这一块,大数据架构。
自我感受你已经具有的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你作的最复杂的项目/做业。
自我感受本身以及具有基本的c、c#、java、python、PHP基本的程序设计能力,可以熟练的使用MySQL数据库,对面向对象、设计模式有比较深入的认识。本身写过的代码量至少应该有3万行+,本身作过最复杂的项目印象最深入的有两个。
第一个就是石工设计大赛给斯伦贝谢公司作的一个petrel插件,其实在开发这个插件业务不是很复杂,难的就是他的开发框架要用他本身的ocean框架是集成在vs里面的。遇到的最大的困难就是要去学习这些全英文开发文档,要去明白他的数据域以及数据结构是怎么样的。从项目启动到结束持续性的花费了一个月的时间,基本上天天最先睡觉也是两点。但最后仍是取得了一个满意的成绩。最终在这个过程提高的是本身的一个快速学习和克服问题解决问题的能力,使本身在将来开发过程当中有了更加向前的动力。
离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
其实针对本身如今像一个合格的本科生出去工做的话,本身专业知识上也主要差在本身学的东西还很零散,基础不够扎实,不能融会贯通,动手能力上还有待增强。在与人沟通协做的技能上还有必定的差距,特别是在编码这一块,自我感受一个真正合格计算机本科毕业生,本科毕业至少也得应该有10万+行代码量,也正是须要这样的代码量的不断练习咱们学的知识,才能丰富和融会贯通,使得咱们的知识体系结构更加完整,才能在写代码的过程当中不断改进,提高代码质量,我想这也是有些人能进一些大厂,然而有些人也只能进一些小公司的缘由所在。
对照以上你阅读的前人们的经历,你的选择是什么?
针对在老师们列出的优秀博文,其实他们不少都讲了一个共同的特色就是刚刚开始也比较菜,可是本身不肯意待在温馨的环境,都是经过一次次失败一次次前进,并在这个过程当中厚积薄发,最终达到了本身既定的目标。一样,本身的选择也是,我也首先会选择考取研究生,想经过这样一个平台不断提高本身的能力,再到后面工做的时候本身应该起步五年应该主要沉下心来厚积薄发,后面五年到十年才会实现由量变到质变的一个过程。
在这种选择下,你认为你相比其余同窗来讲有何优点,有何劣势?
优点的话主要是经过本身更高水平的研究生学习,相信本身将来的起点必定会比人家高,本身的将来对事物的认知水平也会有更加不一样的高度。劣势就是相比于同龄进入社会的人,本身晚出去三年,也许到本身毕业的时候人家已是有很强经验的项目经理了。
针对你的选择,你给本身的大三设定的规划安排是什么?
设定的目标,努力学好本身的课程,将本身的绩点有所提高,更加完善本身的动手能力和丰富本身的专业知识结构体系。争取把六级过了,争取可以有一篇尽可能高一点水平的文章和一张含金量较高的国奖。
你对于实现本身的梦想已经作了或者计划作什么样的准备?
所作的计划,首先就是天天认真按照本身的规定计划完成当天的英语学习,其次将来提高代码量和成绩本身努力完成每一次老师课后布置的做业,并上课积极与老师交流互动。针对课后,本身也正在准备参加数学建模国赛,以及后期的泰迪杯,以及主动学习相关的研究,相信本身可以在大三关键的一年多出一些成果。
针对性阅读以后的罗列的本书逻辑目录:
大马哈鱼洄游模型
程序数据结构算法 软件程序软件工程
软件工程定义
软件工程三步曲
单元测试
我的开发流程
我的能力的衡量与发展
初级软件工程师成长阶段
软件开发的工做量和质量的衡量标准
软件工程师的职业发展
代码规范
代码风格规范
代码设计规范
代码复审
结对编程
写了再改模式Code-and-Fix
瀑布模型Waterfall Model
瀑布模型的各类变形
Rational Unified Process统一流程RUP
老板驱动的流程Boss-Driven Process
渐进交付的流程Evolutionary DeliveryMVP和MBP
敏捷的流程
敏捷流程的问题和解法
敏捷的团队
敏捷总结
敏捷的问答
MSF 简史
MSF基本原则
MSF团队模型
MSF过程模型
MSF敏捷开发模式
MSF CMMI开发模式
软件需求
软件产品的利益相关者
获取用户需求用户调查
竞争性需求分析的框架 NABCD模型
功能的定位和优先级
计划和估计
分而治之Work Breakdown Structure
PM 是啥
微软PM的来历
PM作开发和测试以外的全部事情
PM 和风险管理
PM 的能力要求和任务
在一个项目中PM的具体任务
典型用户和典型场景
用例Use Case
规格说明书
功能驱动的设计
分析和设计方法
图形建模和分析方法
其余设计方法
从Spec到实现
开发阶段的平常管理
用户体验的要素
用户体验设计的步骤和目标
评价标准
基本名词解释及分类
各类测试方法
实战中的测试
软件的质量
软件的质量保障工做
从代码完成到发布
不一样频率和不一样覆盖范围的渐进发布
发布以后过后诸葛亮会议
创新的迷思
创新的时机
创新的招数
魔方的创新
针对第二章中单元测试的学习,对以前写过的一些程序试了一下更加深单元测试的理解,以前对这个没什么概念写代码就只管写代码了。也理解到了本身在写单元测试时应该要跟软件同步更新,而且单元测试要覆盖全部代码路径,单元测试能够把咱们的软件能作的不能作的事都在“单元”中表达出来。而且也感觉到了有单元测试的话后期出现的bug修复起来也比很容易。
针对本身的写的一个测试本身暑假写的java代码,感觉到单元测试的一个重要标准就是保持每一个测试的孤立性,即只测试本方法内的逻辑,若是遇到其它模块或其它借口的调用,则尽可能使用mock object来代替,在实际测试过程当中,若是一个类A中的一个方法须要调用到接口B、C、D、E、F、G(或更多)接口的时候,一般的作法,也是junit框架推荐的作法是将这些其它接口经过参数传递的方式供A使用,但这样形成的最直接后果就是A方法中的参数过多,代码难以维护且不美观,可能有些得不偿失。
然而过程当中也遇到的问题,怎么保持单元测试的孤立性呢,并且存在的问题还有就是,假如测试方法中的参数过多就会形成在被测试方法业务逻辑复杂,并且会频繁调用其它接口,如何减小参数呢?
针对第六章的敏捷开发的整个流程和疑惑,敏捷开发的路程,我的觉的若是可以掌控好开发的流程和节点,及时的了解进度与遇到的问题,及时发现可能隐患的延时问题,就能掌控好开发的流程了;针对于复杂的开发确实颇有用,回想以前本身开发的几个程序,只是简单的执行,使用敏捷开发并不适用,简单的东西也许敏捷反而不敏捷了;
回头先以前的开发过程,也都感受使用了里面的部分路程,本身最后总结的流程,首先是,快速的竟品分析。对市面上的同类竟品进行深刻的分析,提炼出产品框架,分析对比各竟品的优缺点,去其糟粕,取其精华。其次对用户行为数据分析。经过问卷,访谈等调查用户使用此类产品遇到的问题,收集反馈意见。再经过设计多套概念产品方案。设计产品框架,主要任务流程,最初能够设计多套交互方案,最后评审选出最优方案。再快速的视觉实现。定义产品主色和辅助色系,快速在一个典型的界面上进行多套方案的尝试,经过简单的用户测试,决定出符合用户预期的风格方案。最终高效配合,敏捷开发。技术人员根据交互原型和典型界面的视觉方案进行技术储备和框架搭建,最后对各模块精细化实现,最后产品上线。
在本书的第11章,我看了这一段文字“小飞:你是说构建就像是运球、传球。。。”,对于代码重构不是很清楚。我查了资料,基本上都是在强调重构的好处优势,重构就是软件产品最初制造出来,具备良好架构。因为随着时间的发展,需求发生变化,为了实现达到软件对的雪球,不得已要打破以前的架构方式。然而新修订的入户软件已经使得以前的变得面目全非,并限制以后功能的扩展。从而这个软件若是要重构的花费还比不如从新开发一个软件成本高。而重构在“软件系统的过程, 它不会改变代码的外部行为, 同时改善其内部结构。 这是一种严格的清理代码的方法, 它能够最大限度地减小引入错误的可能性。重构的实质就是,在编码可以考虑以后的维护和功能的扩展。”
然而如今对重构还有彷佛疑惑,针对什么时候重构,在刚刚开始开发的时候应该在那些方面应该考虑后面的重构?
针对第13章的阅读各类的软件测试,确实软件测试是软件工程中的一项重要的步骤,缺一不可,然而书中学会到了单元测试、构建验证测试、“探索式”的测试等待,然而我感受能够加一种测试方法,就是将用户和测试人员相结合的方式一块儿进行测试,这样的话经过用户的角度就可以更多的去发现问题,同事在他们测试过程过程当中,也能让他们发现问题,并及时解决问题,不至于到最后交付项目时候出现误差。
针对在在第16章中,阅读针对创新,文中谈到了创新,谈到了创新时机、创新的迷思和招数等。同事举例了创新的产品,其中对于一个魔方的销售,针对不一样的客户使用了一些不同的商业模式。然而针对软件工程开发领域创新到底什么样的才叫创新?要达到什么要求水平才能称得上创新?新的开发技术的出现算是软件工程的创新吗?
以前暑假作的项目都一直使用svn,用的过程当中一直注意的就是始终保持与SVN服务器保持同步,代码的版本控制,分支控制,必需要靠有权限的人才能操做。而本次使用的git让每一个用户均可以有本身的版本控制,能够用户更多本身管理本身代码的途径。
管理工具 |
简介 |
优势 |
缺点 |
Git |
开源的分布式的vcs(version control system)版本控制系统 |
能够先存储在本地,不会存在服务器死机就影响工做,拥有丰富的资料来进行学习查阅,开源的,大小项目都可管理,拥有良好的分支机制 |
兼容性很差,可能在上个版本的项目内容放到另外一个git版本会出错。 |
Gitup |
|
一、适合分布式开发,强调个体; 二、公共的服务器压力和数量都不会太大; 三、速度快, 成熟的架构,开发灵活; 四、任意两个开发者之间能够很容易的解决冲突; 五、离线工做,管理代码成本低,不须要依赖服务器; 六、部署方便。基本上下个命令就能够用; 七、良好的分支机制,可让主干代码保持干净。 |
一、资料少,学习成本比较大,学习周期比较长,要求人员素质比较高; 二、不符合常规思惟; 三、代码保密性差,一旦开发者把整个库克隆下来就能够彻底公开全部代码和版本信息。 四、不支持中文,图形界面支持差,使用难度大。不易推广。 |
Rational |
一种面向对象的统一建模语言的可视化建模工具。用于可视化建模和公司级水平软件应用的组件构造。 |
ROSE在UML建模方便太方便了,并且速度也比较快,支持分包,支持对软件过程的全程管理 |
ROSE好像不能作数据库设计,以前用的不支持c#,不能转化成c#框架代码,正逆向工程不是特别出色 |