系统计划主要用于描述从项目提出、选择到确立的过程,包括系统项目的提出与可行性
分析,系统方案的制订、评价和改进,新旧系统的分析和比较,以及现有软件、硬件和数据
资源的有效利用等问题。
项目的立项目标和动机 | 进行基础研究并获取技术 进行应用研发并获得产品 提供技术服务 信息技术产品的使用者 |
项目的选择和确定 |
选择有核心价值的产品/项目或开发方向 评估项目风险、收益和代价 |
项目提出和选择的结果 |
系统项目提出和选择的结果, 最终会以“产品/项目建议书”的方式来体现 |
可行性研究的内容 | 经济可行性 技术可行性 法律可行性 执行可行性 方案的选择 |
可行性研究与效益分析 | 成本效益分析 项目可能涉及的收益 效益分析的若干指标和进一步的分析 |
可行性分析报告 | 可行性研究报告首先由项目负责人审查(审查内容是否可靠),再上报给上级主管审阅 (评估项目的地位)。从可行性研究报告中应当得出“行或不行”的决断。 |
确定软件架构 |
(1)分析模型的结构(2)一些对应于系统目标的最基本、最重要的实现要素(3)特性和要点的解释。这些附加的内容解释系统的一些特性、服务等是如何实现的。 |
确定实现的各种关键性要素和实现手段关键性的实现要素通常包括 | 关键的用例、最主要的控制类、功能和服务的首要组织方式(例如网站首页); 对象的组织模式; 常用和最关键的实现算法模型。关键性的实现手段通常包括: 选定基础计算平台,如操作系统、数据库、 Web 服务器、中间件平台等; 选定开发工具和开发环境,如计算机语言、构件库、工具软件等。 |
归结目标到最适合的计算体系 |
通常,提供开发工具和开发环境的组织总是有一些标准的计算体系可以选择(例如, .NET和 J2EE 等),因此对于大多数系统开发项目来说,比较各种标准计算体系与预期目标之间的匹配程度即可选定计算体系。 |
淘汰策略
第 3 象限为低水平、低价值区,即遗留系统的技术含量较低,且具有较低的商业价值。
对这种遗留系统的演化策略为淘汰
继承策略
第 4 象限为低水平、高价值区,即遗留系统的技术含量较低,可满足企业运作的功能
或性能要求,但具有较高的商业价值,目前企业业务对该系统仍有很大的依赖性。 对这种遗
留系统的演化策略为继承
改造策略
第 1 象限为高水平、高价值区,即遗留系统的技术含量较高,本身还有较大的生命力,
且具有较高的商业价值,基本上能够满足企业业务运作和决策支持的要求。这种系统可能建
成的时间还很短,对这种遗留系统的演化策略为改造。
集成策略
第 2 象限为高水平、低价值区,即遗留系统的技术含量较高,但其商业价值较低,可
能只完成某个部门(或子公司)的业务管理。
需求分析的任务与过程 |
需求分析阶段的工作可以分成 4 个方面 (1)问题识别 需求的分类:功能需求、非功能需求和设计约束 需求工程:需求开发、需求管理 |
如何进行系统设计 |
(1)组件的独立性。审视自己设计的系统,是否做到了高内聚、低耦合? (2)例外的识别和处理。谁能保证系统使用者都精确按照使用说明书使用? (3)防错和容错。当网络中断、数据库崩溃这样的灾难性事件发生时,系统也跟着崩溃吗? |
软件设计的任务与活动 |
(1)概要设计(2)详细设计 Parnas 方法:将可能引起变化的因素隐藏 |
结构化分析方法的基本思想是自顶向下逐层分解
结构化分析工具
数据流图( Data Flow Diagram, DFD)、数据字典( DataDictionary, DD)、结构化语言、判定表、判定树
结构化分析的工作步骤
(1)研究“物质环境”(2)建立系统逻辑模型(3)划清人机界限
数据流图
(1)数据流图的层次
(2) Context 图
(3)逐级分解
(4)DFD0 层图
结构化设计:
结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。它是一种面向数据
流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模
块化的过程。
概要设计:设计软件的结构、确定系统是由哪些模块组成,以及每个模块之间的关系。采用结构图(包括模块、调用、数据)来描述程序的结构,此外还可以使用层次图和 HIPO(层次图加输入/处理/输出图)
详细设计:确定应该如何具体地实现所要求的系统,得出对目标系统的精确描述。它采用自顶向下、逐步求精的设计方式和单入口单出口的控制结构。常使用的工具包括程序流程图、盒图、 PAD(Problem Analysis Diagram,问题分析图)、 PDL(ProgramDesign Language,程序设计语言)。
模块设计:
模块化是一个很重要的概念,它是将一个待开发的软件分解成为若干个小的简单部分——模块,每个模块可以独立地开发、测试。这是一种复杂问题的“分而治之”原则,其目的是使程序的结构清晰、易于测试与修改
1.信息隐蔽原则
信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单
一的设计模块中,并且尽可能少地暴露其内部的处理。
对象是系统中用来描述客观事物的一个实体
类则是对具有相同属性和服务的一个或一组对象的抽象
实体类:实体类映射需求中的每个实体
边界类:边界类用于封装在用例内、外流动的信息或数据流。边界类用于系统接口与系统外部进行交互
控制类:控制类是用于控制用例工作的类。控制类没有属性,但一定有方法
继承与泛化
继承:说明特殊类(子类)与一般类(父类)的关系。“交通工具”是“自行车”和“小轿车”的泛化
泛化:一般类与特殊类的关系。自行车”和“小轿车”从“交通工具”中继承。
多态与重载
模板类:类属类,它用来实现参数多态机制。一个类属类是关于一组类的一个特性抽象,
它强调的是这些类的成员特征中与具体类型无关的那些部分,而用变元来表示与具体类型有
关的那些部分。
消息和消息通信:消息就是向对象发出的服务请求,它通常包括提供服务的对象标识、消息名、输入信息和回答信息。
面向对象分析的目标是开发一系列模型,这些模型描述计算机软件,当它工作时以满足
一组客户定义的需求。对象技术的流行,演化出了数十种不同的 OOA 方法,每个方法都引
入了一个产品或系统分析的过程、一组过程演化的模型及使软件工程师能够以一致的方式创
建每个模型的符号体系。
1. OOA/OOD 方法
OOA 模型中包括主题、对象类、结构、属性和服务 5 个层次,需经过标识对象类、标识结构与关联(包括继承、聚合、组合、实例化等)、划分主题、定义属性、定义服务 5 个步骤来完成整个分析工作。
2. Booch 方法
Booch 认为软件开发是一个螺旋上升的过程,每个周期中包括标识类和对象、确定类和
对象的含义、标识关系、说明每个类的接口和实现 4 个步骤
3. OMT 方法
OMT 是对象建模技术的缩写,它是由 Jam Rambaugh 及其同事合作开发的,它主要用
于分析、系统设计和对象设计。包括对象模型(静态的、结构化的系统的“数据”性质,通
常采用类图)、动态模型(瞬时的、行为化的系统“控制”性质,通常使用状态图)和功能
模型(表示变化的系统的“功能”性质,通常使用数据流图)。 OMT 方法的三大模型如表 8-6
所示
4.OOSE 方法
OOSE 是面向对象软件工程的缩写,它是由 Ivar Jacobson 提出的。它在 OMT 的基础
上,对功能模型进行了补充,提出了“用例”的概念,最终取代数据流图进行需求分析和建
立功能模型。
统一建模语言(Unified Modeling Language, UML)是用于系统的可视化建模语言,它将
OMT、 OOSE 和 Booch 方法中的建模语言和方法有机地融合在一起,是国际统一的软件建
模标准。
UML 是一种语言、一种可视化语言、一种可用于详细描述的语言
UML 的结构:
构造块 |
建模元素 | 包括结构事物(类、接口、协作、用例、活动类、组件、节点等)、行为事物(交 互、状态机)、分组事物(包)、注释事物 |
关系 | 包括关联关系、依赖关系、泛化关系、实现关系 | |
图 | 静态模型:类图、对象图、包图、构件图、部署图、制品图 交互概览图 |
|
公共机制 | 规格说明 | 规格说明是元素语义的文本描述,它是模型的重要组成部分 |
修饰 | UML 为每一个模型元素设置了一个简单的记号,还可以通过修饰来表达更多的信息。 | |
公共分类 | 包括类元与实体(类元表示概念,而实体表示具体的实体)、接口和实现(接口 用来定义契约,而实现就是具体的内容)两组公共分类 |
|
扩展机制 | 包括约束(添加新规则来扩展元素的语义)、构造型(用于定义新的 UML 建模元素)、标记值(添加新的特殊信息来扩展模型元素的规格说明) |
|
架构 |
逻辑视图:以问题域的语汇组成的类和对象集合。 进程视图:可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例。 实现视图:对组成基于系统的物理代码的文件和组件进行建模。 部署视图:把组件物理地部署到一组物理的、可计算的节点上。 用例视图:最基本的需求分析模型。 |
用例图
包含关系:当可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个组
件来实现某一个用例的部分功能是很重要的事时,应该使用包含关系来表示。所提取出来的
公共行为称为抽象用例。包含关系的例子如图 8-13 所示。
扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多
种事情。可以将这个用例分为一个主用例和一个或多个辅用例,描述可能更加清晰。扩展关
系的例子如图 8-14 所示。
类图和对象图
① 依赖关系。有两个元素 X、Y,如果修改元素 X 的定义可能会引起对另一个元素 Y 的
定义的修改,则称元素 Y 依赖于元素 X。在 UML 中,使用带箭头的虚线表示依赖关系。
② 泛化关系。泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父
类与子类之间的关系。继承关系是泛化关系的反关系,也就是说子类是从父类中继承的,而
父类则是子类的泛化。在 UML 中,使用带空心箭头的实线表示,箭头指向父类。
③ 关联关系。关联表示两个类之间存在某种语义上的联系。例如,一个人为一家公司
工作,一家公司有许多办公室。就认为人和公司、公司和办公室之间存在某种语义上的联系。
④ 实现关系。实现关系是用来规定接口和实现接口的类或组件之间的关系的。接口是
操作的集合,这些操作用于规定类或组件的服务。在 UML 中,用一个带空心箭头的虚线表
示。
交互图
接口设计主要包括三个方面的内容:一是设计软件构件间的接口;二是设计模块和其他
非人的信息生产者和消费者(如外部实体)的接口;三是人(如用户)和计算机间界面设计。
1 用户界面设计的原则 | 置用户于控制之下、减少用户的记忆负担 |
2 用户界面设计过程 |
用户界面的设计过程也应该是迭代的,它通常包括 4 个不同的框架活动 |
工作流是一类能够完全或者部分自动执行的经营过程,根据一系列过程规则、文档、信息或任务在不同的执行者之间传递、执行
1.直接过渡:新系统运行时,立即关闭原来的系统
2.并行过渡:让新系统和旧系统在一段时间里同时运行,通过这样的旧系统作为新系统的备份,可以大大降低系统过渡的风险
3.阶段过渡