《2022年要点-应用程序知识点总结 .pdf》由会员分享,可在线阅读,更多相关《2022年要点-应用程序知识点总结 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库为收集到的数据提供结构化机制。任何类型的数据库应包含以下特点: 它不是将数据保存在网络中的几台不同的服务器上,从而进行集中化管理。它的备份过程更加方便。它提供事务持续性。由于在一个中心位置保存和维护所有数据,它可以实现更大的一致性。 它提供恢复和容错能力。它允许多个用户共享数据。它提供安全控制,执行完整性检查、访问控制和必要的机密性。数据库模型:关系数据库模型、层次数据库模型、网络数据库模型、面向对象的数据库模型、对象 -关系数据库模型。关系数据库模型( Relational Database Model) 使用属性(行)和元组(列)包含和组织信息。关系数据库模型是今天应用最广泛的数据库
2、组织形式,它以表 (Table)的形式表示信息。 一个关系数据库由一些二维表构成,每个表包含行、 列和存储单元(行与列的交叉位置 )。每个存储单元仅包含一个数据值,表示一个特定元组的特殊属性值主键( Primary Key)是将记录中的所有数据与一个唯一值联系起来的字段。层次数据库模型 (Hierarchical Database Model) 是另一种通用的数据库模型。 数据元素之间的结构和关系与关系数据库中不同。层次数据模型由记录 (Record)和字段(Field)构成,它们之间是逻辑的树形关系。 在层次数据库中, 父节点可以有一个子节点或者多个子节点, 也可以没有子节点。 树形结构包含
3、许多分支 (Branch),分支又会有一定数量的叶子 (Leaf),或者数据字段。 这些数据有定义明确、 预先指定的访问路径, 但在建立关系方面不如关系数据库灵活。层次数据库通常用于映射一对多的数据关系。 层次数据库是人们最开始创建的数据库模型,但它并不如关系数据库应用普遍。 最常用的层次模型为轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)模型。这种模型也用在Windows 注册表结构和不同的文件系统中,但最新的数据库产品通常并不采用这种模型。网络数据库模型建立在层次数据库模型之上。与层次数据库模型不同, 在网络数据库模型中,要找到一
4、个数据元素, 你不必知道如何从一个分支进入另一个分支,然后从一个父节点进入一个子节点; 网络数据库模型允许每个数据元素拥有多个父节点和子记录。 形成了一种类似网络的冗余结构,而非严格的树结构 (网络数据库这个名称并不表示数据在网络上或在分布在整个网络中,它只是描述数据元名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - 素的关系) 。网络模型为了实现冗余而建立一种类似于网状网络拓扑的结构;另外,与层次模型相比,网络模型检索数据的速
5、度更快。这种模型使用一种记录(Record)和集合( Set)的结构。一个记录包含字段,它可以通过一个层次化的结构列出。集合是定义不同记录之间的一对多的关系。一个记录可以是任何数量的集合的 “ 所有者 ” ,同一个 “ 所有者 ” 又可能是许多不同的集合。这种结构可以为确立不同数据元素之间的关系提供相当大的灵活性。面向对象的数据库( Object-Oriented Database) 可以管理多种不同类型的数据(如图像、语音、文档和视频等 )。在关系数据库中, 应用程序必须使用它自己的过程从数据库中获得数据, 然后根据自己的需求处理这些数据;而传统的关系数据库并不像面向对象的数据库那样能提供访
6、问数据的过程。面向对象的数据库用类(Class)来定义数据属性和数据访问过程。建立这种模型的目的在于突破关系数据库在保存和处理大量数据时遇到的限制。另外,面向对象的数据库并不依赖SQL 进行交互,因此,并非SQL 客户端的应用程序也可以使用这种类型的数据库。ODBMS 并不如关系数据库那样用途广泛,但它主要用于工程和生物学等领域,并满足金融领域的某些需求。对象-关系数据库或对象 -关系数据库管理系统( ORDBM) 是一种含有一个以面向对象编程语言编写的软件前端的关系数据库。主要用于对保存的数据执行不同的商业逻辑。开放数据库连接( ODBC) 是一个应用程序编程接口( API),允许应用程序与
7、本地或者远程的数据库通信。应用程序向ODBC 发出请求, ODBC 把它翻译成数据库的命令。应用程序可以不用关心数据库的驱动 (Driver),这些都由 ODBC 完成。是一种针对基本的数据访问技术(如 OLEDB) 的高级数据访问编程接口。 是一组用于访问数据来源,而不只是数据库访问的COM 对象。它允许开发者编写程序来访问数据,而不用知道数据库如何运行。在使用ADO 时,SQL 命令不需要访问数据库。对象链接和嵌入数据库 (OLEDB) 是运行在客户端或者服务器上的中间件,把数据分成多个部分。 它提供底层接口, 允许访问不同数据库的数据以及不同格式的数据。以下是 OLE DB 的一些特点:
8、替代 ODBC,扩展它的功能以支持更广泛的非关系数据库,如对象数据库和名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 不一定执行 SQL 的电子数据表。一组基于 COM 的接口,允许应用程序以统一的方式访问保存在不同数据源中的数据。由于 OLE DB 以 COM 为基础,因此它仅限于基于微软Windows 的客户端工具使用(与 OLE 无关)。开发者通过 ActiveX 数据对象( ADO)访问 OLEDB 服务。它允许不同的
9、应用程序访问不同类型和来源的数据。ActiveX 数据对象( ADO) 是一个 API,允许应用程序访问后台数据库系统。它是一组 ODBC 接口的集合,用可访问( Accessible)的对象来展示数据库的功能,进而操作数据库。 ADO 通过 OLE DB 接口与数据库连接,可以用多种不同的脚本语言开发,下面是他的特点:是一种针对基本的数据访问技术(如OLEDB) 的高级数据访问编程接口。是一组用于访问数据来源,而不只是数据库访问的COM 对象。它允许开发者编写程序来访问数据,而不用知道数据库如何运行。在使用 ADO 时,SQL 命令不需要访问数据库。Java数据库连接性( JDBC) 是一个
10、 API,允许 Java应用程序与数据库通信。应用程序可以直接或者通过ODBC 逹接到数据库。以下是JDBC 的一些特点:是一个提供和 ODBC 相同功能的 API,但专门为 Java数据库应用程序设计。在 Java平台与一系列数据库之间,使用独立于数据库的连接。JDBC 是一种使 Java程序执行 SQL 语句的 Java API。可扩展标记语言( XML) 个数据结构化的标准,用于基于Web 技术的程序的数据交换。 XML 是一种自定义的标记语言,可以灵活地表现数据库中的数据。Web 浏览器可以解析XML 的标签,向用户说明开发者如何表示数据。数据定义语言 (DDL) 定义数据库的结构 (
11、Structure)和数据架、构(Schema) 。结构说明表的大小、 键位置、视图和数据元素关系。 数据架构描述数据库存储和操作的数据类型以及它们的属性。DDL 定义了数据库的结构、访问操作和完整性过程。数据操作语言(DML) 包含了使用户能查看、 操纵和使用数据库的所有命令(view、add、modify、sort 和 delete 命令)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - 査询语言( QL) 使用户可以对数
12、据库提出査询请求。报表生成器( Report Generator) 提供用户定义的数据过程输出。数据字典是数据元素定义、架构对象(Schema Object) 和引用键( Reference Key)的集合。架构对象可以包含表、视图、索引、过程、函数和触发器。数据字典可以包含列的默认值、数据完整性信息、用户姓名、用户的权限和角色,以及审计信息。它是一种通过控制数据库中有关数据的数据集中管理数据库各个部分的工具,提供成组数据元素和数据库之间的交叉引用关系。数据库管理软件创建并读取数据字典,确认架构对象存在, 并检查特定用户的进程访问权限。 当检索数据库时, 用户对数据的访问被特定的视图所限制。在
13、数据字典中,定义了对每个用户的视图权限设置。当需要增加新的记录、表、视图或者架构时,应该更新数据字典以反映这些变化。主键是一个行的唯一标识符, 它用于在关系数据库中编写索引。每个行必须拥有一个主键。当用户请求查询一条数据记录时,数据库通过这个唯一的主键跟踪这条记录。数据库软件执行 3 种类型的完整性服务: 语义完整性(Semantic Integrity),参考完整性(Referential Integrity)和实体完整性( Entity Integrity) 。语义完整性机制保证结构化规则和语义规则得到遵守。 这些规则与以下因素有关: 数据类型、逻辑值、唯一性约束以及可能负面影响到数据库结
14、构的操作。如果所有外键参考现有的主键,则说明一个数据库具有参考完整性。应通过某种机制确保没有外键引用不存在的记录的主键, 或者空值。 实体完整性保证了元组由主键值唯一确定。为了保持实体完整性, 每一个元组必须包含个主键。如果不包含主键, 数据库就不能引用此元组。一些可配置的操作被用来帮助保护数据库中数据的完整性,这些操作包括回滚、提交、保存点和检查点(Checkpoint)。回滚(Rollback)指的是结束当前事务并取消对数据库做的更改。这些更改可能是数据本身发生的更改或者是架构(Schema) 修改。执行回滚后,所做的变更被取消,数据库恢复到先前的状态。 回滚发生在数据库出现意想不到的故障
15、或者外部接口处理程序出现错误时。 数据库恢复到原始状态, 而不是仅仅重传或者更正部分数据。同时,数据库会记录错误和操作日志,以便日后审査。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - 提交( Commit)是指结束事务操作,执行用户做出的数据变更。顾名思义,一旦提交命令执行, 用户变更就得到确认, 并反映到数据库中。 这些变更可以是数据或者数据架构 , 通过提交操作, 其他用户或者应用程序就能访问到更新的数据。如果用户数据变
16、更的提交命令没有正确执行, 那么数据库会执行回滚命令。 这保证了不会由于发生部分变更而引起数据混乱。保存点( Savepoint)用来保证系统发生故障或者探测到错误时,数据库可以回到系统故障之前的状态。两阶段提交(TwoPhase Commit) 机制是数据库用来确保数据完整性的另一种控制。数据库通常会执行事务处理, 表示用户与数据库同时进行交互。与事务处理相反的是批处理( Batch Processing), 即数据库变更的请求被放入一个队列中并一次性激活而不是在用户提交请求时立即激活。聚合是指这种情形: 如果用户没有访问特定信息的权限,但是他有访问这些信息的组成部分的权限。 这样,他就可以
17、将每个组成部分组合起来,得到受限访问的信息。用户可以通过不同的途径得到信息,再综合得到本不具备明确访问权限的信息。为了防止聚合, 需要防止主体和任何主体的应用程序和进程获得整个数据集合的权限 ,包括数据集合的各个独立组成部分。客体可以进行分类并赋予较高的级别,存储在容器中 ,防止低级别权限的主体访问。 对主体的查询, 可以进行跟踪,并实施基于上下文的分类。 这将记录主体对客体的访问历史,并在聚合攻击发生时限制访问企图。另一个安全问题是推理(Inference),和聚合很相似。推理指的是主体通过他可以访问的信息推理出受限访问的信息。 当安全级别较低的数据可以描述出较髙级别的数据时,就会发生推理攻
18、击。例如,假设一个职员不应该知道军队在某个国家的行动计划,但是由于他可以访问到食品需求表格和帐篷位置的文档,那么他就可以根据食品和帐篷运送的目的地推算出军队正在向特定地区移动. 一个办法是防止主体或者与主体有关的应用程序和进程间接得到能推论的信息。在数据库开发过程中, 可以实施基于内容或者基于情形的访问控制来解决这个问题。基于内容的访问控制(Content-Dependent Access Control) 是根据数据的敏感程度实施访问控制。数据越敏感, 能名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
19、 - - - - 第 5 页,共 21 页 - - - - - - - - - 够访问数据的个体就越少。 基于上下文的访问控制是指软件根据请求的状态和次序,“了解”应允许哪些行为。这表示,用户必须追踪用户以前的访问尝试,并知道什么顺序的访问步骤得到许可。基于内容的访问控制就像是这样: “Julio 有权访问文件 A 吗? ”系统在 ACL 上检查文件 A 并返回一个响应:“ Julio 能够文件这个文件,但只能读取它。”基于上下文的访问控制则更像是这样:“Julio有权访问文件 A 吗? ”系统然后检查几个数据: Julio 做了哪些其他访问尝试?这个请求是否没有按照安全请求的顺序?这个请求是
20、否在系统允许的访问时间内(上午 8 时至下午 5 时)提出?如果所有这些问题的答案都与一组事先设置的参数相符,则 Julio 能够访问文件 A。否则,他就不能访问文件A。防止推理攻击的常见措施有单元抑制 (Cell Suppression) 、 采用数据库分隔,或者噪声和扰动。单元抑制是一种用来隐藏或者不显示特定存储单元内容的技术,防止这些信息被用来进行推理攻击。分隔数据库(Partitioning a Database) 包括将数据库分成不同的部分,使未授权用户很难访问到可以用于推理攻击的相关数据。噪声和扰动(Noise and Perturbation) 是一种在数据库中插入伪造信息的技术
21、,目的是误导和迷惑攻击者, 使得真实的推理攻击不能成功。多数情况下, 数据库在规划和开发过程中并没有将安全集成进来。安全需要事后考虑, 作为替代, 往往需要开发一个数据库可信前端( Front End)。这种方法限制了安全粒度及可以发挥作用的安全功能。数据库可以允许一个组或者一个特定用户访问特定信息,而限制另一个组访问。这种功能通过数据库视图(Database View) 实现。多实例( Polyinstantiation)建立了相同主键的多元组和由安全级别定义的实例之间的关系。当一条信息插入到数据库中时,需要限制低级别用户访问这条信息。通过建立另一组数据迷惑低级别用户,使用户认为他得到的信息
22、是真实的,而不是仅仅限制信息的访问。联机事务处理( Online Transaction Processing, OLTP) 用于多数据库集群提供容错和高性能的情况。 OLTP 提供一种监测问题的机制,并在问题发生时立即进行适当处理。OLTP 的主要作用是确保事务正确发生或根本不发生。通常,事务处理表示一些不可分割的操作独立发生。 如果其中一个操作失败, 则剩下的操作需要回滚, 以名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - -
23、 确保只向数据库中输入准确的数据。处理事务的一组系统由一个软件OLTP 产品管理和监控, 以确保一切顺利平稳地进行。 OLTP 可以对入站请求做负载均衡。OLTP 要实时记录所出现的事务(Transaction) 。在一个分布式环境下, 这个过程同时修改多个数据库。这个复杂的举动会引起许多关于完整性的威胁,所以数据库软件应该具有一种叫做ACID测试的特性。原子性(Atomicity) 把事务分成多个工作单元, 确保所有的修改都生效或者没有一个修改生效。数据库接受所有修改或者不接受任何修改。致性(Consistency) 事务必须遵守每个数据库的完整性策略,保证在不同数据库中的数据的一致性。隔离
24、性( Isolation) 事务完全分开进行,事务之间互不影响。在事务完成之前,所有的修改都没有生效。持久性( Durability) 旦事务在所有的系统上都被认为是正确的,它就要提交,数据库不能拒绝它。为了信息检索和数据分析, 将多个数据库或数据源联合成一个大的数据库。从各个不同的数据库中提取数据传输到一个中央数据存储区,这个存储区就叫做数据仓库(Data Warehousing) 。这些数据被标准化,也就是说删除冗余的信息,并以数据仓库期望的方式对其进行格式化。这使得用户只需查询一个实体, 而不用访问和查询不同的数据库。 数据仓库提取数据的数据源是用于操作。建立数据仓库是为了进行分析, 从
25、而做出商业预测决策, 确定营销效率、 商业趋势甚至是欺诈行为。相关数据会先进行总结和相互关联,然后再呈现给用户。 用户得到的并不是最初的每一项数据,而是最能适合他的需求的更加精简的数据。尽管数据仓库提供更方便的访问控制,但是由于它的集中性, 数据仓库需要更严格的安全。如果入侵者进入数据仓库, 那么他就可以立即访问整个组织的数据信息了。数据挖掘( Data Mining) 是对数据仓库中的数据进行进一步处理以得到更有用信息的过程。数据挖掘 工具被 用 来发现 数据的联系和相关 性来生成元数据(Metadata) 。元数据可以揭示单个信息子集中隐含的相关性,可以用来发现不明名师资料总结 - - -
26、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - 显的异常模式。数据挖掘可以检查复杂的数据,通过模糊逻辑(Fuzzy Logic) 、 集合理论(SetTheory)、专家系统( Expert System) 技术来简化查询,执行数学函数,查找到数据中的隐含模式。 元数据比它的原始数据来源更有价值。数据仓库和数据挖掘的目标是提取信息, 以了解与组织活动和趋势有关的知识,数据挖掘是一个分析数据仓库的过程, 它在不知道数据所包含意义的情况下,用一些工具去分
27、析数据的趋势、相关性、关联和异常。元数据(Metadata)就是把数据放在数据库中,然后用工具挖掘出来的结果。数据进入数据库,而元数据从数据库中出来。数据挖掘也称作数据库知识发现(Knowledge Discovery In Database, KDD), 它组合了发现有效及有用模式的各种技巧。下面是KDD 系统用于发现这些模式的3种方法:分类根据共同的相似性来组合数据。可能性确定数据之间的相互依赖关系,并将可能性应用到它们的关系中。统计确定数据元素之间的关系,并使用规则发现。系统或者产品通常会遵循如下生命周期阶段: 项目启动( Project Initiation )。功能设计分析和规划(
28、Functional Design and Planning) 。系统详细设计( System Design Specifications) 。软件开发( Software Development) 。. 安装/实施( Installation/Implementation)。运行/维护( Operational/Maintenance) 。处理( Disposal)。安全计划( Security Plan)应该在项目开发之初就制定,并且集成到功能计划中,以保证安全不被忽视。 第一个安全计划应该是广泛的,涉及各个方面, 并且引用其他参考文档以得到更详细的信息。这些参考文档包括计算机标准(如RF
29、C 文档、IEEE 标准和一些最佳实践 )、先前项目文档、安全策略、认证声明、事件处理计划以及国家或国际安全指南 (如橘皮书、 红皮书、通用准则等 )。这些文档将使安全计划更易读易用。 安全计划应该有自己的生命周期。安全计划和项目管理活动需要进行审计,以保证安全相关的决定可被理解。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页 - - - - - - - - - 项目启动项目组的每一个人都应当充分理解项目需求和项目使用的范围。这个阶段包括对市场上已有产品的评估,
30、 明确现有厂商没有满足的用户需求。需求也可能是来自现有客户和潜在客户的对特定产品的直接要求。这个建议书将被提交到高级管理层,来决定是否启动项目, 或者还需要向他们提供进一步的信息。在这个阶段中将明确用户需求, 确认产品的基本安全目标。 本阶段必须明确产品是否进行敏感信息的处理,定义这些信息的敏感度级别(Level of Sensitive)。在风险管理过程建立之后,应该设计一个基本安全框架。 风险管理将在整个项目的生命期内持续进行。风险管理风险管理阶段最重要的一个方面就是明确要提问的正确问题。风险分析进行风险分析的目的是鉴别相关风险和潜在的危险后果。项目组需要分析与项目失败相关的风险,这与安全
31、风险分析有很大的不同。安全风险包括其他不同的威胁和问题。功能设计分析和规划在这个阶段,需要制定项目计划来定义安全行为,制定安全检查点(Security Checkpoint) 来保证安全控制措施( Security Control)的质量控制,以及识别配置过程和变更控制过程。在这个阶段,进行资源确定、形成测试计划和评估准则来保证安全控制措施的正确测试。正式的功能基线的形成意味着以一种正式的方式,通常是文档化,勾勒出产品的期望轮廓。测试计划在每个阶段需要被更新,以保证所有问题都被正确测试。在生命周期中可能需要不止一次风险分析。因此在编码开始之前,需要有明确的目标和方向, 系统详细设计信息模型(
32、Informational Model) 规定被处理信息的类型以及如何进行处理。功能模型( Functional Model) 概括应用程序需要执行的任务和功能。行为模型( Behavioral Model)说明应用程序在特定事务发生过程中和发生之后的状态。这个阶段需要确认任务分解结构(Work Breakdown Structure, WBS), 包括开发阶段和实施阶段。 WBS 包含测试、开发、分段实施、集成测试和产品发布等各个阶段的时限和详细活动。系统设计是用来描述用户需求和系统内部行为的工具,它通过映射这两个方面来描绘系统是如何通过内部行为完成用户需求的。在本阶段的开始, 需要考虑产品
33、的更多细节以及产品的工作环境。功能性需求在名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - 最后确定。 本阶段解决了提供这种功能所需的工作机制,决定如何进行编码、 测试和实施。产品的模块化和重用 (Modularity and Reusability)问题,或者说产品组件问题, 需要在这个阶段解决。 提供关键安全功能的代码设计应该尽量简洁,以便能够以尽可能明确的方式发现错误。在早期阶段,需要考虑产品和组件的可测试性, 而不是在后
34、期考虑。在这个阶段,需要进一步仔细考虑在项目启动阶段提出的问题,保证详细设计中解决了每一个问题。在设计阶段所作的决定, 对开发阶段而言是关键的。 设计是用户需求转化为软件的唯途径;这样,软件设计就是整个产品开发的基础。软件开发在这个阶段, 程序员和开发者都需要深度参与。在这个阶段, 程序员应当持一种不允许产生软件缺陷的态度进行工作。正式或者非正式的测试应该尽快开始。单元测试( Unit Testing)可以在开发早期开始。不同的环境类型(开发、测试和生产)应当敢正确分离, 功能和操作不应该重叠。 安全测试应当针对项目早期识别出的风险。在这个阶段通常需要进行安全攻击和渗透测试来发现任何遗漏的软件
35、缺陷,功能、性能和抗渗透性被进一步评价。产品应该在不同的环境中测试不同的应用、不同的配置和不同的硬件平台。安装/实施实施阶段着重于如何使用和操作开发好的系统或者应用程序。在这个阶段, 用户已经购买了开发好的产品, 并安装到工作环境中。 产品需要配置到一个正确的保护等级,通过执行功能和性能测试并进行结果分析,验证产品是否满足用户的安全需求。系统配置应当被记录到文档中。要开发出用户指南和运行维护手册,以使用户知道如何正确使用系统, 使技术人员知道在需要时如何正确配置产品。需要监视安全活动,以确保系统或应用以服务水平协议(Service Level Agreement, SLA)保证的方式运行。认可
36、(Accreditation)应当在开发之后,系统应用开始运行之前进行。这个过程需要遵循认证过程, 正式或者非正式地测试所有的安全特征,以确认产品是否完成所需的安全功能。 认证(Certmcation)是一个检查和评估安全控制的过程,通常由外部独立的机构执行。 认可是管理层对系统的正式接受, 也是明确对风险的接受。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 21 页 - - - - - - - - - 旦确认新系统提供的安全功能并且理解和接受残余风险,管理层应当发布
37、一个正式的认可声明。 应当打开审计功能并监视事故恢复计划(Contingency Recovery Planning),开发响应程序并进行测试,以保证系统和产品在系统故障和紧急情况下能够正确响应。运行/维护运行保证( Operational Assurance) 通过以下活动执行:进行弱点测试、系统行为监控、事件审计。测试类型单元测试(Unit esting) 体组件位于一个受控的环境中, 程序员在这里确认数据结构、逻辑和边界条件。集成测试( Integration Testing) 验组件是否按设计规范中规定的那样协同工作。验收测试( Acceptance Testing) 保代码满足客户的
38、需求。回归测试 (Regression Testing) 进行系统变更后重新进行测试,以确保功能性、性能和保护级别。垃圾收集( Garbage Collection)是操作系统自动执行内存管理任务的一种方式。事后回顾事后回顾应该是有组织的活动, 有人主持会议和进行记录, 但对每一个成员应该有宽松和谐的气氛, 以使他们更好地表达观点和想法。重要的一点是, 会议不应该成为指责和抱怨的场所。 项目是一个不断学习的过程, 其职责是以最短的时间和最低的成本制造出最好的产品。理解这两点的益处, 使事后回顾成为每个项目的一部分,这对管理层来说是有益的。 最成功的情况是能够简化项目过程和项目管理,使之成为一个
39、能够达到期望质量等级的可重复过程,然后继续考虑如何改善项目和进一步积累。瀑布(waterfall)使用分离的开发阶段的经典方法,在进入项目的下一个阶段之前,要求正式的评审和文档记录。螺旋模型 (spiral model)建立于瀑布方法之上的一种方法,着重强调在开发周期不同阶段的风险分析、 原型化和模拟。 这种方法定期重访前面的阶段,以更新和验证设计需求。结构化编程开发 (structured programming development)这种编程方法涉及使用逻名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
40、 - - - - - 第 11 页,共 21 页 - - - - - - - - - 辑块以实现应用过程化编程的系统设计。结构化程序布局最小化转移控制语句(如 GOTO)的随意使用,并强调单个进出点。 这种层次化方式使得稍后能够更容易地理解和更改程序。结构化编程鼓励模块重用,从而优化内存利用。迭代开发 (iterative development)这种方法通过循环方式进行软件开发。与传统模型不同的是, 迭代开发关注通过持续评估项目的当前状态来筹划项目里程碑,而评估借助基于资源、 时段和执行计划的初始目标。 迭代开发提供了一种评估项目整体状态的动态方法,并且允许通过修正来改善项目的效率。改进原型
41、模型 (Modified Prototype Model, MPM) 作为在 Web 应用程序开发中所面对的挑战而专门开发的一种方法, 改进原型模型允许开发人员即时将客户需求转换为可显示的产品或原型。 改进原型通常用于开发人员和客户对产品的最终特性没有把握的情况。使用可改进的原型使得最终产品能够成为更清晰的系统规范。探索模型 (exploratory model)这种方法用于项目目标未被清楚定义的场合。探索模型关注的不是显式任务, 而是依赖于一组可能融入最终产品工作的隐式规范。测试是探索开发的一个重要部分, 以便确定项目的当前阶段是否遵从可能的实现场景。联合分析开发 (Joint Analys
42、is Development, JAD) 这种方法在一个面向工作间的环境中釆用工作组的方式开发应用程序。快速应用开发 (Rapid Application Development, RAD) 一种判断用户需求并快速开发系统以满足即时需要的方法。重用模型 (reuse model)这种模型通过使用日益增多的模型来进行软件开发。通过逐渐更改原有的原型以满足客户的需求,可重用程序不断演变。 因为重用模型不需要从头构建程序,所以显著减少了开发成本和时间。净室(cleanroom)通过遵循结构化且规范的开发和测试方法来力图防止错误和问题的解决途径。这种模型用于高质量和严要求的应用程序(通过严格的认证过程
43、 )。组件型开发 (component-based development) 这种模型将独立、标准的模块装配在可服务程序内。 每个标准模块都由一个功能算法或指令集组成,并且被提供一个与其他模块通信的接口。 经常用在面向对象的编程中的“对象”是这些模块的一个常见示例。组件型开发在程序中添加了可重用性和可插入的功能性,它广泛用在名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 21 页 - - - - - - - - - 现代编程中,以扩大程序的连贯性,并大大降低了软件维护成
44、本。极限编程 (extreme programming) 这种方法通常在要求快速适应以改变客户需求的场景中实现。 极限编程强调客户的反馈, 从而评估项目结果和分析可能需要进行一步注意的项目作用域。 极限编程的编码原则舍弃了传统的、为代码重用所执行的长期规划, 并致力于创建为同期工作而优化的简单代码。极限编程承认客户需求在整个项目生命周期中可能显著变化的事实,并且使用开发进程来调整这些变化。CASE 工具的目标就是在软件开发过程中支持一个或多个软件工程任务和活动,它们使用特定的工具在开发和详细分析中应用工程原理。很多情况下,有必要根据己搜集的软件产品需求开发一个模型供用户和开发人员使用。这个模型
45、叫做原型(Prototype),它可以向用户说明开发小组的前进方向以及对用户需求的解释。 原型使用户可以了解开发方向, 得到开发完成后产品的外观概念,向用户进一步解释需求方面的问题和疑惑。在开发过程中, 原型还可以使测试工作更早地进行, 以及早发现和解决问题或错误。有的项目庞大, 可能需要划分产品,以便每一部分都可以检查或建立其原型。如果没有正确处理, 开发和生产过程中的变更可能造成大量混乱。发生变更有几种原因。在开发阶段,用户可能会改变需求,增加、删除或者修改某些特定的功能。在生产阶段,变更可能会由环境改变造成,如对产品或系统的新的需求、新发布的补丁程序或者升级程序。 这些变化应当被严格控制
46、, 以保证每个变更都被批准、正确合并以及不会对原来的功能造成负面影响。配置管理(Configuration Management) 是控制产品生命周期和记录时必要的变更控制活动的过程。通常开发经理必须通报项目经理, 如果引入变更会需要多少额外的工作量,应该采取哪些步骤保证变更不会影响产品中的其他组件。此外,安全不能遭到破坏, 变更必须由管理层批准。 当一个程序员改变源代码时, 这种改变应该在代码的测试版本上进行。对源代码的变更绝对不能在代码的生产版本上进行。发生变更的代码,经过测试才能进入代码库中。 生产代码只能从代码库中得到, 而不能从程序员或者测试环境中得来。能力成熟度模型( Capabi
47、lity Maturity Model ,CMM) 描述软件开发流程的基本规程、原则和实践。该模型帮助软件公司改善软件开发过程,将一些“突发奇想”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 21 页 - - - - - - - - - 的行为变成一个有规律、可重复的步骤,从而提高软件质量,缩短开发周期,提供更好的项目管理能力, 允许创建并及时到达项目高度,增加有用步骤和减少反作用的步骤。该模型给出了软件开发的策略、规程、指南和最佳实践措施,可以用于不同的开发小组开发
48、标准化的软件开发方法。该模型通过不断评估和改善的过程来优化结果,提高性能,提高软件质量和降低成本。 这个模型是个分层框架,使不同的组织持续提高软件开发能力。它既可作为软件开发公司的工具,也可以用于评估软件开发商开发过程的一致性和软件质量。有 5 个能力成熟度级别 : 初始(Initial) 开发过程很随意, 甚至非常混乱。 该公司没有使用一个有效的计划和管理流程。没有一致性的保证,质量不可预测。可重复(Repeatable) 有正式的管理结构、 变更控制和质量保证。 该公司可以在不同项目中适当地重复一些过程。该公司没有正式定义过程的模型。定义(Defined) 有正式流程, 其中描述和定义了在
49、不同项目中的过程。该公司有办法对过程进行定量的改善。管理( Managed) 公司有一个正式的过程,可以收集和分析定性数据。过程改善程序定义了协调结构( Metrics)。优化( Optimizing) 公司对持续改善过程有了预算和整体计划。软件托管( Software Escrow)就是由第三方来保存软件的一份源代码以及相关资料。一个完全的结构化分析方法需要考虑所有的对象和应用程序的主体,映射它们之间的内部关系、 通信路径和继承特性。 这不同于数据建模 (DataModeling)。数据建模独立地考虑要处理的数据和处理数据的组件。数据模型需要从头至尾跟踪输入数据,并且验证输出的正确性。软件体
50、系结构( Software Architecture)包括将需求分隔成可以由单个软件方案解决的独立问题的过程。 这是在软件需求分析和组成最后应用程序的实际组件之间进行转换的过程。数据结构(Data Structure) 是对数据元素之间逻辑关系的表示。数据结构指明了元素间关联的程度、 访问方法、 处理选择和数据元素的组织。其他数据结构包括使用多向链表( Multilinked List)的层次结构( Hierarchical Structure),这些链表包含名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -