软件工程导论白城师范学院计算机系2005年3月第一章软件危机和软件工程(3)软件危机的表现•开发成本难以控制,进度不可预计;•软件系统的质量和可靠性很差,难以满意;•软件文档相当缺乏,软件系统不可维护;•软件开发生产率很低,软件产品供不应求。•软件产品成本十分昂贵。软件危机产生的原因•软件本身的特点:--软件是一种逻辑实体,而不是具体的物理实体,具有高度的抽象性;--软件是一个逻辑上复杂而规模上庞大的系统,涉及技术、管理等多方面的问题;--软件的生产方式与硬件明显不同:产品的质量控制在设计和制造阶段的不同;产品的生产方式不同;设计和制造阶段的资金和人力投入、技术复杂度不同;--软件的运行和维护阶段,没有传统意义上的机械磨损、老化问题。--软件与硬件有关,对软件有可移植性的要求。--软件工作涉及许多社会因素。•对软件开发与维护存在许多错误认识和做法:忽视软件需求分析的重要性;对软件与程序的概念不清;轻视软件维护。•软件开发与维护的方法不正确:对系统需求没有清楚和准确的认识就进入开发阶段,忽视对软件开发过程的管理;……1.1软件危机磨合调整磨损用坏t失效率硬、软件产品失效率曲线第一章软件危机和软件工程(4)软件的定义(Boehm):软件是程序以及开发、使用和维护程序需要的所有文档。早中晚引入同一变动付出的代价随时间变化的趋势改正一个问题的估计费用(美元)改正一个问题的估计工作量(人·天)20200100020000.050.52.55.0RASDDDCDITSTRTBell实验室统计结果(US)软件产品需要分阶段的定义、设计和开发,严格的产品质量控制,完整的文档记录。5060708090硬件软件第一章软件危机和软件工程(5)解决软件危机的途径•将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。•研究和推广成功的软件开发技术和方法。•开发和使用好的软件工具。•基本概念:软件生命周期:软件所经历的定义、开发、使用和维护直到废弃所经历的时期。程序设计环境:源程序编辑,编译或解释,链接,调试和运行工具的集合。软件工程环境:软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合。1.2软件工程1.软件工程的基本原理•用分阶段的生命周期计划严格管理6类计划–项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划。•坚持进行阶段评审1)经验数据说明,大部分错误是在编码之前造成的,在整个软件设计错误中,设计错误占63%,而编码错误占37%。2)错误发现和改正得越晚,所需付出的代价就越高。•实行严格的产品控制主要实行基准配置管理。软件配置成分:软件开发各个阶段产生的文档和代码。基准配置:经过评审后的软件配置成分。•采用现代程序设计技术提高开发和维护的效率,如结构化分析SA和结构化设计SD技术。•结果应能清楚地审查•开发小组的人员应少而精1)软件开发的进度并非与参与开发人员的数量成正比,有时恰恰相反。2)软件产品的质量绝对与开发人员的素质相关。•承认不断改进软件工程实践的必要性1.2软件工程(续1)2.软件工程的传统途径—生命周期方法学•生命周期方法学的基本内容从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。•生命周期方法学的应用方法从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发;前一个阶段任务的完成是后一个阶段工作的前提和基础,而后一个阶段任务通常是使前一阶段提出的解法更进一步的具体化,加进了更多的实现细节。•阶段过渡方法每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作开始的标准。技术审查和管理复审。•基本概念文档及其作用。3.生命周期各阶段的基本任务问题定义→可行性研究→需求分析→总体设计(概要设计)→详细设计→编码和单元测试→综合测试→软件维护。1.2软件工程(续2)4.瀑布模型问题定义特点:1)阶段间具有顺序性和依赖性2)推迟实现的观点3)质量保证的观点。可行性研究需求分析总体设计详细设计编码与单元测试综合测试软件维护软件定义时期软件开发时期软件维护时期1.2软件工程(续3—生命周期各阶段的基本任务)问题定义可行性研究需求分析总体设计详细设计编码与单元测试综合测试软件维护要解决的问题是什么?问题性质、工程目标和规模的报告分析员:实际用户+负责人是否有解决办法?分析员高层逻辑模型,准确和具体的工程规模和目标,成本/效益分析等可行性报告为了解决的问题,目标系统必须做什么?准确确定系统的功能系统的逻辑模型(数据流图+数据字典+简要算法)如何解决这些问题模块划分软件结构如何具体地实现系统:每个模块的流程图(程序的详细规格说明)通过各种类型的测试,使软件达到预定的要求写出正确的容易理解和容易维护的程序模块通过各种必要的维护活动使系统持久地满足用户的需要1.3技术审查和管理复审1.必要性•管理复审和技术复审•错误传播模型原始要求正确的规格说明错误的规格说明正确的设计错误的设计对错误说明的设计正确编码错误编码对错误设计的编码对错误说明的编码正确功能可改正的错误不可改正的错误潜伏的错误需求分析设计编码测试错误的扇形传播模型第二章可行性研究2.1可行性研究的任务用最小的代价在尽可能短的时间内确定问题是否能够解决。问题定义可行性研究问题定义正确?问题定义阶段审查系统的逻辑模型技术可行性经济可行性操作可行性实际的物理系统否是系统实现方案若干可行性研究需要的时间长短取决于工程的规模,一般来说,其成本只能占预期的工程总成本的5%~10%.可行性研究的结论可行性研究阶段任务(示意图)2.2可行性研究的步骤复查系统的规模和目标研究现正在使用的系统新系统的高层逻辑模型重新定义问题导出和评价供选择的解法推荐行动方针草拟开发计划书写文档提交审查用户分析员是否符合系统目标逻辑模型表达了系统分析员对新系统必须作什么工作、完成什么任务的理解.1.是否继续该工程的开发的建议2.所选择解决方案的解法的说明3.比较仔细的成本/效益分析2.2可行性研究的步骤(续)•进厂载重汽车进厂后至称重计量点称出货物毛重。•计量人员读出称重仪表上的重量指示,数据,开具相应的流转单(货物、毛重、车号、收发货单位名称等的凭据)。•货主持此流转单将货物送到接收单位,验收合格后签章以示有效,卸空后空车返回称重计量点称出皮重,计量人员。•计算出净重以后收回流转单,出具计量单作为正式结帐凭据,货主即可开车离厂。结帐付款一般在财务处定期核对进行。研究目前正在使用的系统这个计量流程存在以下问题:1该计量点日平均过车(仅进厂)1500多辆,如果每车都要返回称重去皮,则称重工作量成倍增加,经常引起严重的交通堵塞问题。2由于是用汽车衡称量,人工看表读数,手工验车开票,所以工作效率十分低,有时竟引起长达1公里的堵车现象,难以满足日车流量的要求。3为了克服车流量大而引起的工作量繁重的问题,对一部分送货单位的车型、车号相对固定的车实行定期称量空车,这样虽然减少了一定的称重工作量,但易引起车型车号不符、皮重不实的问题,在管理上也有漏洞存在。4在验票、开票等过程中大量存在人工干预,往往会出现计量差错、人情重量、违法乱纪乃至犯罪的情况,给企业造成非常严重的经济损失。原系统的工作流程如图2。2.2可行性研究的步骤(续)系统要求•自动称量,提高工作效率;•自动除皮;•自动去杂和去水;•数据自动汇总;•任意点均可称量;2.2可行性研究的步骤(续)财务处计量点•整个称重点采用两台汽车衡、分布在公路两侧,物理上将进厂和出厂的车流分开,实行一侧称重,而另一侧回皮。•实现称重过程微机全过程自动化处理(免除人工操作),保证称重数据的客观公正和有效准确性,称重重量,车号等数据自动存储,实现多个称重点按权限共享和引用。•能对称重,计量数据的物资品种,供货单位,接收单位,供货车号均可分工作班次,日,旬,月进行分类查询和统计处理。一方面进一步减轻工作人员的负担,另一方面也使管理人员时时可掌握各种有关数据。•如果一侧称重点出现故障,另一侧称重点也可用微机称重和计量,进行以上工作。•可以随时将计量数据转发到计控处管理机,进入企业管理计算机网。技术问题•称量自动化的程度:车号识别,杂质处理•数据通信方式:有线,无线•开票处理:2.2可行性研究的步骤(续)2.3系统流程图系统流程图:描绘物理系统的工具,其基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达的是信息在系统各部件之间流动的情况。1.常用符号处理输入/输出连接换页连接数据流文档磁带联机存储磁盘显示人工输入人工操作2.例子事务库存清单程序定货信息报告生成程序定货报告某装配厂有一座存放零件的仓库,仓库中现有各种零件的数量和每种零件的库存临界值等数据存放在库存清单主文件中。当仓库中零件数量有变化时,应及时修改库存清单主文件,如果哪种零件的库存量少于它的库存量临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告。3.分层(略)库存清单主文件(复杂系统)2.4数据流图数据流程图:描绘系统的逻辑模型,图中没有具体的物理元素,只是描绘信息在系统中流动和处理的情况。设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体的实现这些功能。1.符号(四种基本符号)数据的源点或终点数据处理数据存储数据流一些附加符号(略)仓库管理员定货系统采购员D1:库存清单仓库管理员1处理事务2产生报表采购员D2:定货信息2.例子基本系统模型功能级数据流图事务定货报表事务定货报表定货信息定货信息库存清单2.4数据流图(续1)仓库管理员1.1接收事务1.2更新库存清单1.3处理定货2产生报表采购员D1:库存清单D2:定货信息事务事务库存信息定货信息定货信息定货报表3.命名•为数据流(或数据存储)命名•为处理命名4.用途•交流信息的工具•分析和设计的工具•进一步设计的依据库存清单2.5数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合1.数据字典的内容•数据流•数据流分量•数据存储•处理数据处理:用IPO图或PDL描述比较方便直观。数据元素的别名:~2.定义数据的方法•由数据元素组成数据的方式的三种基本类型顺序+:以确定次序连接两个或多个分量a+b+c选择|,[]:从两个或多个可能的元素中选取一个[a|b|c]重复{}:把指定的分量重复零次或多次{a}•可选:一个分量是可有可无的(重复零次或一次),(a)3.例子定货报表={零件编号+零件名称+定货数量+目前价格+主要供应者+次要供应者}零件编号=8{字符}8定货数量=1{数字}5需求分析示例—教材购销管理系统(1)•问题描述:学校教材科根据业务的需要,建立一个学校教材购销管理系统,提高教材采购、销售和信息管理的效率。学生张秘书购书申请王会计李出纳赵保管学生购书证明购书申请购书申请书学生审查有效性购书单开发票开领书单发书学生有效购书单发票领书单书学生审查并开发票购书单开领书单发书学生发票领书单书2)去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型1)通过对现实环境的调查研究,获得当前系统的具体模型3)分析当前系统与目标系统的差别,建立目标系统的逻辑模型。需求分析示例—教材购销管理系统(2)学生审查并开发票购书单开领书单学生发票领书单无效书单4)对目标系统进行补充和完善,并写出完整的需求说明。学生1审查并开发票购书单2开领书单学生发票领书单无效书单各班学生用书表教材存量表5)对需求说明进行复审,直到确认文档齐全,并且符合用户的全部需求为止需求分析示例—教材购销管理系统(3)学生教材购销管理系统书库保管员1.教材购销管理系统的顶层DFD学生书库保管员2.第二层DFD图—教材购销系统购书单领书单缺书单进书通知购书单领书单1销售2采购进书通知F2:缺书登记表F1:教材存量表缺书单进书通知需求分析示例—教材购销管理系统(4)1.1审查有效性1.2开发票有效购书单1.3领书并开领书单发票1.4登记缺书1