1、软件工程的基本概念工程的含义大 规 模 的 设 计 与 建 造复杂问题与目标分解团队协作与过程控制工程将理论和知识应用于实践的科学,以便经济有效地解决问题。什么是软件工程?软件工程的目标软件工程的目标 创 造创 造“足 够 好足 够 好”的软件的软件软件工程是 将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;对中所述方法的研究。什么是软件工程?软件工程是 将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;对中所述方法的研究。较低的开发成本按时完成开发任务并及时交付实现客户要求的功能具有良好性能、可靠性、可扩展性、可移植性
2、等软件维护费用低软件工程的基本要素过程支持软件开发各个环节的控制和管理质量方法完成软件开发任务的技术手段工具为软件开发方法提供自动的 或半自动的软件支撑环境软件工程过程客户满意 的产品客户需求输入输出监视测量活动资源软件工程过程软件测试软件构造需求开发问题定义软件开发活动软件设计 构想文档 用户故事 分析模型 软件需求规格说明 设计模型 软件体系结构文档 软件详细设计文档 源程序 目标代码 可执行构件 测试规程 测试用例 测试报告软件开发管理(软件项目管理计划、软件配置管理计划、软件质量保证计划、评审记录)XMLSOAPHTTPOWLUDDIWSDLCORBADCOMJ2EE软件工程方法面向服
3、务:在应用表现层次上将软件构件化,即应用 业务过程由服务组成,而服务由构件组装而成。面向构件:寻求比类的粒度更大的且易于复用的构件,期望实现软件的再工程。面向对象:以类为基本程序单元,对象是类的实例化,对象之间以消息传递为基本手段。面向过程:以算法作为基本构造单元,强调自顶向下 的功能分解,将功能和数据进行一定程度的分离。OODOMTUMLSASD软件工程工具必 工 先 欲 利 善 其 其 器 事软件工程工具需求开发软件设计软件构造软件测试软件维护开发管理 软件建模工具 数据库设计工具Microsoft VisioMySQL Workbench 程序编辑器 程序编译器 程序解释器 程序调试器
4、集成开发环境 代码重构工具 逆向工程工具 单元测试工具 静态分析工具 自动化测试工具 性能测试工具 缺陷跟踪工具SeleniumxUnit 需求管理工具 项目管理工具 配置管理工具 测试管理工具软件开发的基本策略软件复用将一个复杂的问题分解成若干个简单的问题,然后逐个解决来源于人们生活与工作的经验,完全适合于技术领域分而治之软件开发是自底向上逐步有序的生长过程小步快跑:每走完一步再调整并为下一步确定方向,直到终点逐步演进优化:优化软件的各个质量特性,如运行速度、资源利用、用户体验折中:通过协调各个质量特性,实现整体质量的最优优化折中构造一个新的系统不必从零做起,直接复用已有的构件进行组装构件是
5、经过反复使用验证的,由其组成的新系统具有较高的质量软件开发的基本策略:软件复用软件开发的基本策略:软件复用软件复用是利用将已有的软件制品,直接组装或者合理修改形成新的软件系统,从而 提高开发效率和产品质量,降低维护成本。软件复用不仅仅是代码复用库函数、类库模板(文档、网页等)设计模式组件框架软件工程是一项解决问题的工程活动,通过对问题进行研究分析,将一个复杂问题分 解成可以理解并能够处理的若干小问题,然后再逐个解决。软件更像一个活着的植物,其生长是一个逐步有序的过程。软件开发应该遵循软件的 客观规律,不断进行迭代式增量开发,最终交付符合客户价值的产品。软件开发的基本策略:逐步演进软件开发的基本
6、策略:优化折中软件开发的基本策略:优化折中软件工程师应当把优化当成一种责任,不断改进和提升软件质量;但是优化是一个多 目标的最优决策,在不可能使所有目标都得到优化时,需要进行折中实现整体最优。在编写在编写C程序代码时,程序代码时,对文件的访问是影响程序速度对文件的访问是影响程序速度 的的一个重要因素一个重要因素,那么如何提高文件的访问速度呢那么如何提高文件的访问速度呢?软件开发的基本策略:优化折中软件开发的基本策略:优化折中缓冲大小用户CPU(秒)系统CPU(秒)时钟时间(秒)循环次数(秒)123.8397.9423.41468802212.3202.0215.273440146.1100.6
7、107.236720183.050.754.0183601161.525.327.091801320.712.813.745901640.36.67.0229511280.23.33.6114762560.11.81.957385120.01.01.1286910240.00.60.6143520480.00.40.471840960.00.40.435981920.00.30.3180163840.00.30.390327680.00.30.345655360.00.30.3231310720.00.30.312使用内存缓冲区方法 读取1468802字节文件软件工程学科发展用户界面原型化软件建模方法度量软件复用软件体系结构工具与集成环境抽象软件过程软件工程的Wasserman规范