软件工程-哈尔滨工业大学_第1页
软件工程-哈尔滨工业大学_第2页
软件工程-哈尔滨工业大学_第3页
软件工程-哈尔滨工业大学_第4页
软件工程-哈尔滨工业大学_第5页
已阅读5页,还剩413页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《软件工程》

SoftwareEngineering2024/2/25在一些人眼里,今天的软件开发似乎已成为简单的事情,已有了不少很好的开发工具和软件库,软件开发人员训练有素,都强烈渴望去编写很酷的软件,可以在几天的时间里编写出一个相当复杂的软件。但为什么有一些软件能够得到用户的喜欢,而另一些则不能?为什么有些软件能够在市场上成功,而有些则受到冷落?由此可见,开发软件并不一定难,难就难在如何开发有用的软件。微软凌小宁博士2024/2/25我最大的心得是,一个产品一定要找到能够真正适用的场合,不能只是为了技术而从事技术为了研究而进行研究,却不管用户对你所研究的技术和产品有没有需求。否则,无论你的技术是多么优秀,多么先进,恐怕你的产品在市场上都无法获得成功。微软张益肇博士2024/2/25软件工程是计算机科学与技术专业的一门专业核心课程。通过本课程的学习,使学生掌握系统的软件开发理论、技术和方法,使用正确的工程方法开发出成本低、可靠性好并在机器上能高效运行的软件,为今后从事软件开发和维护打下坚实的基础。课程的性质、目的与任务2024/2/25本课程比较全面、系统地介绍软件工程的概念、技术与方法。主要内容包括:软件工程概述、软件生存周期及软件需求分析、软件设计方法、软件测试技术等。

通过本课程的学习,使学生能真正的从中了解软件开发的整个过程。为了让学生真正得以实践,结合实际软件开发项目,让学生从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件还要进行测试,这样一个软件开发过程,从而使学生掌握软件开发的基本技能。课程主要内容2024/2/25学习本课程的基本要求本课程是继程序设计课程之后,对提高学生软件开发能力有重要作用的一门课程。要求学生在学习本课程前应掌握信息管理系统、数据结构、结构化程序设计、面向对象程序设计以及程序设计方法论。通过本课程的学习,为学生后期的毕业设计环节奠定了良好的基础。2024/2/25各章学时安排2024/2/25第一章软件工程概述水利工程建筑工程机械工程……软件工程本章将对软件的地位和作用、软件的特点、软件的发展、软件的危机以及软件工程学科的形成、软件生期等方面的问题和基本概念传统工程新兴工程气象工程生物工程2024/2/251.1软件的概念与特点1、软件softwaresoft+ware软制品(软体)软件是计算机系统中与硬件相互依存的另一部分。它包括程序、数据及其相关文档的完整集合。2024/2/252、软件特点.

软件是一种逻辑实体,而不是具体的物理实体.

软件的生产与硬件不同.在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题磨合调整磨损用坏修改点实际曲线理想曲线硬件失效率曲线时间失效率时间失效率软件失效率曲线2024/2/25.

软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件1950197019851995硬件2024/2/253、软件的分类1、按软件的功能进行划分系统软件支撑软件应用软件2024/2/25支撑软件一般类型:文本编辑程序文本格式化程序支持需求分析:PSL/PSA问题描述语言关系数据库管理系统支持设计:图形软件包结构化流程图绘图程序支持测试:静态分析器测试覆盖检验程序支持实现:编辑程序连接编辑程序支持管理:标准检验程序库管理程序2024/2/252、按软件的规模进行划分

按开发软件所需的人力、时间以及完成的源代码行数。类别参加人数研制期限产品规模(源代码行数)微型小型中型大型甚大型极大型112-55-20100-10002000-50001-4周1-6周1-2年2-3年4-5年5-10年约500行约2000行5000-50000行5万-10万行100万行1000万行2024/2/253、按软件开发划分软件项目开发软件产品开发2024/2/251.2软件工程的概念及范畴1、“软件工程”----SoftwareEngineering于1968年NATO组织在德国召开的一次会议上提出是把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。2024/2/25软件工程学

软件开发技术

软件工程管理软件开发方法学软件工具软件工程环境软件工程管理学软件经济学----软件工程学的范畴2、软件工程学2024/2/25

Wakeupeverydaywithafeelingofpassionforthedifferenttechnologywillmakeinpeople’sLife.微软企业文化宗旨部分内容

每天醒来的时候,要对技术给生活造成的改变始终拥有一份激情。2024/2/25程序3、软件的演变(即从传统软件开发到现代软件开发)软件软件产品传统软件开发现代软件开发1975198920000.00016240营业额增长曲线802024/2/251.3软件生存周期把软件从产生、发展到成熟、直至衰亡为止(SWlifecycle)2024/2/25特点:上一阶段的变换结果是下一阶段的变换的输入,相邻两个阶段具有因果关系,紧密相联。需求分析问题定义可性行研究计划时期概要设计详细设计编码测试开发时期运行与维护运行时期软件生存周期模型(瀑布模型WaterfallModel)2024/2/25原型模型(PrototypeModel)加工原型原型原型:是指模拟某种产品的原始模型快速分析和设计建造原型客户评价原型1、原型系统仅包括未来系统的主要功能,以及系统的重要接口。2、为了尽快向用户提供原型,开发原型系统时应尽量使用

能缩短开发周期的语言和工具。2024/2/25

第二章问题的定义与可性行研究

当我们在着手做任何一件工作以前,必须明确工作的性质、任务,制定完成任务的计划,这是非常必要的。同样对于软件产品的开发,显然也应该解决好这样类似的问题,明确该软件产品开发的任务,以及完成任务的价值从而制定出完成任务的计划。那么问题的定义和可性行研究就是制定软件系统的计划的第一步。所以在软件工程中把这一步称为计划时期2024/2/25开始问题定义可性行研究可行否?项目实施计划终止项目的建议结束Y计划时期的工作流程图N2024/2/25Who为谁设计,用户是谁?What要解决哪些问题?Why为什么要解决这些问题

3W

WinCE1.0

有用的软件2024/2/252.1现状调查和问题的定义目的:弄清楚用户要求计算机解决什么问题任务:编写系统目标与规范说明书系统目标与规范说明书1、项目:教材销售系统2、问题:人工销售教材手续繁琐,容易出错3、项目目标:建立一个高效率、无差错的计算机教材销售系统4、项目范围:利用现有的计算机,软件开发费用不得超过2000元5、初步想法:建议在系统中增加对缺书的统计与采购功能6、可性行研究:建议进行大约10天的可性行研究,且研究费用不超过500元2024/2/252.2可行性研究与论证1、经济可行性:进行成本效益分析,评估项目的开发成本。基于计算机系统的成本由四部分组成1、购置软、硬件及有关设备费用2、系统开发费用3、系统安装和维护费用4、人员培训费用费用其论证的焦点是:围绕着对系统开发的价值进行论证2024/2/25举例:关于开发CAD系统的软件开发成本及效益分析

12345

年6040200成本-效益(万元)该系统节省经费该系统成本盈亏平衡点投资回收期---------成本及效益分析图2024/2/252、技术可行性:对系统的性能、可靠性、可维护性以及生产率等方面的信息进行评价。通过技术可行性的分析,将为新系统提交技术可行性评估。以指明为完成系统的功能和性能需要什么技术?需要哪些材料、方法、算法、或者过程等技术可行性分析方法---数学模型和优化技术、概率和统计、排队论、控制论等方法。2024/2/25可行性论证报告1、系统概述2、可行性分析3、拟订开发计划4、结论意见2024/2/252.3可行性分析所需工具(系流程图与系统结构图)1、系统流程图:是用来描述系统物理模型的一种传统工具。2024/2/252024/2/25举例库存清单系统流程图库存清单程序定货报告事务定货信息结束报告生成程序零件库2024/2/25人工销售教材流程图结束学生申请购书购书证明检索教材帐本是否有该教材购书单开购书发票和购书单购书发票到书库领书2024/2/25计算机售书系统流程图结束学生购书发票到书库领书购书单终端审查并开发票11---学生各学期用书数据库购书单22---教材存量数据库2024/2/25练习设某城市招干考试成绩统计系统。考生分三个专业,不同专业考试科目不同:法律专业---考政治、语文、法律行政专业---考政治、语文、行政财经专业---考政治、语文、财经学每个考生在报名时登记姓名、地址、年龄和报考专业。报名后招干办公室根据专业考生专业及地址在市区或郊区来编排准考证号码和考场。考生参加考试后,输入每个考生的各门课程的成绩,并统计出每个考生三门课程的总成绩。按准考证号的顺序打印出考生考试成绩单,分发给每个考生。各专业分别将考生按成绩总分从高到低的次序排序,以便决定录取名单。请画出由下列文字描述的系统流程图2024/2/252、系统结构图:系统工程师用结构摸板开发的系统模型用户界面处理输入处理维护和自测试处理和控制功能输出处理----结构摸板----2024/2/25-------传输线的分类系统3、系统结构环境图(ACD-ArchitectureContextDiagram)

:ACD

可用于描述实现系统与系统运行环境之间的信息边界。2024/2/25传输线分类系统条形码阅读器传输线分配站操作员分配站操作员分类机构主机条形码线速指示器分路命令格式化报告数据查询查询及报告诊断数据-------传输线分类系统的ACD图处理与控制功能区外部实体2024/2/25

ACD的层次结构ABC2024/2/25作请画出学生成绩管理系统的ACD图业2024/2/25

第3章软件需求分析软件需求分析是软件开发早期的一个重要阶段。它在问题定义和可行性研究阶段之后进行。需求分析的基本任务是软件人员和用户一起完全弄清用户对系统的确切要求。这是关系到软件开发成败的关键步骤,也是整个系统开发的基础。软件需求分析阶段要求用需求规格说明书(SRS)

来表达用户对系统的要求。规格说明书可用文字方式表示,也可用图形表示。本章将介绍需求分析的任务、步骤、需求分析方法(面向数据流图分析方法、面向对象的分析方法)。2024/2/25一、确定目标系统的具体要求1、确定系统的运行环境要求2、系统的性能要求3、系统功能3.1需求分析的任务硬件环境和软件环境确定目标系统具备的所有功能2024/2/25举例数据库中存放的是职工的某学校医疗费管理系统所属部门、职工号、姓名职工报销时应填写:所属部门、职工号、姓名、日期校内门诊、校外门诊、住院费、子女医疗费医疗费分类:该校规定,每年每个职工的医疗费有一个限额(如80元),限额在年初确定,其限额规则如下:1、每个职工一年内报销的医疗费不超过限额时,全部报销2、超额,则超出部分只可报销90%,其余10%由职工个人负担3、职工子女的医疗费也有限额(如40元)2024/2/251、医疗费管理系统每天记录当天报销的若干职工或职工子女的医疗费的类别、金额。

2、在当天下班前让系统自动结帐、统计当天报销的医疗费总额,供出纳员核对。

3、每笔帐要保存备查,每天所报销的费用要和各个职工已报销的金额累计起来,以便检查哪些职工已超额。

4、系统还要配有适当的查询功能。

5、年终结算后,下一年度开始时要对数据库文件进行初始化。

6、当职工调离本单位,职工调如本单位或在本单位内部门间调动,数据库文件应能及时得到修改。

请完成对上述系统的需求分析用户对系统的要求2024/2/25

该系统规模不太大,可以和用户单位的其他管理系统使用相同的计算机硬件设备、相同的操作系统和相同的关系数据库管理系统。如果,可以使用汉化了的数据库管理系统,但在建立数据库结构时,凡是用英文名称来代表字段名时,则必须在数据字典中予以说明。

1、确定系统的环境要求2024/2/253、系统的功能(1)具有表格形式屏幕的输入格式(2)具有重复录入数据的功能(3)具有查询和统计汇总的功能(4)职工的调入和调出以及对数据库的初始化2024/2/252、系统性能要求(1)数据不能随意更改2)保证数据的准确性

由于医疗费管理系统涉及到会计经费问题,数据不能随意更改但数据输入又难免会出错。因而在每输入一个职工的医疗费后,屏幕提示“数据有误吗?”。若是在核对时有误,可及时更改,避免输入错误。一天报销结束时,在数据存档前,再让出纳员核对一下经费总额,若出纳员支出的金额总数有误时,应让计算机显示每笔帐目,供一一仔细核对,此时在允许修改一次。当正式登帐后,数据就绝对不允许在修改了,由此保证财务制度的严格性,保证数据的安全性。

2024/2/25二、建立目标系统的逻辑模型

通常软件软件开发项目是要实现目标系统的物理模型,即确定待开发软件系统的系统元素,并将功能和数据结构分配到这些系统元素中。它是软件实现的基础。但是目标系统的物理模型是由它的逻辑模型经实例化,即具体到某个业务领域而得到的。与物理模型不同,逻辑模型忽视机制和细节,只描述系统要完成的功能和要处理的数据。为此,该阶段的主要任务是,借助于当前系统的逻辑模型导出目标系统的逻辑模型,也就是解决目标系统“做什么”的问题。2024/2/25用户调查具体模型建立系统模型的工作流程逻辑抽象当前系统逻辑模型当前系统计算机化评审修改正式模型完善细节目标系统目标系统初始模型经认可的问题需求系统模型用户1、建立目标系统逻辑模型的步骤2024/2/25图形工具数据流图数据字典2、建立目标系统逻辑模型的图形工具2024/2/25----学生购买教材的具体模型

举例请建立计算机售书系统的逻辑模型张秘书学生购书购书王会计发票李出纳领书赵保管单申请证明书----学生购买教材的逻辑模型

审查有效性学生有效购书单开发票发票开领书单领书单发书购书单书2024/2/25----学生购买教材的逻辑模型

审查并开发票学生发票购书单各班学生用书表教材存量表无效书单开领书单领书单学生完善目标系统并补充细节,的出目标系统的正式逻辑模型2024/2/25三、需求规格说明书与评审软件需求说明书----SRS(SoftwareRequirementSpecification)主要包括以下的内容:SRS引言数据描述数据流图数据字典功能描述性能描述特殊需求2024/2/25一、数据流图

3.2面向数据流的方法----DFD(DataFlowDiagram)是用来描述系统逻辑模型的一种图形工具。数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。DFD2024/2/25储户检验付款登录存折帐卡取款信息办理取款手续的DFD图检验不合格现款付款信息取款单存折2024/2/251、数据流图中的主要图形元素------转换数据流的处理过程

----

可以是数据库文件或任何形式的数据组织。箭头向内则表示写入文件或查询文件,箭头向外则表示从文件中读取数据或得到查询结果数据转换外部实体------位于软件系统边界之外的信息生产者或消费者数据流------在转换之间有向流动的数据项或数据集合数据存储文件2024/2/25----

系统逻辑模型数据的加工或变换输入输出软件系统外部实体外部实体……外部实体外部实体……输入数据流输入数据流输出数据流输出数据流2024/2/25----学生购买教材的逻辑模型

审查并开发票学生发票购书单各班学生用书表教材存量表无效书单开领书单领书单学生外部实体数据的加工2024/2/252、数据流图中的其它图形元素ABC------有A则B或者C,或者两者都有*ABC+ABC------有A则B与C,或者两者同时有------有A则B或C,但不会同时有B与C2024/2/25-----标识多个数据流与加工之间关系的符号------当A或B有一个存在就有CABC*ABC------只有当A与B都存在,则有C2024/2/253、分层的数据流图F0A0B0F11A0B0F12F13F14F15p1C1D1M1N1F21M1F22N1F23K2F24W2F25p1Y2X2第n

层第n+1

层第n+2

层2024/2/25人工销售教材系统流程图学生开购书证明购书证明开购书发票发票收书费领书单发书学生举例2024/2/25学生教材购销系统购书单领书单缺书单进书通知进书通知保管员1销售购书单领书单学生缺书单进书通知2采购保管员第1

层第2

层教材存量表F1缺书登记表F2外部实体外部实体2024/2/25教材销售子系统无效书单购书单1.3登记并开领书单1.2开发票1.1审查有效性1.4登记缺书1.5补售教材采购学生学生进书通知有效书单发票领书单暂缺书单1销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员第2

层补售书单第3层教材存量表F1缺书登记表F2

F1书号单价数量各班用书表F3售书登记表F4外部项2024/2/251销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员采购子系统

第2层第3

层缺书单2.3修改教材库存和待购量销售进书通知进书通知2.1按书号汇总缺书2.2按出版社统计缺书保管员教材存量表F1待购教材表F5教材一览表F6缺书登记表F22024/2/25.便于实现.便于使用---采用逐步细化的扩展方法,可避免一次引入过多的细节,有利于控制问题的复杂度;

---用一组图代替一张总图,方便用户及

软件开发人员阅读。4、分层DFD图的优点2024/2/25.注意父图和子图的平衡5、画分层DFD的指导原则发票1.3开领书单领书单(a)父图1.3.1学生领书单1.3.21.3.3教材(a)子图2024/2/25.区分局部文件和局部外部项.掌握分解的速度一般来说,每一个加工每次可分为2-4个子加工,最多不得超过7个。.遵守加工编号规则顶层加工不编号。第二层的加工编号为1,2,3,…,n号。第三层编号为1.1,1.2,1.3…n.1,n.2…等号,依此类推。2024/2/251销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员采购子系统

第2层第3

层缺书单2.3修改教材库存和待购量销售进书通知进书通知2.1按书号汇总缺书2.2按出版社统计缺书保管员教材存量表F1待购教材表F5教材一览表F6缺书登记表F2局部外部项局部文件2024/2/25练请画出学生成绩管理系统的DFD

图习2024/2/25二、数据字典

----DD(DataDictionary)数据字典的任务是:对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。DD2024/2/251、数据字典的定义数据流名:说明:简要介绍作用即它产生的原因和结果。数据流来源:即该数据流来自何方。数据流去向:去向何处。数据流组成:数据结构。每个数据量流通量:数据量、流通量。(1)数据流词条的描述

数据流名:发票说明:用作学生已付书款的依据数据流来源:来自加工“审查并开发票”数据流去向:流向加工“开领书单”。数据流组成:学号+姓名+书号+单价总价+书费合计审查并开发票发票购书单

2024/2/25数据元素名:类型:数字(离散值、连续值),文字(编码类型)长度:取值范围:相关的数据元素及数据结构(2)

数据元素词条的描述

年=“1900”..“3000”月=“01”..“12”日=“01”..“31”摘要=1{字母}4金额=“00000000.01”..“999999999.99”……2024/2/25(3)数据文件词条的描述

数据文件名:简述:存放的是什么数据。输入数据:输出数据:数据文件组成:数据结构。存储方式:顺序,直接,关键码。存取频率:……审查并开发票学生发票购书单各班学生用书表教材存量表2024/2/25加工名:加工编号:反映该加工的层次简要描述:加工逻辑及功能简述输入数据流:取值范围:相关的数据元素及数据结构……(4)

加工逻辑词条的描述

1.3审查并开发票学生发票购书单各班学生用书表教材存量表2024/2/25名称:外部实体名简要描述:什么外部实体有关数据流:数目:(5)外部实体词条描述

1销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员2024/2/252、数据字典定义符号=被定义为+与[]x=a+b,则表示x

由a和

b

组成x=[a,b],则表示x

由a或由

b

组成{}或重复x={a},则表示x

由0个或多个a组成()可选

表示在两个*

之间的内容为词条的注释m{}n重复x=3{a}8,则表示x中至少出现3次a,最多出现8次*…*注释符x=(a),则表示a在x中出现,也可不出现2024/2/25储户检验付款登录存折帐卡取款信息--------办理取款手续的DFD图检验不合格现款付款信息取款单存折练习请为下列给出的DFD

图编写DD2024/2/25户名:储蓄网点名称:帐号:开户日:性质:印密:-------存折格式2024/2/25户名:储蓄网点名称:帐号:开户日:性质:印密:存折=户名+所号+帐号+开户日+性质+(印密)+1{存取行}20户名=2{字母}24所号=“001”..“999”帐号=“00000001”..“99999999”开户日=年+月+日性质=“1”..“6”印密=“0”存取行=日期+(摘要)+支出+存入+余额+操作+复核日期=年+月+日年=“1900”..“3000”月=“01”..“12”日=“01”..“31”摘要=1{字母}4支出=金额金额=“00000000.01”..“999999999.99”……2024/2/253、数据字典的实现数据字典的实现人工方法自动方法将每一字典中的词条写在一张卡片上,由专人管理和维护利用“字典管理程序”在计算机中对字典进行管理和维护。2024/2/25三、加工说明

----(ProcessSpecification)加工说明是:对DFD中每个加工给予说明。它是从系统功能的角度对DFD作出了注解,与DD一样是DFD必不可缺少的辅助资料。PS2024/2/25加工说明组成输入数据加工逻辑输出数据加工说明描述工具结构化语言判定表判定树描述把输入数据流变换为输出数据流的加工过程,是加工说明的主体。2024/2/25----学生购买教材的逻辑模型

审查并开发票学生发票购书单各班学生用书表教材存量表无效书单开领书单领书单学生2024/2/25自然语言+结构化形式结构化语言选择结构如果<条件><策略>

If<condition><policy>如果<条件>

则<策略1>

否则<策略2>情况1<条件><策略1>……情况n<条件><策略n>If<condition>

then<policy1>Otherwise<policy2>case1<condition><policy1>……casen<condition><policyn>循环结构对

…,<策略>重复以下<策略>直至<条件>Foreach…,<policy>Repeatthefollowing:<policy>Until<condition>2024/2/25例1:请写出下列在DFD图中给出的“统计晚婚职工”的加工说明CountLate-MarriageEmployeesLate-Marriage-CountRequest职工名册文件Late-Marriage-List=List-Count+Name-ListName-List={Name}2024/2/25CountLate-MarriageEmployeesPolicyForeachLate-Marriage-Countrequest:

Repeatthefollowing;Accessthestaffs-Record.

Ifstatusissingle,

IfsexismaieandAgeisover30orsexisfemaleandAgeisover26WriteNametoName-List.IncrementList-Count.

UntiltherearenomoreStaff-Records.CombineList-CountandName-List.WriteUpLate-Marriage-List.2024/2/25----学生购买教材的系统逻辑模型

审查并开发票学生发票购书单各班学生用书表教材存量表无效书单开领书单领书单学生例2:请为下列DFD中的“审查并开发票”加工点写加工说明2024/2/25把学生学号和姓名写到发票上按购书单上学生的年级和系、专业与班号

检索“各班学生用书表”文件,获得该生当年的书单

购书单上的每一书号

如果

书单上无此书号

把书号写到出错通知单上

否则

按书号检索“教材存量表”文件,从而获得该书的单价与库存量

如果

库存量〈购书单的数量

将书号写到出错通知单上

否则

将书号、单价、数量、总价等项写入到发票上;更新存书量,并写回“教材存量表”文件;累计书费合计

把书费合计写到发票上对每张购书单2024/2/25分房加工婚龄中级职称晚婚正常分房优先分房不分房分房加工逻辑判断表采用表格的形式来表达具复杂判断的加工逻辑1、一般职工婚后5年可参加分房2、中级以上职称的职工婚后3年可参加分房3、符合正常分房条件的职工,若再符合晚婚条件可优先分房2024/2/25分房加工婚龄中级职称晚婚正常分房优先分房不分房2024/2/25判断树判断树是判断表的图形形式其适用场合与判断表相同中级职称不分房初婚分房决策>5年3-5年<3年优先分房非中级职称正常分房正常分房晚婚非晚婚晚婚非晚婚优先分房不分房2024/2/25“检查发货单”的判断表2024/2/25作业工资管理系统系统流程图系统软件模型部分数据字典一、对工资管理系统进行需求分析二、阅读教课书的P27

页2024/2/25三、把下列用文字叙述的内容请采判断表和判断树描述出来设某旅游票预定系统中,在旅游旺季7-9、12月份,如果订票超过50张,则优惠票价的15%;50张以下,优惠5%。在旅游淡季1-6,10、11月份,若订票超过50张,则优惠30%;50张以下,优惠20%。2024/2/25面向对象继承类3.3面向对象的需求分析一、面向对象的概念

对象消息2024/2/25对象对象就是一个包含数据以及与这些数据有关的操作的集合。每个实体都是对象。对象数据操作代码2024/2/25类是一组具有相同数据结构和相同操作的对象集合。类的定义包括一组数据属性和在数据上的一组合法操作。类定义可视为一个具有类似特性与共同行为的对象摸板,可用来产生对象。可以说,类是对象的抽象,而对象是类的具体实例。2024/2/25继承是在一个已存有的类的基础上建立一个新的类。并将已存在的类称为--基类或父类;新建立的类称为—派生类或子类。继承基类派生类2024/2/25对象继承了类所有属性------从类到对象的继承costdimensionweightlocationcolor类:furniturecostdimensionweightlocationcolor对象:chair对象、类、继承

2024/2/25

对象继承类的所有属性和操作costdimensionweightlocationcolor类:furnitureBuySellWeightmovecostdimensionweightlocationcolor对象:chableBuySellWeightmovecostdimensionweightlocationcolor对象:chairBuySellWeightmove2024/2/25------面向对象类的表示模式类名:操作:属性:2024/2/25识别对象1、标识潜在对象找出通过分析过程中的所有名词或名词短语并合并同义词。除去有动作含义的名词,使它们将被描述为对象的操作。标识规则如下:(1)、外部实体(2)、事物(3)、位置(7)、聚焦对象(5)、事件(6)、角色(4)、组织机构2024/2/25二、面向对象的分析方法(OOA)

ObjectOrientedAnalysisOOA的核心思想是利用OO的概念和方法对软件需求建造模型,以使用户需求逐步精确化、一致化、完全化。为此,OOA的方法步骤为:识别对象属性及外部服务识别类及其结构定义对象之间的消息传递2024/2/25潜在对象理由用户传感器控制面板系统(SafeHomeSystem)传感器编号密码电话号码传感器事件警报器角色或外部实体外部实体外部实体聚焦对象概念实体概念实体概念实体事件外部实体例如:2024/2/252、筛选对象筛选对象规则如下:(1)、具有记忆自身状态的能力(2)、有意义的操作(3)、多个属性(5)、公共操作(6)、必须的需求(4)、公共属性潜在对象理由用户传感器控制面板系统)传感器编号密码电话号码传感器事件警报器角色或外部实体外部实体外部实体聚焦对象概念实体概念实体概念实体事件外部实体2024/2/25

第四章软件设计基础

Who为谁设计,用户是谁?What要解决哪些问题?Why为什么要解决这些问题

3W2024/2/254.1软件设计过程编码测试设计信息描述功能描述行为描述其他需求总体结构设计数据设计过程设计程序模块集成并确认的软件------软件开发阶段的信息流2024/2/25软件设计任务制定规范4.2软件设计的任务和步骤软件系统结构的总体设计处理方式设计数据结构设计可靠性设计2024/2/25软件设计方法结构化设计方法4.3软件设计的方法面向对象的设计方法2024/2/25一、模块化设计与信息隐藏-----“模块“又称”构件”一般指用一个名字调用的一段程序4.4软件设计基础模块(module)模块化设计(modulardesign)按适当的原则把软件划分为一个个较小的、相关而又相对独立的模块。

逻辑功能状态2024/2/251、分解(decomposition)E(P1+P2)>E(P1)+E(P2)设:C(x)

为复杂程度函数E(x)

为决定解决问题x所需的工作量(时间)函数

C(P1)>C(P2)E(P1)>E(P2)C(P1+P2)>C(P1)+C(P2)MagicalNumberSeven,PlusorMinusTwo,SomeLimitsonOurCapacityforProcessingInformation

ThePsychologicalReview,1956

G.A.Miller奇妙的数字7+2,人类信息处理能力的限度2024/2/25C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)软件工程基本定理最小成本区M模块成本接口成本总成本软件开发工作量

模块数2024/2/25

每个模块的实现细节对于其他模块来说是隐藏的。也就是说,模块中所包含的信息是不允许其他不需要这些信息的模块使用的。2、信息隐藏(informationhiding)栈stack置空栈

makenull进栈

push退栈

pop2024/2/253、模块的独立性(moduleindependence)模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。耦合

模块之间的相对独立性的度量。内聚

模块功能强度的度量。2024/2/25(1)、内聚(Cohesion)低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚高强弱

内聚性模块独立性2024/2/25偶然性内聚MSTORERECN()TONREADMASTREFILEADD1TOX。。。。。。ABC当模块内各部之间没有联系,或者即使有联系,这种联系也很松散。则称这种模块为巧合内聚模块。2024/2/25逻辑性内聚这种模块是把几种功能组合在一起,每次调用时,则由传递给模块的判定参数来确定该模块应执行哪一种功能。调用模块判定读一个记录写一个记录被调用模块2024/2/25SXYZWABCDSXYZWABCD2024/2/25信息性内聚这种模块能完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。符号表查找登录删除修改2024/2/25功能性内聚如果一个模块内所有成分都完成一个功能则称这样的模块为功能模块。主控模块录入查询打印低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚高强弱

内聚性模块独立性2024/2/25(2)、耦合耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口。低非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合高弱强耦合性模块独立性2024/2/25公共耦合允许一组模块访问同一全局性的数据结构。全局数据区ABCDEFB、C、E

为公共耦合2024/2/25控制耦合如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能就是控制耦合。A模块flagf1Bf2fn……2024/2/25以上给出了7种耦合类型,这只是从耦合的机制上所做的分类,按耦合的强弱程度的排列只是相对的关系。但它给设计人员在设计程序结构时提供了一决策准则。实际上,开始时两个模块之间的耦合不只是一种类型,而是多种类型的混合。这就要求设计人员按照实际情况进行分析、比较和分析,逐步加以改进,以提高模块的独立性。2024/2/254.5结构化设计方法(SD--StructuredDesign)

结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础发展起来的。它所提供的方法和原则,主要是用来指导软件的概要设计。它还提供了一种“结构图”的描述工具,是专门用来描述软件的总体结构的。

2024/2/25结构化设计属于面向数据流的设计方法。在软件的需求分析阶段,数据流是软件开发人员考虑问题的出发点和基础。数据流从系统的输入端向输出端,则要经历一系列的变换或处理。用来表现这个过程的数据流(DFD),实际上就是软件系统的逻辑模型。面向数据流的设计要解决的任务,就是在上述需求分析的基础上,将DFD图映射(Mapping)---软件系统的结构。换句话说,这类设计方法,允许把用DFD图表示的系统逻辑模型,很方便地转换成对于软件结构的初始设计描述。结构化设计方法中,软件的结构一律用SC图来描述。2024/2/25结构化设计的目的使程序的结构尽可能反映要解决的问题的结构结构化设计的任务完成目标系统的—系统结构图(SC)2024/2/25目标系统的DFDSC图---StructuredChart该图常用来表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。SD目标系统的SC2024/2/25ASC

图中的主要内容1、模块--在SC图中用矩形框表示,并用名字来标记它--模块调用关系2、模块的调用关系和接口B调用模块调用模块A(查询学生)B(查找学生记录)数据信号控制信号学号查找成功信号--模块间接口的表示2024/2/25产生最佳解得到好的输入计算最佳解输出结果读输入编辑输入好输入好输入解解原始输入原始输入编辑结果结果格式化显示结果解格式化的解SC

图的一般格式2024/2/251、在系统结构图中的模块一、典型的系统结构形式原子模块:在系统结构图中通常是指不能再分割的底层模块完全因子分解系统如果一个软件系统,它的全部实际加工(即数据计算或处理)都是由底层的原子模块来完成,而其它所有非原子模块仅仅执行控制或协调功能。2024/2/25传入模块AA传入模块从下属模块取得数据,进行某些处理,再将其结果传给上级模块。在此,将它传送的数据流称为逻辑输入数据流。在系统结构图中有四种类型的模块:逻辑输入数据流成绩处理成绩录入2024/2/25传出模块从上级模块获得数据,进行某些处理,再将其结果传给下属模块。在此,将它传送的数据流称为逻辑输出数据流。传出模块DD逻辑输出数据流成绩处理成绩输出2024/2/25变换模块也叫加工模块。它是从上级模块获得数据,进行特定的处理,将其转换为其他形式,再传回上级模块它所加工的数据流叫做变换数据流。变换模块CB变换数据流审查并开发票发票购书单2024/2/25协调模块对所有下属模块进行协调和管理的模块。在一个好的系统结构图中,协调模块应在较高层出现。协调模块YXYX2024/2/252、典型的系统结构形式之一(变换型系统结构图)取得数据iaeo变换数据给出数据传入部分变换中心传出部分--------具有变换型数据流图2024/2/25主模块C变换成D取得C给出D取得BB变换成CD变换成E给出E取得AA变换成BAABBBCCDCDED取得数据CD变换数据给出数据协调模块变换模块传出模块--------具有变换型系统结构图DFD--SC2024/2/253、典型的系统结构形式之二(事务型系统结构图)“事务”引起、触发或启动某一动作或一串动作的任何数据、控制信号、事件或状态的变化。由它接受一项事务,根据事务处理的特点和性质

选择分配一个适当的处理单元,然后给出结果。2024/2/25输入------事务型数据流图1ABC3DEFGH24567中心变换输出逻辑输入物理输入逻辑输出物理输出2024/2/251ABC3DEFGH24567MT3逻辑输入逻辑输出CDCD,E,F456------事务型数据流图(DFD)------事务型系统结构图(SC)2024/2/25事务中心输入已分析的作业内部表示的作业结果------事务型系统结构(层次)图输出结果调度作业信息读入作业分析作业事务1事务2事务3事务4操作2操作3操作4操作5操作6操作1细节2细节3细节4细节5细节6细节1细节7结果2024/2/25------简化的事务型系统结构图事务中心得到作业作业结果输出结果分析调度事务1事务2事务32024/2/25二、从DFD图导出SC图的步骤开始细化修改SRS中的DFD图判断DFD图的结构类型是变换型吗?F事务分析变换分析完善SC图T对最终的SC图进行评审结束2024/2/251、变换分析----是将具有变换型的DFD图导出SC图变换分析从物理输入、物理输出及变换中心进行由顶向下的分解得出各个分支的所有组成模块在数据流图上区分系统的逻辑输入、逻辑输出和变换中心部分,并标出它们的分界。进行一级分解,设计系统模块结构的顶层和第一层。进行二级分解,设计中、下层模块。2024/2/25(1)在DFD

图上标出逻辑输入、逻辑输出和变换中心的分界AeBaCbDcEdPQRwuvwuvrp变换中心c,e逻辑输入w,u逻辑输出--------具有变换型数据流图2024/2/25(2)完成第第一级分解AabcPwuvrpBCDdeEQRWUVMcMAMTMEC,eC,eU,wU,w变换中心顶层第一层第一级分解后的SC图协调模块YXYX2024/2/25AabcPwuvrpBCDdeEQRWUV第一级分解后的SC图(另一种画法)McMA1ME1C

eUMA2QPRME2e

c,p

pr

r

w,uw2024/2/25(3)完成第第二级分解AabcPwuvrpBCDdeEQRWUVMA变换中心对逻辑输入的分解CEBADabdeccbaABCMAEDde逻辑输入模块的调用与执行过程2024/2/25MACEBADabdecMAGetCGetEBtoCAtoBDtoEaecReadDGetBReadAc,eabbbcde2024/2/25AabcPwuvrpBCDdeEQRWUVME变换中心对输出的分解WUVvuwMTQPR

eC,prU,w对变换中心加工的分解

prw,u2024/2/25MACBAEDMTQPR从变换分析导出的初始SC

图MEWUVMCc,eW,uW,uC,e(4)获得完整的SC

图2024/2/25运用变换分析方法建立系统的SC时需注意以下几点:模块设计的次序时,应遵循对一个模块的全部直接下属模块都设计完成后,再转向另一个模块的下层模块的设计。在设计下层模块时,应考虑模块的耦合和内聚问题,以提高设计初始SC图的质量。注意“黑盒”技术的使用。2024/2/25主模块ABCA1A2A3A11A12A132024/2/25低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚高强弱

内聚性模块独立性低非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合高弱强耦合性模块独立性具有高内聚低耦合的模块才是模块独立性比较强的模块。2024/2/25具有高内聚低耦合的模块才是模块独立性比较强的模块。模块A模块D模块C模块B非直接耦合通过参数表传递数据(数据耦合)通过参数表传递数据结构(数据耦合)具有松散型

的耦合类型2024/2/25请将上列给出的具有变换型的DFD图导出它的SC图练习A1A2a1a2PB

b1C1c1C2c1p1P22024/2/252、事务分析----是将具有事务型的DFD图导出SC图IALMNOBCDEFGH事务中心事务源2024/2/25IALMNOBCDEFGH主模块给出H取得ALMNA

GHBECF

D2024/2/25发送部分请将下列给出的采购子系统DFD

图转换成SC图练习2.12.22.3书库保管员F2F1F5F6F7加工名称:2.1按书号汇总缺书2.2按出版社汇总缺书2.3修改教材库存和待购量文件名称:F1

教材存量表F2

缺书登记表F5

待购教材表F6

教材一览表F7

进书登记表2024/2/25发送部分采购按书号汇总缺书登记表统计缺书登记进书按出版社汇总打印缺书单修改教材存量表修改教材待购量统计命令登记命令待购教材表暂缺书单暂缺书单进书通知进书通知------采购子系统的SC图-------缺书登记表={班号+姓名+书号+数量}2024/2/25三、软件模块结构的改进一、模块功能的完善化执行指定的功能部分出错处理的部分。2024/2/25二、消除重复功能,改善软件结构。完全相似局部相似2024/2/25XYR1R2物理输入相似部分XYR1R2RX+R1Y+R2R相似模块的各种合并方案的示意图2024/2/25三、模块的作用范围应在控制范围之内。作用范围:是一个与条件判定相关联的所有模块。控制范围:包括模块本身及其所有的从属模块(即供它调用的模块)。2024/2/25模块的控制范围:包括模块本身及其所有的从属模块(即供它调用的模块)。ABDCEFG关于模块的控制范围示意图

2024/2/25一个模块的作用范围,是指受这个模块中的判定所影响的模块。关于模块的作用范围/控制范围的关系示意图

TopABCDEGGDBC控制耦合2024/2/25TopCDEB2BDGC理想的情况,应该使判定的作用范围和判定所在模块的控制范围尽可能地吻合(即应使模块的作用范围尽可能地在控制范围之内)。符合作用范围/控制范围的理想判定位置DCGBA对于一个理想SC图中的模块设计,所有受到一个判定影响的模块应该都从属该判定所在的模块,最好位于作出判定的那个模块本身及它的直接下属模块。2024/2/25计算实发工资取得工资数据计时工人实发工资计薪工人实发工资编外人员实发工资计时制工资额税收扣款薪金制工资额常规扣款编外人员工资编外人员税款编外人员扣款2024/2/25四、尽可能地减少高扇出结构,随着深度增大扇入。扇入:指模块的上级模块数。(即共有多少个模块需要调用这个模块)扇出:指模块调用其下属模块数目。调用的下属模块数应控制在小于3-4个模块。MM2024/2/25PPP1P2QQ1Q2Q3Q2024/2/25五、模块的大小要适中。50-100模块的大小,可以用模块中所含语句的数量的多少来衡量。2024/2/25六、应设计出功能可预测的模块,但要避免过分受限制的模块。A2024/2/25发送部分ABABBCT3T2T1CDDEEHFJHKKLLMB1B2B3C1C2C3DEFGHJKLM请将下列给出的DFD

图转换成SC图作业2024/2/25发送部分请完成下列描述的DFD图,导出它的SC图练习美国某大学共有200名教师,校方与工会刚刚签定一项协议按照协议,所有年工资>=$26,000的教师工资将保持不变,年工资<$26,000的教师将增加工资,所增加的工资数按下述方法计算:给每个由此教师所赡养的人(包括教师本人)每年补助$100,此外,教师满一年工龄的再多补助$50,但是增加后的年工资总额不能多于$26,000。教师的工资档案储存在行政办公室的磁带上,档案中有目前的年工资、赡养人数、雇用日期等信息。2024/2/25发送部分12341656789101215141311abcdefghijklnopm**请将上列给出的DFD图导出它的SC图作业2024/2/25

第五章详细设计描述的工具5.1详细设计阶段的目的与任务详细设计的目的:为软件结构图(SC)中的每一个模块确定采用的算法和模块内数据结构,用某种选定的表达工具给出清晰的描述。详细设计阶段的主要任务:编写软件的“详细设计说明书”c2024/2/25需求分析问题定义可性行研究计划时期概要设计详细设计编码测试开发时期运行与维护运行时期2024/2/25详细设计阶段的主要任务为每一模块确定算法确定每一模块使用的数据结构确定模块的外部接口和用户界面为每一模块设计一组测试用例2024/2/25描述工具程序流程图N-S

图PAD

图PDL

伪代码5.2详细设计阶段的描述工具2024/2/25A1、顺序型一、程序流程图B几个连续的加工依次序排列expFTAB2、选择型由某个判断式的取值决定选择两个加工中的一个。2024/2/253、当型循环型当循环控制条件成立时,重复执行特定的加工。expFTS4、直到型循环型重复执行特定的加工,直到循环控制条件成立时。expFTS2024/2/255、多情况选择型列出多种加工情况,根据控制变量的取值,选择执行其一。exp=1FTS1exp=2exp=nS2TSnTFF2024/2/25-----具有嵌套形式的程序流程图X1FTaX4cTfTFF入口bX2X3deghiX5X6FTFT=1=2=32024/2/25标准化程序流程图规定符号X1起止端点输入/输出一般处理准备或预处理预定义处理条件判断循环上界循环下界文件或文档外接内接流程线虚线省略线并行方式注解或注释2024/2/25流程符号的使用规则1、循环符号的使用循环名进入循环条件循环体循环名

i=1,100S=S+i

i

S=0S=S+iS=0,i=1i>100i=i+1

F

T循环体-----循环流程符号的使用2024/2/252、判断有一个入口,但也允许有多个可选出口A:B

A=B

A<B

A>BX=?

x=1

x=2

x=3

x=4X=?

=1

=2

=3

=4

=5-----多出口判断流程符号的使用2024/2/25请利用程序流程图描述下列问题的程序结构练习某汽车修配厂,有一个存有汽车零件的仓库,其中存有若干种零件,请编写一个查询程序,用于查询该库中某零件的库存量为多少。设该模块为查询模块。请设计该模块的程序结构。具体要求:1、应具有重复查询功能;2、应具有数据检测功能;3、请利用程序流程图描述该模块的算法。2024/2/25顺序型二、N-S

图AB选择型-------NassiandShneidemanBpFTAApFTp=1=2…=n

A1

A2

Andowhile(p)Sdountil(p)S当型循环型直到型循环型多分支选择型2024/2/25零件号100011000210003100041000510006

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论