资源预览内容
第1页 / 共685页
第2页 / 共685页
第3页 / 共685页
第4页 / 共685页
第5页 / 共685页
第6页 / 共685页
第7页 / 共685页
第8页 / 共685页
第9页 / 共685页
第10页 / 共685页
亲,该文档总共685页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件工程基础 有效地开展软件开发和软件测评, 既要知其然,也要知其所以然. 北京大学软件工程国家工程研究中心 王立福,2009年4月,一、概论 -试图回答软件开发的本质及开发的基本手段 二、软件过程 -试图回答开发所涉及的活动及活动组织 三、软件需求及系统/产品(需求)规约 -试图回答软件开发的启始点及其工作产品 是产品/系统确认(测试)的标尺 四、软件开发方法学 -试图回答如何从事开发活动 五、CMM(the Capability Maturity Model for software) -试图回答获得正确产品/系统的过程能力保障,软件开发本质,软件生存周期过程,导出,软件生存周期模型,软 件 工 程 生 存 周 期 过 程,支持过程方向(活动与定序)的建立,形成,软件开发方法学 结构化方法 面向对象方法 面向数据结构 方法 维也纳开发方 法(VDM) ,给出实现开发过程的途径,支持/管理技术与方法,作用于,软件工程基本知识结构,一、概论 -软件开发的本质是什么? -软件开发的基本手段是什么?,正确认识软件开发, 是从事软件开发的思想基础.,1 软件开发的本质,问题域 -客观事物系统,概念不同,解决问题的思维逻辑不同 -“距离”,操作系统与语言处理系统,网络 计算机 -异构,VB、VC -程序设计环境,中间件技术与产品,应用框架,领域软件生产线,映射,运行(计算)平台,本质:问题域到不同抽象层之间概念和计算逻辑的映射.,例如1:问题空间的概念 与 解空间的模型化概念 之间的映射 对象 = F(张山) (模型化概念) (问题空间的概念) 这是一个抽象的过程-数据抽象. 其中, 对应的过程:需求分析 使用的方法:面向对象方法 基于的原理:数据抽象 目标:形成计算的客体。,例如2:问题空间的处理逻辑 与 解空间处理逻辑 之间的映射 加工1(及相关的数据流)=F(计算学生成绩),加工1 计算学生平均成绩,科目+年级/班,学生成绩文件,学生平均成绩,规约后的处理逻辑,这也是一个抽象的过程-过程抽象 其中:对应的过程:需求分析; 使用的方法:结构化方法; 基于的原理:过程抽象 目标:形成一种可构造的计算逻辑.,例如3: 交互图1=H(计算学生成绩) 其中:对应的过程:需求分析 设计 使用的方法:面向对象方法 基于的原理:行为结构抽象(简称行为抽象) 目标:形成一种可构造的计算逻辑.,:教务员,:教员,递交A科学生成绩表,A科学生成绩表,:教学主任,求A科平均,A科平均,2 实现映射的基本手段 何谓建立问题的模型: 运用所掌握的知识, 通过抽象,给出该问题的一个结构。,问题的结构化谱系 例如1 :y=x +5,结构化问题,非 结构化 或半结构化问题,建模:是解决问题的一般途径!,其中:采用数学作为建模工具,例如2:信用卡确认系统的功能模型,财务结算机构(负责信用卡帐户的结算服务),零售机构(顾客通过该机构刷卡,购买商品或服务。,其中:采用UML作为建模工具,何谓模型 any abstraction that includes all essential capabilities, properties,or aspects of what is being modeled without any extraneous details. Firesmith,Henderson-Sellers 具体地说,模型是在特定意图下所确定的角度和抽象层次上对物理系统的描述,通常包含对该系统边界的描述,给出系统内各模型元素以及它们之间的语义关系。,问题空间,需求-一个抽象层,设计-一个抽象层,实现-一个抽象层,部署-一个抽象层,验 证/ 确 认,3 软件系统或项的模型分类,-概念模型,-设计模型,-实现模型,-部署模型,软件模型,问题域 -客观事物系统,分层的基本动机是控制开发的复杂性, 一个抽象层是由一组确定的术语定义的.,二、软件过程 -软件开发要做那些映射-活动? -应如何正确组织开发活动,形成求解软件的 逻辑?,开发逻辑,是获取正确软件的关键.,软件开发本质,软件生存周期过程,定义,软件生存周期模型,软 件 工 程 生 存 周 期 过 程,支持过程方向(活动与定序)的建立,形成,软件开发方法学 结构化方法 面向对象方法 面向数据结构 方法 维也纳开发方 法(VDM) ,给出实现开发过程的途径,支持/管理技术与方法,作用于,1 开发所涉及的活动 - 软件生存周期过程 1)基本概念 为了表述软件开发需要做“什么活(映射)”,引入了以下三 个概念: 软件过程(process):活动的一个集合; 活动(activity):任务的一个集合; 注:”软件过程”和”活动”相当于复合映射. 任务(task): 将输入转换为输出的操作。 注:”任务”相当于原子映射.,2) 过程分类 按过程的主体,可分为三类过程: (1)基本过程(primary processes) 是指那些与软件生产直接相关的活动集。 (2)支持过程(supporting processes ) 是有关各方按其目标所从事的一系列支持活动集。 (3)组织过程(institutional processes) 是指那些与软件生产组织有关的活动集。,基本过程,支持过程,组织过程,(1)基本过程 又按过程中活动的不同主体,将基本过程(类)分 为5个过程:获取过程、供应过程、开发过程、 运行过程、维护过程,获取过程,基本过程,支持过程,组织过程,组织为,供应过程,开发过程,运行过程,维护过程,例如1:供应过程 供应过程是供方为了向客户提供满足需求的软件产品或服务所从事的一系列活动和任务。 其目的是向客户提供一个满足已达成需求的产品或服务。 该过程的启动,或通过为应答需方的招标书而开始编制投标书的决定,或通过与需方签订一项提供系统、软件产品或软件服务的合同。 继之,确定为管理和保证项目所需的规程和资源,包括编制项目计划,执行计划,一直到将系统、软件产品或软件服务交付给需方为止。,该过程包括的基本活动为: 启动; 准备投标; 签订合同; 规划; 执行和控制; 复审和评估; 交付和完成。,其中每一活动又包含一组特定的任务。例如“规划”活动包括下述任务: (1) 供方应复审获取需求,以便定义管理该项目、保证可交付的软件产品或服务质量的框架。 (2) 如果合同中没有规定采用什么软件生存周期模型,那么供方就应确定或选择一个适合于该项目的范围、规模和复杂度的软件生存周期模型,并应从本章中所述的过程、活动和任务中进行选择,并将它们映射到所选择的软件生存周期模型。,(3) 供方应为关于项目的计划建立适当的需求,以便管理该项目和保证可交付软件产品或服务的质量。这样的需求应包括资源的需要以及需方的参与。 (4) 一旦建立了有关规划的需求,供方就应该考虑: 是否利用内部资源来开发该软件产品或提供软件服务; 是否通过分包合同来开发该软件产品或提供软件服务; 是否从内部或外部来获得现货软件产品; 是否采用a)b)c)的组合。 并针对以上每一种选择给出风险分析。,(5) 供方应基于有关规划的需求和以上的选择,制订项目管理计划并形成文档。计划中应主要考虑包含以下条目: A)开发单位(包括外包单位)的项目组织结构、职责和职权; B)工程环境,包括可用的开发环境、运行环境、维护环境以及测试环境、程序库、设备、设施、标准、规程和工具; C)生存周期过程和活动的工作分解结构,包括要完成的软件产品、软件服务和非交付项以及预算、人员配备、物理资源、软件规模和与任务有关的进度; D)软件产品或服务的质量特性的管理,可以制订独立的质量计划; E)软件产品或服务的安全、安全保密和其他关键需求的管理,可以制订独立的安全、安全保密计划;,F)分包方管理,包括分包方选择以及分包方与需方之间的参与等; g)质量保证(见支持过程); H)验证和确认(见支持过程);包括指明与验证机构和确认机构的接口途径; i)需方参与,其手段如联合复审、审核、非正式会议、报告、修改和变更等; J)用户参与,其手段如需求是否实现的演练、原型演示和评估等; K)风险管理,即管理项目有关技术、成本和进度等方面的潜风险; L)安全保密策略,即在每一个项目组织层面上那些按需所知并访问信息的准则; M)诸如规章、所需的认证、专利权、使用权、所有权、担保权以及许可证授予权等方面所要求的批准;,N)进度安排、追踪和报告的方法; O)人员培训(见组织过程)。 注:关于该过程的其它活动和任务,请参见相关的标准。 总的来说,成功实现该过程的结果是: )对客户请求产生了一个响应; )在客户与供方之间建立了一个关于开发、维护、运行、 包装、交付和安装产品和/或服务的协定; )供方开发了一个符合协定需求的产品和/或服务; )根据协定的需求,向客户交付了该产品和/或服务; )根据协定的需求,安装了该产品。,例如2:开发过程 是软件开发者所从事的一系列活动。 包括13个活动: 过程的实施准备 系统需求分析 系统结构设计 软件需求分析 软件体系结构设计 软件详细设计 软件编码和测试 软件集成 软件合格测试 系统集成 系统合格测试 软件安装 软件验收支持,其中的活动:过程的实施准备(process implementation) 主要任务:-规划软件工程过程 依据项目的规模、 重要程度以及复杂性,定义或选 择软件生存周期模型并将开发过程的活动和任务 映射到该软件生存周期模型 依据文档过程,建立该过程文档;并将该文档置于 配置管理过程之下,并作为实施变更控制的依据; 依据问题解决过程,发现软件工作产品和任务中的 问题和不一致性,并建立相应的文档; 按合同规定,实现相应的支持过程,为执行开发过程和支持过程的活动,对开发组织所建 立的标准、方法、工具和计算机程序设计语言进行选 择、剪裁和应用 依据开发和验收的所有需求(包括安全),为执行过 程的活动制定相应计划,例如风险管理计划、质量保 证计划等,这些同样也包括标准、方法、工具、措施 以及责任等必要时这些计划可以分别建立,其中的活动:软件需求分析 主要任务: 建立软件需求规格说明书,其中包括: 功能和能力规约,包括性能以及为执行软件的物理特 征和环境条件; 质量特征规约(参考); 软件接口规约; 安全规约; 数据定义和数据库需求;用户操作和执行需求; 用户维护需求等, 考虑以下准则,对软件需求进行评估: 是否能够跟踪到系统需求、系统结构; 从外部上,是否与系统需求保持一致; 需求内部的一致性; 是否具有可测性; 设计、实现和维护的可行性等 依据联合评审过程,对软件需求进行评审,其中的活动:软件体系结构设计 该活动是针对每一个软件项(或已标识的软件配置项) 主要任务为: 把那些对软件项的需求转变为一种体系结构,即: 其中该体系结构描述了该项的顶层结构并标识各个软件部件。其中应确保对软件项的所有需求都被分配给了相应的软件部件,并为了进行详细设计而使该项的需求得到进一步细化。软件项的体系结构应形成文档。,软件体系结构设计,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号