实习到现在已有两个多星期的时间,在这一段时间里我了解了很多学校没有
学到的东西。最初学习了一些与软件开发有关的基本知识,包括质量意识,项目研发流程,配置管理,工具与评审,安全意识培养等等。质量意识的学习让我对质量有了更深刻的了解,对企业来说质量就是对客户需求的满足,有一套很完善的业务流程体系来满足客户的需求显得尤为重要。克劳士比曾经说过:质量的定义是符合要求,而不是”好”,这句话完全切合质量的要求。在产品的开发过程中需要各个部门合作的同时也必须有一套完备的软件开发流程,包括七个技术评审点,四个决策评审点,一个发布点,一个GA点。在这个环节就反应了团队合作的重要性,一个项目的完成离不开团队中的任何一个人,不管他是开发,测试,质量或是配置管理人员。在整个过程中能力成熟度(CMM)也有很重要的作用,它对软件的描述,定义,实施,测量,控制和改进等过程提供指导,分为初始级,可重复级,以定义级,以管理级和以优化级五个不同的等级。软件的开发过程也根据项目特点分为瀑布型和迭代性。
配置管理课程让我认识了这个软件开发过程中非常重要的一环,它有效的保证了产品的完整性,一致性和可追溯性。在此过程中有启动与计划产品的配置管理,配置标识,基线建立(使开发人员保持同步),管理配置库,变更管理,配置状态发布,配置评审,软件版本管理(SVN),配置管理移交与关闭。在配置管理中很重要的还有配置项,基线和版本。其中配置项是一致性和可视性的基础;基线确保了团队中所有的开发人员工作保持一致,明确了责任人。在我的认知里配置管理最大的优点就是保证了所有的人员的操作都是基于最新的版本,我们在工作过程中也可以很方便的查找到之前做的版本。我们经常说团队合作对于软件开发来说很重要的,但是一般都是分工合作所以我们需要通过SVN等团队管理工具互相配合完成整个系统的开发工作。另一方面,我从刚开始的只知道开发和测试到现在明白一个优秀的系统的开发需要很多很多的环节,一环套一环,任何一个小螺丝松掉都会造成巨大的损失,不仅仅是金钱上的,有的事故导致顾客的身体健康受到威胁。11年的动车事故就造成了许多人的受伤,更有甚者造 成死亡。这么大的伤亡原因就是系统中某一个小部分出了问题,它让我深深的意识到软件行业必须要做到百分之百的严谨,所以在以后的工作中我也会更加的耐心更加的细心。
第一周的学习主要是科普了一些关于系统开发过程中许多重要的组成部分,第二周就具体模拟了网上鲜花销售系统的实现。在众多的选题中我们最后决定了这个题目,首先我们认为大家因为都经常网购,对这个系统包含那些模块比较了解,这样很快就可以讨论出大的框架;另一方面这个系统的一般需求比较简单适合我们短时间来完成。唯一的不足时鲜花销售系统的前台设计需要很多精美的鲜花照片这个是我们在后期没有办法完成的。选定系统后我们开始了紧张的工作。
在一定程度上来说这也是我第一次如此完整的参与一个系统的完成,在此期间遇到了很多困难,有很多地方都不是很懂,但最后都在我的队友的帮助下克服了。短短一周的时间从最初的开工会,需求分析说明书,概要设计,详细设计,代码实现,到最后的测试。时间很紧张我学到的东西也很多很多。开工会主要确定了我们将要做什么系统,每个人担任怎样的角色,系统要用的开发语言,用什么框架等等。在这个过程中我加深了对资料开发人员,配置管理员,系统设计工程师,模块开发工程师等角色的认识。需求功能说明书主要是对这个系统将要完成的功能进行分析,从而得到它的主要模块,根据模块分析完成该项目有几张表,每张表又有哪些内容。
一天的时间大家都在进行头脑风暴,根据自己在学校学的东西和自己的实践经验说出自己的看法,然后对大家的意见进行分析,整合得到最后的结论:分四个模块,用户模块,商品模块,订单模块,付款模块,但由于时间比较紧张而付款模块工作量又比较大,完成起来不太契合实际情况所以我们主要实现前三个模块。用户又分为普通客户和系统管理员用户两种,用加一个字段的方法对这两种用户加以区分;用户可以完成的操作员登陆,注册,修改自己的信息,查看商品信息以及订单信息。商品模块的主要功能是对商品信息的增加,删除,修改,查看;订单模块的主要功能是对商品进行增加,删除,修改,查看,其中花的品种也是通过字段加以区分,这样可以大大减少表的张数又能清楚地区别开花的种类,颜色等特性。概要分析主要是写出开发该系统的主要目的,它的使用人群,画出系统的功能模块图以及E-R图,时序图,直观的表示出系统的内部结构。详细设计主要是建立数据库,完成代码的编写,顺利实现预期功能。
在这个过程中代码的注释和编码风格也是一大学习的要点,适当的注释和好的编码风格可以让测试人员和审核代码的人更清楚的明白你的意思。最后是测试环节,这是系统交付前的最后一道程序,我们要尽可能站在客户的角度上分析该系统的功能是否符合客户的需求,前台的设计是否合理美观让进入这个网上鲜花销售的人有一个舒服,喜欢的感觉。在此过程中我 们每天完成预期的动作后会对大家的成果进行整合,然后是集体讨论验收,看看大家有没有做的不好的地方,最后在这个版本的基础上出一个修改版本。这个过程也是给我印象比较深刻的,第一天的时候大家作完分给自己的工作进行自查之后就把东西发给项目经理,由项目经理进行整合检查。但由于一个人的力量毕竟有限,而且自己整合之后的很多问题是自己检查的时候会忽略的,这就导致我们第一天上交的结果有很多细节问题出现,当文件被放到投影仪上的时候我们自己都觉得犯得问题太过基础,感叹为什么当时自己没有看见。为了防止类似的问题再一次发生我们在后来把文件放到投影仪上,大家坐在一起说说哪些地方做的好,哪些又是不应该出现的。
大家集思广益出的修改版本就更加严密和准确。一周后这个系统顺利完成了,虽然存在很多的不足,但在整个过程在我们也学会恨多东西,不在像以前一样有一个大概的想法就开始写代码而是学会分析好一切,不但要分析就还要把分析的结果实实在在的反应到纸上,在根据这些东西写代码。这样就很大程度保证了你的代码质量和预期的切合度比较高。
两周的实习已经画上句号,但学习却没有结束,相反我感觉才刚刚开始。在学校学到的东西和在实践中是不一样的。学校学的东西很死,知识面也比较窄以前做的练习的项目实用性也不是太强,实践让我觉得更有压力,因为身边有太多太多专业技能很强的人,他们都拥有丰富的实战经验,同是和他们聊天接触到的层面也更加丰富,在这样的环境下我会进步的更快。在这短短的时间了我学到了很多东西,交到了很多新朋友,在他们身上有很多值得我学习的地方,或许是很强的专业技能,或许是极好的耐心,开阔的视野,良好的逻辑思维能力。。。这所有的一切都让我更加坚定以后的路。在这段时间我的专业知识得到了很大程度的拓展同时也让我更加喜欢这个行业。我们以后完成的系统不再只是在电脑上运行一下,测试它可以顺利完成预期功能那么简单。一个大的项目需要好几十人用数月的时间来完成,你参与完成的项目很有可能就是你哪一天用到的一部手机或是在卖场用到的某一个简易操作,那个时候你才会更加深刻的体会到软件这个行业的魅力。因为这份魅力我有了更加坚定的决心会在以后的生活和学习中努力充实自己。学无止境,这个行业每天都会有不一样的精彩,我只有不断地吸收养分壮大自己才会在未来在自己喜欢的道路上走的更远更久。