@zhangzexiang
2017-07-26T15:44:56.000000Z
字数 1498
阅读 1240
未分类
软件已经深入到我们生活的方方面面,了解软件工程,了解软件工程的属性。
软件开发具有复杂性、一致性、可变性、不可见性。
软件开发是一种人类高度抽象的活动,软件是复杂的,像那些高级云计算,Google、Amazon、阿里云 所需要的服务器超过100万台,里面的数据调用非常复杂。
软件不可能独立的存在,它需要依附一定的硬件、网络、操作系统,一个软件的应用的调用很有可能会同时用到几个服务器共同执行,这几个服务器的地址甚至都不在一起。软件与不同服务器之间的接口是需要统一的。
软件是需要不断快速更新换代的,因为用户的需求不断的再变。
软件是一种看不到摸不到的逻辑实体,没有形体,在开发过程程序员只能看到程序代码,并不能直接看到软件开发后的效果,所以给开发管理增加了很大的困难。
1956-1967 史前时代
软件开发没有方法可循,软件的设计实在开发人员头脑中的隐藏过程,60世纪中期发生过软件危机。
1968-1982 瀑布过程模型
1968提出“软件工程”概念,使用结构化开发方法,瀑布式软件生命周期模型成为典型。
1983-1995 质量标准体系
提出了面向对象开发方法,软件过程改进运动,CMM/ISO9000/SPICE等质量标准体系。
20世纪90年代至今
敏捷开发方法流行起来,快速迭代、增量开发,配以更紧密的团队协作,能有效应对需求变化。
为了增加软件的质量、提高开发速度,人们开始采用搞工程的方法来搞软件开发。
这里面包含三方面,开发过程、开发方法策略、开发工具。
5.1 开发过程
5.2 开发方法
从下到上有四步,面向过程,面向对象,面向服务。
知乎李黄河的回答
所谓的面向,就是为了解决系统在从简单到复杂过程中,大家采用的解决方法。
* 小企业-大企业-集团-跨国集团
* 小企业(简单的面向对象编程,数据库+服务端+浏览器)
* 大企业(面向组件,把一个个比较独立的业务模块约定好接口,开发成组件。以后再有类似的功能模块,直接调用这个组件,即节省开发成本,又容易维护。)
* 集团(SOA,单点登陆,有了portal,有了搜索服务,有了知识库)
* 跨国集团(双机,热备,负载均衡,以前用的IBM的主机+Oracle数据库+EMC的存储,再后来买更贵的性能更好的。慢慢的你发现,企业挣的钱都他妈的给了IOE。你开始考虑分布式,开始考虑使用开源产品。)去ioe01 去ioe02
5.3 开发策略
- 不重复造轮子(库函数、类库、文档模板、网页模板、设计模式、组件、框架)
- 将一个复杂大问题,拆分为若干简单小问题,最后在组装。
- 将软件看做生命,功能从简单到复杂,小步快跑,快速迭代。
- 各个软件质量特征看总体性价比。
5.4 开发工具
开发人员素质要求:
* 良好读写代码的能力
* 较强责任感,自我提升,自我反省总结,要对自己写的代码负责任,要对自己的代码所造成的用户体验* 负责任。
* 职业道德:对代码品质的保证,对公司秘密的保护等等 容易与人交流