现在的位置: 首页 > 综合 > 正文

软件工程一:对软件工程的基本认识

2012年05月18日 ⁄ 综合 ⁄ 共 2358字 ⁄ 字号 评论关闭

软工的基本认识

这里主要介绍三类,软件的分类,软件工程过程,软件的生存期模型

软件的分类

      软件开发是一个灵活性很强的工作,即使同样的功能给不同的人使用,需要设计的也不尽相同,比如说,同样要实现一个图书搜索功能,如果是给小学图书馆设计,就要符合小学生的需求,比如说多些图片的设计,而给老年人设计呢,则需要放大字体等等,就像搜狗输入法中会有老年人专用的皮肤,这也体现设计者的用心,好程序的背后总会有用心的设计者。所以软件的分类是必须的


软件工程过程

      这是指导整个软件开发的指南,这里包括软件从开始到结束的整个过程,包括制定计划、

需求分析和定义、软件设计、程序编写、软件测试、运行/维护,这六个步骤每一步的执行是保证项目成功完成的保证,以后将对这六个过程进行一一的分析。

软件生命周期

      其中包括:瀑布模型、演化模型、螺旋模型、喷泉模型、智能模型。

模型特点:

      瀑布模型:周期长,跟用户见面比较晚,从计划到和用户一起计划外,其他的部分用户和开发人员是分离的,用户不能直接把问题直接反应过去。

演化模型:由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次第一次只是实验开发,其目标只是在于探索可行性,弄清软件需求第二次则再此基础上获得较为满意的软件产品

    螺旋模型:多次原型反复并增加风险评估的开发模型

喷泉模型:有严格的数学理论和形式化的技术支持,但目前在所研究试验阶段,不能实现

      智能模型:1.通过领域的专家系统,可使需求说明更加完善、准确和无二义性。2.通过软件工程的专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。3.通过软件工程知识和特定应用领域的知识和规则的应用来提供对开发的帮助。但是,要建立适合于软件设计的专家系统,或建立一个即适合软件工程又适合应用领域的知识库都是非常困难的。

当然,用什么模型不是一成不变的,比如说对于一些简单的系统,大家都比较熟知里面应该有什么样的功能,瀑布模型就可以了,但是对于一些比较复杂的,或者是之前很少有过类似的系统,就需要结合实际考虑了,所以,要想选择模型,必须要先分析项目的特点。

 

 

对软件的基本认识

 i.             开发软件为什么要工程化
有很多人,尤其是很多学生存在这样的误区,平时感觉自己能用语言写一个闹钟,写一个记事本等一些小东西,就以为自己一个人就可以完成一个小的项目,所以很不理解为什么开发软件有时候不能让一个人独立完成,也有个人英雄主义在作怪。其实原因很简单,比如说,高中我们做题应该很有体会,感觉一张卷子一点问题也没有,但是等成绩下来的时候总不是一百分,为什么,因为我们很难发现自己的错误,哪怕是重复很多次,这是思维定势。

 ii.             软件开发与其说是技术活,不如说是规范活.

软件开发是程序员奇思妙想的时候,用什么方法都是随心所欲的,有的人则为了追求速度或者说是彰显个性而用一些很不大众的算法,以为这是体现自己高明的地方,恰恰相反,这真是不懂编程的表现,一般的项目一般都不是一个人来完成的,它分为开发阶段和维护阶段,然而维护阶段一般又非开发人员所为,所以如果代码技术性过于高,反而对后面的维护不利,另外,IT是个跳槽率很高的职业,如果一项工程没有完成就离开,剩下高明的算法要让谁看呢,出于对公司的考虑,最好还是规规矩矩,符合大众的口味。

iii.             文档的重要性
很多人,尤其是大学生,刚开始学习编程的时候,难免会有一些急功近利的想法,想快点做出点成绩,但是往往欲速则不达,就想前段时间做的机房收费系统一样,在一种完全没有文档的情况下,虽然最后做完了,而且也跑起来了,问题似乎也没有想象的那么多,但是其中的过程只有自己知道,代码啦,数据库啦都不忍心看,可以说是乱七八糟的,想加个数据库就加,想加个功能就加,很有文档,就像没有目的的去雕塑,雕成什么样,算什么样,而且很多情况是中途发现需要这个样子了,才发现,那部分材料已经被自己给去掉了,所做的程序自然没有规律可言,如果现在有人说那个机房收费系统那个功能要修改一下,我估计我的得全盘改动.

 iv.             开发软件为什么时间总是那么紧,开发的人总是那么累
曾经有过单纯的想法,为什么工作非要加班呢,多用些人不就行了吗,人多力量大嘛,但是自从软工看完后便觉得这种想法荡然无存了,其实,原因并不是说老板多黑心,而是取决于软件开发工作的性质,这是一项需要智慧的工作,首先,这不是工厂,没有机器,只有手工;其次,这里需要残杂很大一部分人文因素,比如说个人习惯,同样输出一个结果,两个人的算法往往就有很大的区别,所以参加人数越多,在项目中的不同因素就越多,因为各个模块之间的衔接问题就越大,所以参加人数应该是少而精,所以这也是为什么蓝精灵体中说程序员是“聪明而辛苦”,聪明在他们每个人都是一个设计师,辛苦在一项任务,自己又无可取代的位置,只能是自己的事情自己干。

 v.             如果自己无法适应社会中的潜规则,那么就学编程吧(不知道这样说对不对)
从我目前的认识来看,突然发现软件行业是整个社会的一片净土,这里不像其他行业一样靠嘴吃饭,更多的是需要能力,除非老板想赔钱,不然绝对不会用一个靠关系而不是靠技术的人来当项目经理,因为这个关系到整个项目生存的决定性因素;虽然同事之间保持着微妙的竞争关系,但是一个项目要想如期完成必须要和同事上司好好合作;做软件开发的每个项目的每个功能,无处不能体现全心全意为人民服务的宗旨,所以开发软件的人无疑又是心细如丝,必定是善良的,体贴的,嫁人就嫁程序员哦。所以,以此可见,这里的确是一片净土。

 

抱歉!评论已关闭.