软件工程导论资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•软件工程是:①将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;②在①中所述方法的研究
软件工程过程包括:开发过程、运作过程、维护过程、管理过程、支持过程、获取过程、供应过程、剪裁过程等
CMM(Capability Maturity Model)即能力成熟度模型,是美国卡内基梅隆大学软件工程研究所(SEI)在美国国防部资助下于二十世纪八十年代末建立的,用于评价软件机构的软件过程能力成熟度的模型。
•典型的软件过程模型有:
–瀑布模型(waterfall model)
–演化模型(evolutionary model)
–增量模型(incremental model)
–原型模型(prototyping model)
–螺旋模型(spiral model)
–喷泉模型(water fountain model)
–基于构件的开发模型(component-based development model)
–形式方法模型(formal methods model)
•是瀑布模型和演化模型的结合,并增加了风险分析
•螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:
–制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件
–风险分析:评价所选的方案,识别风险,消除风险
–工程实施:实施软件开发,验证工作产品
–客户评估:评价开发工作,提出修正建议
•喷泉模型是一种支持面向对象开发的模型
•体现迭代和无间隙特征
–迭代:各开发活动常常重复工作多次,相关的功能在每次迭代中随之加入演进的系统
–无间隙:开发活动之间不存在明显的边界
•所谓基于计算机的系统是指:通过处理信息来完成某些预定义目标而组织在一起的元素的集合
•组成基于计算机系统的元素主要有:软件、硬件、人员、数据库、文档和规程•本书将软件需求工程细分为:需求获取、需求分析与协商、系统建模、需求规约、需求验证和需求管理六个阶段。
•常用的分析方法:
–面向数据流的结构化分析方法(SA)
–面向数据结构的分析方法
–面向对象的分析方法(OOA)
•需求管理是一组用于帮助项目组在项目进展中的任何时候去标识、控制和跟踪需求的活动
•需求跟踪有两种方式,正向跟踪与逆向跟踪
–正向跟踪:以用户需求为切入点,检查《需求规约》中的每个需求是否都能
在后继工作产品中找到对应点
–逆向跟踪:检查设计文档、代码、测试用况等工作产品是否都能在《需求规约》中找到出处
•软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段:软件体系结构设计阶段和部件级设计
•使用一种设计方法,软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息被传送给设计阶段,产生数据/类设计、体系结构设计、接口设计、部件级设计
软件设计的原则:
抽象化与逐步求精;
•软件设计中主要抽象手段有:过程抽象和数据抽象
模块化;
信息隐藏;
功能独立;
•功能独立性可以由两项指标来衡量:内聚度与耦合度
软件体系结构关注系统的一个或多个结构,包含软件构件、这些构件的对外可见的性质以及它们之间的关系
•常见的软件体系结构
–单主机结构
–C/S(Client/Server)结构
–B/S(Browser/Server)结构
常用体系结构风格:
数据为中心的体系结构
数据流风格的体系结构
调用和返回风格的体系结构
面向对象风格的体系结构
层次式风格的体系结构
在这里要了解几个概念:
–程序结构的深度:程序结构的层次数称为结构的深度。结构的深度在一定意义上反映了程序结构的规模和复杂程度。
–程序结构的宽度:层次结构中同一层模块的最大模块个数称为结构的宽度。
–模块的扇入和扇出:扇出表示一个模块直接调用(或控制)的其它模块数目。
扇入则定义为调用(或控制)一个给定模块的模块个数。多扇出意味着需要
控制和协调许多下属模块。而多扇入的模块通常是公用模块。
部件级设计阶段,主要完成如下工作:
(1)为每个部件确定采用的算法,选择某种适当的工具表达算法的过程,编写部
件的详细过程性描述;
(2)确定每一部件内部使用的数据结构;
(3)在部件级设计结束时,应该把上述结果写入部件级设计说明书,并且通过复
审形成正式文档,作为下一阶段(编码阶段)的工作依据。
图形表示法:
•程序流程图
•N-S图
•PAD
设计评审:
•软件设计的最终目标是要取得最佳方案
•“最佳”是指在所有候选方案中,就节省开发费用,降低资源消耗,缩短开发时间的条件,选择能够赢得较高的生产率、较高的可靠性和可维护性的方案
设计评审的内容:
1. 可追溯性:即分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖了所有已确定的软件需求,软件每一成分是否可追溯到某一项需求。
2.接口:即分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。部件是否满足高内聚和低耦合的要求。部件作用范围是否在其控制范围之内。3.风险:即确认该软件设计在现有技术条件下和预算范围内是否能按时实现。
4.实用性:即确认该软件设计对于需求的解决方案是否实用。
5.技术清晰度:即确认该软件设计是否以一种易于翻译成代码的形式表达。
6.可维护性:从软件维护的角度出发,确认该软件设计是否考虑了方便未来的维护。7.质量:即确认该软件设计是否表现出良好的质量特征。
8.各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么。
9.限制:评估对该软件的限制是否现实,是否与需求一致。
10.其它具体问题:对于文档、可测试性、设计过程等等进行评估。
•评审分正式评审和非正式评审两种
•正式评审除软件开发人员外,还邀请用户代表和领域专家参加,通常采用答辩形式