软件工程导论复习

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程复习第1章基础知识2020/6/2312什么是软件•软件的定义—软件由三部分组成:–程序:在运行时,能提供所希望的功能和性能的指令集–数据:使程序能够正确运行的数据–文档:描述程序研制过程、方法及使用的文档•软件处理的是信息和逻辑–软件的开发,绝不仅仅是编写程序–软件围绕着逻辑进行–软件就是一个信息交换器–产生、管理、获取、修改、显示或传送信息2020/6/233•什么是软件危机–软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。•软件工程(IEEE)–1993年,提出软件工程–1)将系统化、规范化、可量化的工程原则和方法,应用于软件的开发、运行和维护。–2)对1)中方法的理论研究。2020/6/234•软件工程基本原理(开发与维护的指导)1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性2020/6/235•软件工程方法学–把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称范型(paradigm)。–软件工程方法学三个要素:方法、工具和过程。•方法是完成软件开发各项任务的技术,回答“如何做”;•工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什么做”;•过程是为获得高质量的软件要完成的一系列任务的框架,规定完成各项任务步骤,回答“如何控制、协调、保证质量”。管理方法2020/6/236•目前使用得最广泛的软件工程方法学。•传统方法学也称为生命周期方法学或结构化范型。–当软件规模较大,或对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不成功;–此外,使用传统方法学开发出的软件,维护起来通常都很困难。•结构化-静态分析,面向对象-动态分析世界万物是变化的传统方法学与面向对象方法学2020/6/237传统方法的特点•生命周期模型•软件过程划分为若干个阶段•每个阶段有各自的任务•阶段之间有某种顺序性2020/6/238•面向对象方法:1.对象作为融合数据及在数据之上的操作行为的统一的软件构件。2.把所有对象都划分成类(Class)。每个类都定义了一组数据和一组操作。3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,称为继承。4.对象彼此间仅能通过发送消息互相联系-封装性。数据:静态操作:动态EverythingisObject.2020/6/23大连理工大软件学院91.3软件生命周期•软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段,每个阶段有各自的任务。1软件定义2软件开发3运行维护2020/6/231101.问题定义2.可行性研究3.需求分析4.概要设计5.详细设计6.编码和单元测试7.综合测试8.软件维护2020/6/23111实际的瀑布模型软件过程模型(生命周期模型)2020/6/23112快速原型模型2020/6/23113增量模型•瀑布模型:力求一次性给用户完整的系统。•增量模型:逐步增加系统功能。•需要开放的架构设计。2020/6/23114完整的螺旋模型2020/6/23115喷泉模型•迭代是OO开发过程的主要特性。•喷泉模型是典型的面向对象生命周期模型。•“喷泉”体现了面向对象软件开发过程迭代和无缝的特性。•为避免喷泉模型的过分无序,把一个线性过程作为总目标。迭代2020/6/23116喷泉模型•迭代:逐步求精•阶段间没有明显的界限-面向对象的思想保证了各个阶段开发的一致性。迭代是OO开发过程的主要特性。喷泉模型是典型的面向对象生命周期模型。“喷泉”体现了面向对象软件开发过程迭代和无缝的特性。2020/6/23117可行性与需求分析•可行性研究–不是解决问题,而是确定问题是否值得去解决–较高层次的系统分析和设计过程•需求分析–发现、求精、建模、规格说明和复审的过程–反复求精多次细化,得出对目标系统的完整、准确和具体的要求。–建立数据模型、功能模型和行为模型等三种模型。–还要写出准确的软件需求规格说明。。2020/6/23119系统流程图•系统流程图–概括描绘物理系统的传统工具–用图形符号,以黑盒子形式描述组成系统的每个部件–程序、文档、数据库、人工过程2020/6/23120系统流程图例子•例子•每个符号用黑盒子形式定义了组成系统的一个部件。•没有部件内部的具体工作过程•箭头确定通过系统的逻辑路径(信息流动路径)2020/6/23121数据流图•数据流图(DFD)描绘信息流和数据从输入移动到输出的过程中所经受的变换。或或或符号含义数据的源点或终点数据流数据存储加工(数据处理)2020/6/23122加工中常见关系的符号表示符号含义由数据A和B共同变换为数据C由数据A变换为数据B和数据C由数据A或B,或者数据A和B共同变换为数据C由数据A变换为数据B或C,或者同时变换为数据B和C由数据A或B其中之一变换为数据C由数据A变换为数据B或C其中之一T*T*T+T+TT2020/6/23123组成数据流图的元素可以从描述问题的信息中提取源点/终点处理采购员仓库管理员产生报表处理事务数据流数据存储定货报表零件编号零件名称定货数量目前价格主要供应者次要供应者事务零件编号*事务类型数量*定货信息(见定货报表)库存清单零件编号库存量库存量临界值2020/6/23124把处理事务的功能进一步分解后的数据流图2020/6/23125•数据字典是关于数据的信息的集合,即对DFD图中包含的元素的定义的集合。•数据字典的用途是供人查阅不了解的条目的解释。提供分析设计过程中关于数据的描述。•数据字典与DFD相辅相成。•只有DFD和对应的元素的精确定义放在一起,才能构成系统的规格说明。2020/6/23126定义数据的方法•=意思是等价于(或定义为)•+意思是和(即,连接两个分量)•[]意思是或(即,从方括弧内列出的若干个分量中选择一个),用“|”号分开供选择的分量;•{}意思是重复(即,重复花括弧内的分量)•()意思是可选(即,圆括弧里的分量可有可无)。•使用上限和下限进一步注释表示重复的花括弧。–左边用上角标和下角标分别表明重复的上限和下限;–左侧标明重复的下限,在闭括弧的右侧标明上限。–例如:{A}和1{A}5含义相同。152020/6/23127数据字典的实现•CASE工具•人工卡片2020/6/23128实体—关系图•数据模型包含三种相互关联的信息:数据对象、描述数据对象属性及数据对象彼此间相互连接的关系。2020/6/23129某校教学管理ER图2020/6/23130学生和课程之间的E-R模型(a)学生和课程之间的多对多联系E-R模型;(b)将多对多联系转换为一对多联系E-R模型选课mn学号专业年级课名课号学时1n学号专业课名课号学时学号课号n1姓名课程学生姓名课程学分学生年级选课学分(a)(b)2020/6/23131其他图形工具•Warnier图2020/6/23132其他图形工具(3)•IPO图2020/6/23133其他图形工具(2)•IPO图–IPO图是输入、处理、输出图的简称•左边框中列出有关的输入•中间框中列出主要的处理•右边框中列出产生的输出•处理的顺序暗示了执行的顺序•箭头指出数据通信的情况2020/6/23134总体设计总体设计•概要设计和详细设计。–概要设计主要任务是通过仔细分析软件规格说明,适当地对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模块结构。–详细设计阶段详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。2020/6/23136•模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。–可以由许多程序员分工编写不同的模块–可以使软件结构清晰,便于扩展–使软件容易测试和调试,因而有助于提高软件的可靠性。–模块大小要适中,不过分细。2020/6/23137模块独立•模块的独立程度可以由两个定性标准来度量,分别称为内聚和耦合。–耦合:衡量不同模块彼此间互相依赖(连接)紧密程度;–内聚:衡量一个模块内部各个元素彼此结合的紧2020/6/23138•耦合是对一个软件结构内不同模块之间互•尽可能松散耦合2020/6/23139•数据耦合:•特征耦合:•控制耦合:•外部耦合:•公共耦合:•内容耦合:弱强尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。2020/6/23140•内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。•简单地说,理想内聚的模块只做一件事情•2020/6/23141•功能内聚:•信息内聚:•通信内聚:•过程内聚:•时间内聚:•逻辑内聚:•巧合内聚:强弱设计时应该力求做到高内聚。2020/6/23142•改进软件结构提高模块独立性•模块规模•深度、宽度、扇出和扇入•模块的作用域应该在控制域•力争降低模块接口•设计单入口单出口•模块功能2020/6/23143描绘软件结构的图形工具•层次图和HIPO图•2020/6/23144正文加工系统的层次图2020/6/23145正文加工系统的H图2020/6/23146结构图的例子—产生最佳解的一般结构2020/6/23147软件结构设计方法•面向数据流的设计方法的目标是给出设计软件结构•利用数据流图中的“映射“,把数据流图变换成软件结构。2020/6/231482020/6/23149•1.复查基本系统模型。2.复查并精化数据流图。3.确定数据流图具有变换特性还是事务特性。4.确定输入流和输出流的边界,从而孤立出变换中心。5.6.7.使用设计度量和启发规则对第一次分割得到的软件结构进一步精化。2020/6/23150数字仪表板系统的数据流图•精化数据流图•数据流图具有变换特性还是事务特性2020/6/23151具有边界的数据流图确定输入流和输出流的边界,从而孤立出变换中心2020/6/23152第一级分解的方法2020/6/23153数字仪表板系统的第一级分解完成“第一级分解”2020/6/23154第二级分解的方法2020/6/23155未经精化的输入结构完成“第二级分解”2020/6/23156精化后的数字仪表板系统的软件结构软件结构进一步精化2020/6/23157事务分析的映射方法2020/6/23158详细设计•详细设计阶段主要完成界面和程序过程设计.•过程设计应该在数据设计、体系结构设计和接•程序员将根据过程设计写出实际的程序代码。2020/6/23160•结构程序设计•如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化2020/6/23161过程设计的工具•程序流程图•2020/6/23162•盒图(N-S图)2020/6/23163•PAD2020/6/23164123456789国内乘客TTTTFFFF头等舱TFTFTFTF残疾乘客FFTTFFTT行李重量W≤30TFFFFFFFF╳(W-30)×2╳(W-30)×3╳(W-30)×4╳╳╳(W-30)×6╳(W-30)×8╳(W-30)×12╳判定表2020/6/23165用判定树表示计算行李费的算法判定树2020/6/23166•伪码2020/6/23167测试2020/6/23169•回归测试(已执行过的测试用例的子集)–检测软件全部功能的代表性测试用例。–专门针对可能受修改影响的软件功能的附加测试。–针对被修改过的软件成分的测试。2020/6/23170白盒测试技术•逻辑覆盖是设计白盒测试方案的技术。设计测试方案是测试阶段的关键技术问题。2020/6/231711.语句覆盖–为暴露程序的错误,至少每个语句应该执行一次。–含义是,选择

1 / 135
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功