顺序图与协作图的区别
顺序图强调的是对象交互的时间次序。协作图强调的是对象的组织结构。
活动图与流程图之间的区别
1.活动图描述的是一个对象活动的顺序关系所遵循的规则,着重表示系统的行为,而不是处理流程,而流程图描述的是处理流程2.流程图仅限于顺序进程,活动图支持并发进程3.活动图是面向对象的,流程图是面向过程的
类的类型与职责
类可以分为实体类、控制类、边界类: 实体类:实体类映射需求当中的实体,用于存储需要存储在永久存储当中的信息,比如用户、商品 控制类:控制类用于控制用例的行为,用于一个或多个用例特有行为的建模,比如结算、备货等 边界类:边界类用于封装用例内部与外部的信息和数据流,比如订单信息录入界面、订单表单
用例规约的内容
用例建模的主要工作是书写用例规约,而不是画图。规约。其内容至少包括用例名、参与者、目标、前置条件、事件流(基础事件流、扩展事件流)、后置条件,其他内容还包括非功能需求,用例优先级等。
面向构件编程的基本支持
面向构件的编程(COP)关注于如何支持建立面向构件的解决方案。一个基于一般 OOP 风格的 COP 定义如下(Szyperski,1995): “面向构件的编程需要下列基本的支持:——多态性(可替代性);——模块封装性(高层次信息的隐藏);——后期的绑定和装载(部署独立性);——安全性(类型和模块安全性)。”
软件架构文档的书写原则
软件架构文档的写作应该遵循一定的原则,这些原则包括: 文档要从使用者的角度进行编写; 必须分发给所有与系统有关的开发人员; 应该保持架构文档的即时更新,但更新不要过于频繁; 架构文档中描述应该尽量避免不必要的重复; 每次架构文档修改都应该记录进行修改的原则。
构件的基本概念
构件的基本概念。如果把软件系统看成是构件的集合,那么从构件的外部形态来看,构成一个系统的构件可分为5类:(1)独立而成熟的构件。独立而成熟的构件得到了实际运行环境的多次检验,该类构件隐藏了所有接口,用户只需用规定好的命令进行使用。例如,数据库管理系统和操作系统等。(2)有限制的构件。有限制的构件提供了接口,指出了使用的条件和前提,这种构件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试。例如,各种面向对象程序设计语言中的基础类库等。(3)适应性构件。适应性构件进行了包装或使用了接口技术,把不兼容性、资源冲突等进行了处理,可以直接使用。这种构件可以不加修改地使用在各种环境中。例如ActiveX等。(4)装配的构件。装配(assemble)的构件在安装时,已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(glue code)就可以进行连接使用。目前一些软件商提供的大多数软件产品都属这一类。(5)可修改的构件。可修改的构件可以进行版本替换。如果对原构件修改错误、增加新功能,可以利用重新“包装”或写接口来实现构件的替换。这种构件在应用系统开发中使用得比较多。
静态分析
静态分析(static analysis)是一种对代码的机械性的、程式化的特性分析方法。静态分析一般常用软件工具进行,包括控制流分析、数据流分析、接口分析、表达式分析。 用数据流图来分析数据处理的异常现象(数据异常),这些异常包括初始化、赋值、或引用数据等的序列的异常。 使用控制流图系统地检查程序的控制结构。按照结构化程序规则和程序结构的基本要求进行程序结构检查。控制流图描述了程序元素和它们的执行顺序之间的联系。一个程序元素通常是一个条件、一个简单的语句,或者一块语句(多个连续语句)。 程序的接口分析涉及子程序以及函数之间的接口一致性,包括检查形参与实参类型、个数、维数、顺序的一致性。当子程序之间的数据或控制传递使用公共变量块或全局变量时,也应检查它们的一致性。 表达式分析:括号不匹配、数组引用越界、除数为零。 信息流分析阶段找出输入变量和输出变量之间的依赖关系; 路径分析阶段找出程序中所有可能的路径并画在此路径中执行的语句。
软件的生命周期
按照传统的软件生命周期方法学,可以把软件生命周期划分为软件定义、软件开发、软件运行与维护三个阶段。 软件定义包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标。 软件开发时期就是软件的设计与实现,可分为概要(总体)设计、详细设计、编码、测试等。 软件运行就是把软件产品移交给用户使用。软件投入运行后的主要任务是使软件持久满足用户的要求。 软件维护是对软件产品进行修改或对软件需求变化做出响应的过程,也就是尽可能地延长软件的寿命。 当软件已没有维护的价值时,宣告退役,软件生命随之宣告结束。
软件的结构化设计
软件结构化设计包括 体系结构设计、接口设计、数据设计和过程设计 体系结构设计:定义软件系统各主要部件之间的关系。 数据设计:将模型转换成数据结构的定义。好的数据设计将改善程序结构和模块划分,降低过程复杂性。 接口设计(人机界面设计):软件内部,软件和操作系统间以及软件和人之间如何通信。 过程设计:系统结构部件转换成软件的过程描述。确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。