软件工程方法
软件工程方法
1、软件工程方法
- 面向过程: 以算法作为基本构造单元,强调自顶向下的功能分解,将功能和数据进行一定程度的分离;关键词:SASD
- 面向对象: 以类作为基本单元,对象是类的实例化,对象之间以消息传递作为基本手段;关键词:OOD、UML、OMT
- 面向构件: 寻求比类的力度更大的且易于复用的构件,期望实现软件的再工程;关键词:CORBA、DCOM、J2EE
- 面向服务: 在应用表现层次上将软件构件化,即应用业务过程由服务组成,而服务由构件组装而成;关键词:WSDL、SOAP、OWL、UDDI、XML、HTTP
2、软件工程工具
3、软件开发的基本策略
3.1 软件复用
构造一个新的系统不必从零做起,直接复用已有的构件进行组装;
构件是经过反复使用验证的,由其组成的新系统具有较高的质量;
软件复用不仅仅是代码复用,可以涵盖如下:库函数、类库;模板(文档、网页等);设计模式;组件;框架等
3.2 分而治之
将一个复杂的问题拆解成若干个简单的问题,然后逐个解决;
来源于人们生活与工作的经验,完全适合于技术领域;
3.3 逐步演进
软件开发是自底向上逐步有序的生长过程;
小步快跑:每走完一步再调整并为下一步确定方向,直到终点
3.4 优化折中
优化:优化软件的各个质量特性,如运行速度、资源利用、用户体验
折中:通过协调各个质量特性,实现整体质量的最优
4、ISO9126质量模型
4.1 功能性
适合性:当软件在指定条件下使用,其满足明确和隐含要求功能的能力
准确性:软件提供给用户功能的精确度是否符合目标
互操作性:软件与其他系统进行交互的能力
安全性:软件保护信息和数据的安全能力
4.2 可靠性
成熟性:软件产品避免因软件中错误发生而导致实效的能力
容错性:软件防止外部接口错误扩散而导致系统失效的能力
可恢复性:系统失效后,重新恢复原有的功能和性能的能力
4.3 易用性
易理解性:软件显示的信息要清晰、准确且易懂,使用户能够快速理解软件
易学习性:软件使用户能学习其应用的能力
易操作性:软件产品使用户能易于操作和控制它的能力
吸引性:软件具有的某些独特的、能让用户眼前一亮的属性
4.4 效率、性能
时间特性:在规定的条件下,软件产品执行其功能时能够提供适当地响应时间和处理时间以及吞吐率的能力
资源利用:软件系统在完成用户指定的业务请求所消耗的系统资源,诸如:CPU、内存使用率,网络带宽占有率等
4.5 可维护性
易分析性:软件提供辅助手段帮助开发人员定位缺陷原因并判断出修改之处
易改变性:软件产品使得指定的修改容易实现的能力
稳定性:软件产品避免由于软件修改而造成意外结果的能力
易测试性 :软件提供辅助性手段帮助测试人员实现其测试意图
4.6 可移植性
适应性:软件产品无需做任何相应变动就能适应不同运行环境的能力
易安装性:在平台变化后,成功安装软件的难易程度
共存性:软件产品在公共环境与其共享资源的其他系统共存的能力
替换性:软件系统的升级能力,包括在线升级、补丁升级等