软件工程SoftwareEngineering李玉蓉08/09/28教材购销系统主要功能根据学校的教学计划,向选课的学生及时供应所需教材①审查学生购书单有效性,对有效书单发售教材②对属于计划供应但暂时缺货的教材进行登记根据缺书登记补充采购所缺的教材,通知学生补购①将缺书登记表汇总为待购教材计划②待购教材到货后,及时通知学生补购“教材购销系统”数据流图顶层DFD二层DFD—销售子系统学生采购子系统学生F3学生用书表F4售书登记表1.1审查有效性购书单无效书单有效购书单1.2开发票发票1.3登记并开领书单领书单F2缺书登记表F1学生用书表1.5补售教材补售书单1.4登记缺书暂缺书单进书通知单缺书记录二层DFD—采购子系统F2缺书登记表销售书库保管员2.1按书号汇总缺书2.2按出版社统计缺书2.3修改教材库存待购量F6教材一览表F1教材存量表F5待购教材表进书通知单进书通知单缺书单“教材购销系统”的基本加工(1)“教材购销系统”数据流图中共有八个基本加工:1.1审查有效性(1)查询“学生用书表”和“售书登记表”;(2)将不合要求的购书单(无效书单)退回学生;(3)将“有效购书单”送下一步“开发票”处理。1.2开发票(1)根据“有效购书单”和“补售书单”,查询“教材存量表”;(2)若教材存量中有“有效购书单”上的书,开出“发票”,送下一步“登记并开领书单”处理;若教材存量中无“有效购书单”上的书开出“暂缺书单”,送下一步“登记缺书”处理;1.3登记并开领书单(1)根据“发票”开出“领书单”交给学生;(2)同时修改“售书登记表”。“教材购销系统”的基本加工(1)1.4登记缺书根据“暂缺书单”修改“缺书登记表”。1.5补售教材(1)根据“缺书登记表”开出“缺书记录”送“采购子系统”。(2)根据“进书通知书”开出补售书单送下一步“开发票”处理。2.1按书号汇总缺书根据“缺书记录”查询“教材存量表”,按书号排序汇总缺书,生成“待购教材表”文件。2.2按出版社统计缺书根据“待购教材表”和“教材一览表”按出版社汇总生成“汇总缺书单”送书库保管员。2.3修改教材存量和待购量(1)输入“进书通知单”;(2)根据“进书通知单”修改“教材存量表”和“待购教材表”;(3)同时将“进书通知单”送下一步“销售教材”处理。1.数据项:是数据元素的最小单位,是不能再分的基本数据元素。如“姓名”、“学号”等。数据项是对数据静态特性的定义,内容包括:数据项的名称、别名、类型、简述、取值范围和长度等。例如:“教材存量表”中的数据项“库存量”.数据字典中各项内容的定义2.数据流(1)数据流表示:利用特定的符号,列出组成数据流中的各数据项。(2)在数据字典中,数据流除包括名称和组成它的数据项外,还应指明它的来源、去向和流通量等。例如:发票。.数据字典中各项内容的定义3.数据存储(1)数据存储是数据停留或保存的场所,在数据字典中,数据存储只描述数据的逻辑存储结构,而不涉及它的物理组织。(2)数据存储的组成:编号、名称、简述、关键字和相关联的处理等。例如.数据字典中各项内容的定义4.外部项(实体):它是软件之外的实体(人、物或其它软件系统).例如:学生。.数据字典中各项内容的定义“教材购销系统”IPO图课堂习题1、假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得的的结果应该精确到小数点后4位。一旦实现并测试完之后,改产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你作出选择的理由。题目解答1、对这个软件的需求很明确,实现开方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。课堂习题2、假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。这个项目是开发该公司已被广泛使用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。综上所述,采用增量模型来完成这个项目比较恰当。P54页第5题:电话号码=【校内电话号码|校外电话号码】校内电话号码=非零数字+3位数字校外电话号码=【本市号码|外地号码】本市号码=数字零+8位数字外地号码=数字零+3位数字+8位数字非零数字=【1|2|3|4|5|6|7|8|9】数字零=03位数字=3{数字}38位数字=非零数字+7位数字7位数字=7{数字}7数字=[0|1|2|3|4|5|6|7|8|9]P73页第3题E-R图:储户储蓄所存取款MN姓名住址电话号码身份证号码名称住址电话号码到期日期数额类型利率密码计算机储蓄系统的实体——联系图P73页第3题数据流图:储户存款单记录存款信息1存款信息打印存款单2存款存单储户D1存款信息核对密码3存款信息计算利息4取款单利息值打印利息清单5利息清单P73页第5题数据流图:病人生理信号接收信号1分析信号2警告信息护士D2患者日记更新日记5产生病情报告6定时的生理信号要求报告产生警告信息3病情报告生理信号危急病人信息D1患者安全范围定时取样生理信号4日期时间时钟生理信号录入统计计算某班学生成绩,画出数据流图(DFD)。学生成绩表数据结构如下:学号|高数|物理|英语|计算机|法律常识|总分|平均分|不及格门数|升留补|需求功能如下:1.录入全班学生各课的考分,生成成绩表;2.检查各课成绩,修改错误,补充未录入成绩,删除非法成绩;3.计算总分,平均分;4.统计不及格门数,然后再写入升级、补考、留级;5.打印成绩通知单,交家长。课堂练习:教务处学生成绩表录入学生成绩1D1检查学生成绩2学生成绩计算总分/平均分3计算不及格门数4打印成绩通知单6家长本人成绩通知单错误成绩通知课堂练习:开始Y取下一部门打开职工工资表取下一职工性别年龄职务?处科员+50+45+35写入工资表55=55女N=年龄-55工资*1.05N=0?N-1年龄职务?处科员+50+40+30写入工资表65=65N=年龄-65工资*1.04N=0?N-1下一职工?下一部门?结束NNY附注:女退休后每年工资加5%男退休后每年工资加4%例普调工资男例题解答打开部门工资表性别女男年龄年龄55=5565=65职务N=年龄-65处科员+50+45+35处科员+50+40+30工资=工资+增资写入工资表写入工资表工资=工资+增资职务N=年龄-55工资*1.05工资*1.04N=N-1N=N-1写入工资表写入工资表下一部门?下一职工?普调工资的N-S图例题解答UNTIL没有下一部门?P1P1def打开部门工资表UNTIL没有下一职工?P2defP2性别女年龄男=5555职务处科员+50工资=工资+增资+45写入工资表+35N=年龄-55UNTILN=0?P3写入工资表P3defN=N-1工资*1.05普调工资的PAD图P174页4题(3)(1)语句覆盖的测试用例因为每个判定表达式为真为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句覆盖的典型测试用例:1、使3个判定表达式之值全为假输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=32、使3个判定表达式之值全为真输入:A=20,B=40,C=60预期的输出:X=1,Y=2,Z=3P174页4题(3)(2)路径测试的测试用例本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据。下面是实现路径覆盖的典型测试用例:1、3个判定表达式之值全为假输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=32、3个判定表达式之值依次为假、假、真输入:A=1,B=1,C=60预期的输出:X=1,Y=2,Z=30P174页4题(3)3、3个判定表达式之值依次为假、真、假输入:A=1,B=40,C=1预期的输出:X=1,Y=20,Z=34、3个判定表达式之值依次为假、真、真输入:A=1,B=40,C=60预期的输出:X=1,Y=20,Z=305、3个判定表达式之值依次为真、假、假输入:A=20,B=1,C=1预期的输出:X=10,Y=2,Z=3P174页4题(3)6、3个判定表达式之值依次为真、假、真输入:A=20,B=1,C=60预期的输出:X=1,Y=20,Z=307、3个判定表达式之值依次为真、真、假输入:A=20,B=40,C=1预期的输出:X=10,Y=20,Z=38、3个判定表达式之值全为真输入:A=20,B=40,C=60预期的输出:X=10,Y=20,Z=30按黑盒法分析合理与不合理等价类,设计测试用例。某涉外五星宾馆招聘服务员,条件为(1)男,年龄18-28,身高1.65-1.85米,高中以上文化程度;(2)女,年龄18-25,身高1.6-1.75米,高中以上文化程度;(3)外语:英语通过4级;(4)身体健康,无疾病;(5)五官端正,无残疾;按黑盒法设计测试用例的解答:条件合理等价类不合理等价类年龄:男:18~28(1)18(2)28(3)女:18~25(4)18(5)25(6)身高:男:1.65~1.85米(7)1.65(8)1.85(9)女:1.6~1.75米(10)1.6(11)1.75(12)文化:高中及高中以上(13)高中以下、小学(14)英语:通过四级(15)四级以下(16)健康:无疾病(17)有疾病、残疾(18)预期:通过报错测试用例设计结果:1.合理测试用例1:男,21岁,1.75米,本科,过四级,健康。覆盖了合理等价类1、7、13、15、17;2.合理测试用例2:女,20岁,1.7米,本科,过四级,健康。覆盖了合理等价类4、10、13、15、17;3.不合理测试用例:男,15岁,1.75米,本科,过四级,健康。覆盖了2;4.不合理测试用例:男,30岁,1.75米,本科,过四级,健康。覆盖了4;5.不合理测试用例:男,21岁,身高1.5米,本科,过四级,健康,覆盖了9;6.不合理测试用例:男,21岁,身高2.2米,本科,过四级,健康,覆盖了10;7.不合理测试用例:女,15岁,1.7米,本科,过四级,健康,覆盖了5;8.不合理测试用例:女,29岁,1.7米,本科,过四级,健康,覆盖了6;9.不合理测试用例:女、身高1.5覆盖了11,其它数据略;10.不合理测试用例:女、身高2.0覆盖了121,其它数据略;11.不合理测试用例:男、文化:小学,覆盖了14,其它数据略;12.不合理测试用例:男、英语四级以下覆盖了16,其它数据略;13.不合理测试用例:男、健康有肺病,覆盖了18,其它数据略;14.不合理测试用例:女、文化:小学,覆盖了14,其它数据略;15.不合理测试用例:女、英语四级以下覆盖了16,其它数据略;16.不合理测试用例:女、健康有肺病,覆盖了18,其它数据略;