软件工程学习笔记

什么是软件工程
  1. 软件 软件工程研究的对象,也是软件工程的产品形态与客观存在。
  2. 工程 将理论和知识应用于实践的科学,其目的是经济有效地解决问题。
  3. 软件工程是 将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上。

工程的含义
  • 大规模的设计与建造
  • 复杂问题与目标分解
  • 团队协作与过程控制

软件的定义

软件 = 程序 + 数据 + 文档

  1. 程序 计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能。
  2. 数据 使得程序能够适当的操作信息的数据结构。
  3. 文档 描述程序的研制过程、方法和使用的图文资料。

软件的本质特性

软件具有复杂性一致性可变性不可见性等固有的内在特性,这是造成软件开发困难的根本原因。


软件工程发展历史
  1. 1956 - 1967 史前时代
  2. 1968 - 1983 瀑布过程模型
  3. 1983 - 1995 质量标准体系

注:1968 年提出 软件工程 结构化开发方法;此后在 第三阶段提出面向对象开发方法;

1983 - 1995年 质量标准体系包含 CMM/ISO9000/SPICE等。


软件工程过程

问题定义 - 需求开发 - 软件设计 - 软件构造 - 软件测试


软件工程方法
  1. 面向服务:在应用表现层次上将软件构件化,即应用业务过程由服务组成,而服务由构件组装而成。
  2. 面向构件:寻求比类的粒度更大的且易于复用的构件,期望实现软件的再工程。
  3. 面向对象:以类为基本程序单元,对象是类的实例化,对象之间以消息传递为基本手段。
  4. 面向过程:以算法作为基本构造单元,强调自顶向下的功能分解,将功能和数据进行一定程度的分离。

软件开发的基本策略
  • 软件复用:利用将已有的软件制品,直接组装或者合理修改形成新的软件系统,从而提高开发效率和产品质量,降低维护成本。
  • 分而治之:将一个复杂的问题分解成若干个简单的问题,然后逐个解决。
  • 逐步演化:遵循软件的客观规律,不断进行迭代增量开发,最终符合客户价值的产品。
  • 优化折中:不断改进和提示软件质量,在不可能使所有目标都得到优化时,需要进行折中实现整体最优。

软件质量

软件质量通常包含: 软件过程、软件产品、产品效用 三个方面。

  1. 软件过程:过程质量
  2. 软件产品:内部质量、外部质量
  3. 产品效用:使用质量

过程质量 影响 内部质量 影响 外部质量 影响 使用质量

使用质量 依赖 外部质量 依赖 内部质量 依赖 过程质量


产品质量维度
  • 性能
  • 特色
  • 可靠性
  • 符合性
  • 耐久性
  • 可服务性
  • 审美
  • 感知

ISO9126质量模型
外部和内部质量
功能性 易用性 可靠性 效率/性能 可维护性 可移植性


功能性 适合性 当软件在指定条件下使用,其满足明确和隐含要求功能的能力。
准确性 软件提供给用户功能的精确度是否符合目标。
互操作性 软件与其它系统进行交互的能力。
安全性 软件保护信息和数据的安全能力。


易用性 易理解性 软件显示的信息要清晰,准确且易懂,使用户能够快速理解软件。
易学习性 软件使用户能学习其应用的能力。
易操作性 软件产品使用户能易于操作和控制它的能力。
吸引性 软件具有的某些独特的、能让用户眼前一亮的属性。


效率 时间特性 在规定的条件下,软件产品执行其功能时能够提供适当的响应时间和处理时间即吞吐率的能力。
资源利用 软件系统在完成用户指定的业务请求所消耗的系统资源,诸如 CPU占有率、内存占有率、网络带宽占有率等。


可维护性 易分析性 软件提供辅助手段帮助开发人员定位缺陷原因并判断出修改之处。
易改变性 软件产品使得指定的修改容易实现的能力。
稳定性 软件产品避免由于软件修改而造成意外结果的能力。
易测试性 软件提供辅助性手段帮助测试人员实现其测试意图。


可移植性 适应性 软件产品无需做任何相应变动就能适应不同运行环境的能力。
易安装性 在平台变化后,成功安装软件的难易程度。
共存性 软件产品在公共环境与其共享资源的其他系统共存的能力。
替换性 软件系统的升级能力,包括在线升级、打补丁升级等。
bystart

bystart

青檬小栈

留下你的评论

快留下你的小秘密吧