什么是软件危机
软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件工程三要素
-
方法
- 软件工程方法为软件开发提供了“如何做”的技术,是完成软件工程项目的技术手段
-
工具
- 软件工具是人们在开发软件的活动中智力和体力的扩展和延申,为软件工程的方法和工具综合起来以达到合理,及时地进行计算机软件开发的目的
-
过程、
- 软件工程过程则是将软件工程的方法和工具综合起来以达到合理,及时地进行计算机软件开发的目的
软件重用
软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
软件元素包括:
- 程序代码
- 测试用例
- 设计文档
- 设计过程
- 需求分析文档甚至领域知识
通常把这种可重用的元素称作软构件,简称构件。
可重用软件元素越大,就说重用的粒度越大。
青鸟构件模型
由外部接口和内部结构两部分组成
- 外部接口
- 指构件向其重用者提供的基本信息,包括构件名称,功能描述,对外功能接口,所需的构件,参数化属性等。外部接口是构件与外部世界的一组交互点,说明了构件所提供的那些服务(消息,操作,变量)
- 内部结构
- 构件的内部结构包括两方面内容,内部成员以及内部成员之间的关系。其中内部成员包括具体成员与虚拟成员,而成员关系包括内部成员之间的互联,以及内部成员与外部接口之间的互联。
构件分类方法
- 关键字分类法
- 一种最简单的构件库组织方法。
- 刻面分类法
- 主要思想来源于图书馆学
- 超文本组织方法
- 基于数据库系统的构件库组织方法不同,它基于全文检索技术。
软件体系结构的模型
- 结构模型:这是一种最直观,最普遍的建模方法。
- 框架模型:框架模型与构件模型类似,但他不太侧重描述构件的细节,反而更侧重于整体的结构
- 动态模型:是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质
- 过程模型:过程模型研究构造系统的步骤和过程,因而结构是遵循某些过程脚本的结果
- 功能模型:认为体系结构是由一组功能构件按层次组成,下层向上层提供服务
体系结构的核心模型五种组成元素
- 构件:具有某种功能的可重用的软件模板单元
- 复合构件
- 原子构件
- 连接件:表示构件之间的交互
- 配置:表示构件和连接件的拓扑逻辑和约束
- 端口
- 角色
管道与过滤器风格的软件体系结构特点
- 使得软构件具有良好的隐蔽性和高内聚,低耦合的特点
- 允许设计师将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成
- 支持软件重用
- 系统维护和增强系统性能简单
- 允许对一些如吞吐量,死锁等属性的分析
- 支持并行执行。
不利因素:
- 通常导致进程成为批处理的结构
- 不适合处理交互的应用
- 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性
面向对象系统优点
- 因为对象对其他对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其他的对象
- 设计师可将一些数据存储操作的问题分解成一些交互的代理程序的集合
问题
- 为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识,只要一个对象的标识改变了,就必须修改所有其他明确调用它的对象
- 必须修改所有显式调用他的其他对象,并消除由此带来的一些副作用
黑板系统主要由三部分组成
- 知识源:知识源中包含独立的,与应用程序相关的知识,知识源之间不直接进行通信,他们之间的交互只通过黑板完成
- 黑板数据结构:黑板数据是按照与应用程序相关的层次来组织的解决问题的数据,知识源通过不断地改变黑板数据来解决问题
- 控制:控制完全由黑板的状态驱动,黑板状态的改变决定使用的特定知识
C/S三层体系结构
- 表示层
- 功能层
- 数据层
C/S三层体系结构各层职责
- 表示层
- 负责处理用户的输入和向客户的输出
- 功能层
- 负责建立数据库的连接,根据用户的请求生成访问数据库的SQL语句,并把结果返回给客户端
- 数据层
- 负责实际的数据库存储和检索,响应功能层的数据处理请求,并将结果返回给功能层
构件接口
构件接口代表了构件同环境的全部交互内容,也是唯一的交互途径,除此之外,环境不应对构件做任何其他与接口无关的假设,例如实现细节等。
消息过滤方式
消息总线对消息过滤提供了转换和阻塞两种形式。
UML统一建模
- 概述
- UML是一种语言
- UML是一种可视化语言
- UML是一种可用于详细描述的语言
- UML是一种构造语言
- UML是一种文档化语言
- UML视图分类
- 逻辑视图:以问题域的词汇组成的类和对象的集合
- 进程视图:可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例,描述了所设计的并发与同步结构
- 实现视图:对组成基于系统的物理代码的文件和构件进行建模
- 部署视图:把构件部署到一组物理的,可计算的结点上,表示软件到硬件的映射及分布结构
- 用例视图:最基本的需求分析模型
- UML四种关系
- 依赖:两个事务之间的语义关系,其中一个事务发生变化会影响另一个事务的语义
- 关联:描述一组对象之间连接的结构关系,例如,聚合关系描述了整体和部分之间的结构关系
- 泛化:一般化和特殊化的关系,描述特殊元素的对象可替换一般元素的对象
- 实现:类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约
用例图
设计模式分类
- 创建型模式
- 工厂方法模式
- 抽象工厂模式
- 原型模式
- 单例模式
- 建造者模式
- 结构型模式
- 适配器模式
- 桥接模式
- 组合模式
- 装饰模式
- 外观模式
- 享元模式
- 代理模式
- 行为型模式
- 职责链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介模式
- 备忘录模式
- 观察者模式
- 状态模式
- 策略模式
- 模板方法模式
- 访问者模式
MVC模式的设计与实现
- Model
- 向视图和控制器提供提供业务逻辑服务
- View
- 从模型获得显示信息,并以特定的方式展现给用户
- Controller
- 处理用户与软件的交互操作,其职责是决定软件的控制流程
体系结构文档化
- 体系结构文档化过程的主要输出结果是
- 体系结构需求规范说明
- 测试体系结构需求的质量设计说明书
名称简称
- OOD 面向对象设计
- SCA 服务构件体系结构
- OOAD 面向对象的分析设计
- EA 企业体系结构
- BPM 业务流程建模
- SOAD 面向对象的分析设计
- UDDI 统一描述,发现和集成协议
- WSDL Web服务描述语言
- SOAP 简单对象访问协议
- HTTP 超文本传输协议
- SMTP 简单邮件传输协议
- JMS Java消息服务
- XML 可扩展标记语言
- SGML 标准通用标记语言
- DTD 文档类型定义
- XSL 可扩展样式语言
- CSS 层叠样式表
- DOM 文档对象模型
- XSLT 用于转换的可扩展样式表语言