软件开发要融入工程化的思想,要有高度的设计能力,关注更多的软件运行属性和设计质量属性,同样的系统,不同的软件人员会做出完全不同的软件,正规,高效的开发团队着重于功能,性能,可维护性,可扩展性等质量属性,不仅仅只关注代码,而更要上升为设计,复用等。众所周知,app开发的出现值得很多人的关注,激起了整个市场的波澜。
还有更高层次的设计开发,软件重构,模块化,系统构架,搭建统一软件平台,度量软件质量等软件开发人员,要作的事情太多了,软件实在是一个浩大的脑力工程,甚至会让人觉得这是一个投入产出比最低的行业,因为要学习的知识实在太多了,每时每刻都要处于不断的学习和更新当中
这是指导整个软件开发的指南,这里包括软件从开始到结束的整个过程,包括制定计划、需求分析和定义、软件设计、程序编写、软件测试、运行维护,这六个步骤每一步的执行是保证项目成功完成的保证,以后将对这六个过程进行一一的分析。
一、软件生命周期
其中包括:瀑布模型、演化模型、螺旋模型、喷泉模型、智能模型。
瀑布模型:周期长,跟用户见面比较晚,从计划到和用户一起计划外,其他的部分用户和开发人员是分离的,用户不能直接把问题直接反应过去。
演化模型:由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次第一次只是实验开发,其目标只是在于探索可行性,弄清软件需求第二次则再此基础上获得较为满意的软件产品
螺旋模型:多次原型反复并增加风险评估的开发模型
喷泉模型:有严格的数学理论和形式化的技术支持,但目前在所研究试验阶段,不能实现
智能模型:1通过领域的专家系统,可使需求说明更加完善、准确和无二义性。2通过软件工程的专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。3通过知识和规则的应用来提供对开发的帮助。但是,要建立适合于软件设计的专家系统,或建立一个即适合软件工程又适合应用领域的知识库都是非常困难的。
二、对软件的基本认识
1、开发软件为什么要工程化
有很多人,尤其是很多学生存在这样的误区,平时感觉自己能用语言写一个闹钟,写一个记事本等一些小东西,就以为自己一个人就可以完成一个小的项目,所以很不理解为什么开发软件有时候不能让一个人独立完成。其实原因很简单,因为很难发现自己的错误,哪怕是重复很多次,这是思维定势。
2、软件开发与其说是技术活,不如说是规范活
软件开发是程序员奇思妙想的时候,用什么方法都是随心所欲的,有的人则为了追求速度或者说是彰显个性而用一些很不大众的算法,其实是不懂编程的表现,一般都不是一个人来完成的,它分为开发阶段和维护阶段,然而维护阶段一般又非开发人员所为,所以如果代码技术性过于高,反而对后面的维护不利,另外,it是个跳槽率很高的职业,如果一项工程没有完成就离开,剩下高明的算法要让谁看呢,出于对的考虑,最好还是规规矩矩,符合大众的口味。
3、文档的重要性
很多人,尤其是大学生,刚开始学习编程的时候,难免会有一些急功近利的想法,想快点做出点成绩,但是往往欲速则不达,在一种完全没有文档的情况下,虽然最后做完了,而且也跑起来了,问题似乎也没有想象的那么多,但是其中的过程只有自己知道,代码数据库啦都不忍心看,可以说是乱七八糟的,想加个数据库就加,想加个功能就加,很有文档,就像没有目的的去雕塑,雕成什么样,算什么样,而且很多情况是中途发现需要这个样子了,才发现,那部分材料已经被自己给去掉了。
软件开发工作的性质,是需要智慧的工作,首先,这不是工厂,没有机器,只有手工;其次,这里需要残杂很大一部分人文因素,比如说个人习惯,同样输出一个结果,两个人的算法往往就有很大的区别,所以参加人数越多,在项目中的不同因素就越多,因为各个模块之间的衔接问题就越大,所以参加人数应该是少而精,所以这也是为什么蓝精灵体中说程序员是聪明而辛苦,聪明在他们每个人都是一个设计师,辛苦在一项任务,自己又无可取代的位置,只能是自己的事情自己干。
文章来源: