语句数内存数输出程序开发时间效率清晰性_第1页
语句数内存数输出程序开发时间效率清晰性_第2页
语句数内存数输出程序开发时间效率清晰性_第3页
语句数内存数输出程序开发时间效率清晰性_第4页
语句数内存数输出程序开发时间效率清晰性_第5页
已阅读5页,还剩324页未读 继续免费阅读

下载本文档

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

文档简介

1、讲授的内容Contents,第1章 软件与软件工程Chapter 1 Introduction,本章要讲的主要内容是: 软件(Software) 软件危机(Software Crisis) 软件工程(Software Engineering) 软件工程与计算机科学的关系 (Relationship between SE and CS,1.1 软件Software,软件的概念与特征 软件的发展历程 软件的分类 软件开发的案例分析,软件的概念与特征,软件的定义 软件是程序和所有使程序正确运行所需要的相关文档和配置信息。 Software = Program + Data + Document,软件

2、的特征 软件是无形的 (intangible) 软件副本制作简单 软件无磨损,软件的发展历程,软件的分类,基于不同工程对象划分 基于软件规模的划分,基于不同工程对象划分,通用软件产品 Generic -由软件开发机构制作,市场上公开销售,独立使用。 ( developed to be sold to a range of different customers) 数据库软件、字处理软件、绘图软件、工程管理工具。 定制软件产品Bespoke (custom) - 受特定客户委托,由软件承包商专门制作。 (developed for a single customer according to t

3、heir specification,基于软件规模的划分,微小型软件-一般都在2000行以内的程序长度。在开发过程中,不讲究开发方法和开发实施的步骤,没有相应的软件编写文档。 中型软件-通常程序长度在500010000行之间,一般需要510人、持续一至两年时间开发,以团队方式采用统一的标准开发模式。 大型软件-采用软件工程指导下的软件开发方法和遵循相应的开发规范,建立软件开发过程的文档,由上百、千人参加形成的庞大开发团队,不同领域的人员相互沟通合作,软件开发的案例分析,系统软件-是一组为其他程序服务的程序。 实时软件-管理、分析、控制现实世界中发生的事件的程序。 商业软件-商业信息处理是最大的

4、软件应用领域。 工程和科学计算软件-这类软件的特点是一般具有数值计算。 嵌入式软件-智能产品应用于所有的领域,嵌入式软件作用于这些智能产品,执行有限但专一的功能。 个人计算机软件-用于个人的文字、图片、财务、娱乐等等方面的软件系统。 人工智能软件-人工智能(AI)软件利用非数值计算解决复杂问题,请给出相应的实例,软件的未来与工业化,作坊式生产 软件工业化 CMMI认证,1.2 软件工程,软件工程的概念 软件工程的范畴 软件工程的开发原则 软件工程面临的挑战 软件工程师的未来,问题分解的特征,软件开发过程中存在的问题,1) 软件需求急剧增长; (2) 软件开发成本和进度估计 不准确; (3) 软

5、件产品不满足用户需 求; (4) 软件难以维护; (5) 软件价格昂贵,软件工程的概念,中心思想: 把软件当作一种工业产品,要求采用工程化的原理与方法对软件进行计划、开发和维护。 目的: 实现按预期的进度和经费完成软件生产计划,提高软件的生产率和可靠性,软件工程框架,软件工程的范畴,软件工程开发的原则,分解 信息隐蔽 模块化 标准化,软件工程面临的挑战,遗留系统 交付上的挑战 多样性的挑战,软件工程师的未来,软件工程人员应当遵守以下八条准则: (1)公众感(PUBLIC):软件工程师始终与公众利益保持一致。 (2)客户和雇主(CLIENT AND EMPLOYER):满足客户和雇主的最大利益。

6、 (3)产品(PRODUCT ):保证产品达到尽可能高的行业标准。 (4)判断力(JUDGEMENT):具有公正和独立的职业判断力。 (5)管理(MANAGEMENT):提倡合乎道德的软件开发和维护的管理办法。 (6)职业感(PROFESSION):弘扬职业正义感和容易感,尊重社会公正利益。 (7)同事(COLLEAGUES):公平对待和协助每一位同事。 (8)自己(SELF):毕生学习专业知识,合乎职业道德的职业活动方式,1.3 软件过程模型,软件生存周期 软件开发模型 瀑布模型 进化式模型 演化模型 形式化开发,软件生存周期,软件生存周期的概念: 一个软件从计划起,到废弃不用止。 软件生存

7、周期包括:计划、开发、运行,软件开发模型概念,软件开发模型的概念: 为整个软件生存期建立的模型,软件开发模型分类: 瀑布模型 进化式开发模型 演化模型 形式化开发模型,软件开发模型,1 瀑布模型 The waterfall model,瀑布模型的优点,阶段间的顺序性 和依赖性 推迟实现的观点 质量保证的观点,瀑布模型的问题Waterfall model problems,将项目生硬地分解成确切的阶段。 Inflexible partitioning of the project into distinct stages 对用户需求变更的相应困难。 This makes it difficult

8、 to respond to changing customer requirements 需求了解的好的时候,采用瀑布模型。 This model is only appropriate when the requirements are well-understood,2快速原型开发模型Prototype Model,基本思想: 先开发出一个原型系统给用户使用,通过用户反馈意见来不断修改系统直到最后成熟。 让描述、开发、有效性验证活动并行执行,原型模型,原型模型的优点,原型化模型突出一个“快”字。软件开发人员向用户提供一个“样品”,用户向开发人员迅速作出“反馈,建立原型系统的方法,原型系统

9、仅包括未来系统的主要功能,以及系统重要的接口。 开发原型系统尽可能使用能缩短开发周期的语言和工具,3演化模型-增量模型Evolutionary Model,增量模型的基本思想,每个增量提供系统功能的一个子集,一个增量完成并交付,部分系统功能可以提前交付使用。 对增量中服务的分配取决于服务优先次序。最高优先权的服务首先被交付。 第一个增量往往是核心的产品。 开发者能通过对系统的经验帮助理解后面的增量需求和目前增量后续版本的需求变更,Incremental development advantages增量式开发过程的优点,客户无需等到整个系统的实现。 客户可以将早期的增量作为原型,从中获得对后面系

10、统增量的需求经验。 项目总体性失败的风险比较低。 最高优先权的服务接受最多的测试,Example,使用增量式开发的字处理软件 在第一个增量中发布基本的文件管理、编辑和文档生成功能; 在第二个增量中发布更加完善的编辑和文档生成能力; 第三个增量中实现拼写和文法检查功能; 第四个增量完成高级的页面布局功能,4演化模型-螺旋模型Evolutionary Model,螺旋模型的基本思想,每一个螺旋周期(Spiral model sectors)包含四个部分: (1)确定目标,选择方案,设定约束条件,选定完成本周期所定目标的策略。 (2)分析该策略可能存在的风险。 (3)在排除风险后,实现本螺旋周期的目

11、标。 (4)评价前一步的结果,并且计划下一轮的工作,螺旋模型的特点,每一阶段考虑技术风险。 依赖于风险评估,5形式化方法模型,转换模型(Transformational Model)-是结合形式化软件开发方法和程序自动生成技术的一种软件开发模型,转换模型,净室模型Cleanroom Model,是一种形式化的增量开发模型。 基本思想: 力求在分析阶段就消除错误,确保正确,然后在无缺陷或“洁净”的状态下实现软件的制作。 “盒”(Box)-每一增量是一个形式化方式表示,净室模型,6基于组件的开发过程,Advantages 优势,减少需要开发的软件数量 降低软件开发成本 降低风险 软件快速交付,小结

12、,软件 软件工程 软件过程模型,小结,瀑布模型 原型模型 增量模型 螺旋模型 形式化开发模型 组件开发模型,新的开发模型 RUP统一开发过程 敏捷开发 极限编程 RAD快速的应用开发 设计模式,思考题1,调查目前软件公司对软件开发过程中存在的主要问题。 现代软件的分类。 都知道哪些软件开发的方法? 软件工程有意义吗? 以上问题请于本周调查,下次课提问,思考题2,为以下各系统提出合适的软件过程模型,阐述理由: (1) 汽车防锁死刹车控制系统 (2)一个支持软件维护的虚拟现实系统 (3)大学记账系统,准备替换一个已存在的系统 (4)一个位于火车站的交互式火车车次查询系统,第2章 软件需求分析Req

13、uirements Analysis,需求分析的任务和分类; 需求获取的相关技术; 软件需求分析的描述模型; 需求分析的方法; 软件需求分析文档; 软件的案例需求分析,项目相关人员,涉及对项目有利益关系的人员,包括: (1)发现系统的潜在最终用户; (2)考虑系统打算支持的业务过程描述以及与这些过程相关的人员; (3)可能会受到系统引入的影响的人员; (4)使用系统的客户; (5)开发和维护系统的工程师和维护人员; (6)可能给系统添加需求的监管机构和认证机构等。因此,项目相关人员可能是系统最终用户和机构管理人员、工程人员、业务专家、工会代表等等,Autoteller银行自动柜员机系统(ATM

14、)的项目相关人员,当前银行客户 其他银行代表 硬件和软件维护工程师 市场开发部 银行管理者 柜台职员 数据库管理员 信息安全管理员,需求的定义,需求应该是对系统应提供的服务和所受到的约束的描述。 需求来自于用户,同时也是经过了开发人员抽象之后的需求,Types of requirements需求种类,User requirements用户需求 Statements in natural language plus diagrams of the services the system provides and its operational constraints. Written for c

15、ustomers 是用自然语言加图表的形式给出的关于系统需要提供哪些服务以及系统操作受到哪些约束的声明,Types of requirements需求种类,System requirements系统需求 A structured document setting out detailed descriptions of the system services. Written as a contract between client and contractor 详细给出系统将要提供的服务以及系统所受的约束,User requirements,Client managers System en

16、d-users Client engineers Contractor managers System architects,System requirements,System end-users Client engineers System architects Software developers,客户管理者 系统最终用户 客户工程师 承包商管理者 系统体系结构工程师,系统最终用户 客户工程师 系统体系结构工程师 软件开发人员,用户需求,系统需求,用户需求和系统需求描述,系统需求的描述方面,Functional requirements 功能性需求 Non-functional re

17、quirements 非功能性需求 Domain requirements 领域需求,Functional requirements功能性需求,These are statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. 包括对系统提供的服务、如何对输入做出反应以及系统在特定条件下的行为描述,Non-functional requireme

18、nts非功能性需求,Non-functional requirements relate to emergent system properties such as reliability, response time and store occupancy. 是指不直接与系统具体功能相关的一类需求,与系统的总体特性有关,如可靠性、反应时间和存储空间,Domain requirements 领域需求,These are requirements that come from the application domain of the system and reflect characteris

19、tics of that domain. 来自系统应用领域的需求,反应该领域的特点,Types of non-functional requirements,Product requirements产品需求 Requirements which specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc. 描述产品行为的需求,包括运行速度、可靠性等,Types of non-functional requirements,Organisatio

20、nal requirements机构需求 Requirements which are a consequence of organisational policies and procedures e.g. process standards used, implementation requirements, etc. 起源于客户所在的机构和开发者所在的机构中政策和规定,Types of non-functional requirements,External requirements外部需求 Requirements which arise from factors which are

21、external to the system and its development process e.g. interoperability requirements, legislative requirements, etc. 包括系统外部因素和开发过程,Non-functional requirement types,非功能性需求,需求分析的任务,1)通过对问题及其环境的理解、分析和综合,建立分析模型(Analysis Model)。 (2)在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”(Software requirement Specification, S

22、RS)把用户的需求表达出来,需求分析的步骤,需求的内容,1) 功能描述 (2) 性能描述 (3) 环境需求 (4) 界面需求 (5) 用户或人的因素 (6) 文档需求 (7) 数据需求 (8) 资源需求 (9) 安全保密 (10)软件成本消耗与开发进度 (11)质量保证,需求的特征,1. 完整性 2. 正确性 3. 可行性 4. 必要性 5. 划分优先级 6. 无二义性 7. 可验证性,需求获取技术,需求获取面临的挑战主要是对问题空间的理解、人与人之间的通信,以及需求的不断变化,需求分析中出现的问题,1交流障碍 2问题的复杂性 3不完整性和不一致性,需求获取的基本原则,1深入浅出 2以流程为主

23、线,需求获取的常用技术,跟班作业 开调查会 请专人介绍 询问 设计调查表,请用户填写 查阅记录,需求分析建模,用例建模 数据建模 过程建模,用例建模,用例是系统开发中用来描述系统需求,从用户的角度描述系统的场景,概括有关参与者和用例信息的一个图形化模型,描述了系统、子系统和类的一致的功能集合,表示了角色和用例之间的关系,表现为系统和一个或多个外部交互者(角色)得消息交互动作序列。 主要包括系统、用例、角色和关联,Use Case 用例图,一个用例可描述软件系统和一个外部角色(Actor)之间的一次交互。 角色-可以使人、软件、硬件或其他与系统交互的实体。 组成:系统、用例、角色、关联,Use

24、Case 用例图组成,用例名,系统,用例,角色,关联,Library use-cases图书馆的用例,用例之间的关系,扩展关系 若一个用例中加入一些新的动作后构成一个新的用例,用例之间的关系,使用关系 当一个用例使用另一个用例时,这两个用例构成使用关系,用例之间的关系,组合关系 用例之间存在类似的行为,或相互之间存在必要的关系,可以将相关的用例以封装方式加以组合,数据建模,系统需求分析建模就是定义系统处理的数据的逻辑结构。比较广泛采用的数据建模技术是实体-关系建模,它描述了数据实体以及实体之间的关系和相关的属性,基本图形,两个实体学生和教师的关系,实体(Entity,需要一个概念来抽象地表示一

25、组类似事物的所有实例,称这个概念为实体。是需要收集数据和存储数据的人、地点、对象、事件或概念的类。可以归类为: 人Persons:代理、承包商、客户、部门、分部、雇员、导师、学生、供应商; 地点Places:销售地区、建筑物、房间、分支办公室、校园; 对象Objects:图书、机器、部件、产品、原材料、软件许可证、软件包、工具、汽车模型、汽车; 事件Events:奖励、取消、分类、飞行、开发票、订单、注册、续借、获取、预定、销售、旅行; 概念Concepts:帐号、时间段、债劵、课程、基金、资格、股票,E-R图,描述各种数据之间的关系。 组成: 长方形-数据对象(实体) 菱形-数据之间的关系,

26、Example,状态转换图(STD,描述软件状态的变迁。 矩形-系统状态; 箭头-状态的转变方向,STD Example,对象-行为图,过程建模,数据流图从数据传递和加工的角度出发,刻画数据流从输入到输出的移动和变换过程,它能够清晰地反映系统必须完成的逻辑功能,DFD数据流图的组成,圆框-加工 箭头-数据流向 方框-数据的源点和终点 双杠或单杠-数据文件或数据库,数据文件,Example,数据字典(DD,数据的三种情况: 数据项-只含一个数据或数据元素; 数据流-由多个相关数据项组成; 数据文件或数据库,数据项,数据流,数据文件,加工说明,结构化语言 自然语言加上结构化的形式。 判定表或判定树

27、 适用于表达含有复杂判断的加工逻辑,例 判定表,例 判定树,exercise,某校的课酬计算方案为:基本课酬20元;班级人数超过60人,增加基本课酬的10%;班级人数超过80人,增加基本课酬的20%;教师为副教授,增加基本课酬的10%;为教授,增加基本课酬的20%;见习助教,减少基本课酬的10%。请用判定表描述上述问题的加工逻辑,需求分析建模,结构化分析模型,结构化分析方法,SA( Structured Analysis)结构化分析: 是使用DFD、DD、结构化语言、判定表和判定树等工具,来建立结构化说明书(SRS,自顶向下、逐步细化Top-Down Stepwise Refinement,从

28、系统的基本模型(把整个系统看成一个加工)开始,逐层地对系统进行分解。酶分解一次,系统的加工数量就增多一些,每个加工的功能也更具体一些。继续分解,直到所有的加工都足够简单,不必再分解为止,三层的数据流图,1)顶层的数据流图,2)第二层DFD图,3)第三层DFD图,DFD图的基本要求,父图和子图平衡; 区分局部文件和局部外部项; 分解的步子应均匀,不应过快,可分解为24个子加工,最多不超过7个; 遵守加工编号,Example-DFD,顶层数据流图,Example-DFD-第二层数据流图,Example-DFD-第三层数据流图,需求分析的建模,面向对象分析模型,面向对象分析方法,定义用例 领域分析

29、类/对象建模 (1)确定分析模型中的类/对象 (2)定义类的结构与层次 (3)定义主题或子系统 建立对象-关系模型-对象层次模型 建立对象-行为模型-序列图,定义用例,确定系统角色 (1)使用系统主要功能的人 (2)借助系统完成日常工作的人 (3)维护、管理系统、保证系统正常工作的人 (4)涉及的设备 (5)外围系统 (6)其他感兴趣的人,发现一组系统的用例 (1)角色需要从系统中获得哪些功能 (2)发生的事件需要通知系统 (3)角色需要读取、产生、删除、修改或存储的信息 (4)输出、输入的信息 (5)当前存在的问题,类/对象建模,1)确定类/对象 (2)定义类的结构与层次 (3)定义主题或子

30、系统,1)确定类/对象,1)必要的信息 (2)需要的服务 (3)多个属性 (4)公共的属性 (5)公共的操作 (6)必要的需求,考察系统的使用实例; 将名词或名词短语汇总; 分析特征,确定哪些应包含在分析模型中,类/对象图,2)定义类的结构与层次,一般-特殊(泛化Generalization ) 对类进行分类,整体-部分(聚合Aggregation) 类的组成关系,对象模型的关系表示,泛化关系-一般到特殊 聚合关系-整体到部分,3)定义主题或子系统,类模型的某个子集相互协作共同完成一组内在功能时,可以将其定义为主题或子系统,对象模型技术,对象模型,对象-关系模型,对象-行为模型,三个模型之间的

31、关系,对象-关系模型,关系存在于任意两个相关联的类之间,可以通过检查对系统的范围或用例的陈述中的动词或动词短语导出。 (1)找出存在的关系网络,用线连接; (2)连线上表示基数,User class hierarchy,Object aggregation课程的聚合对象,对象-关系图,对象-行为模型,对象行为模型用于描述系统的动态行为,即系统如何应对外部事件。 (1)对用例理解系统的交互序列; (2)找出驱动交互序列的事件; (3)为每个用例创建事件轨迹; (4)为对象创建状态转换图,状态转换图 事件轨迹图,状态转换图,描述系统状态和事件,事件引发系统在状态间的转换,Microwave ove

32、n model,一个简单的微波炉状态机模型,事件轨迹图,事件轨迹图用于描述一个事件在各个对象之间的流动情况,可以显示整个系统的状态变化,Issue of electronic items电子科目的发放,需求分析的文档,Introduction 引言 Glossary 术语 User requirements definition 用户需求定义 System architecture 系统体系结构 System requirements specification 系统需求描述 System models 系统模型 System evolution 系统进化 Appendices 附录 Inde

33、x 索引,小结,需求分析的任务 需求获取的技术 需求分析文档 结构化分析方法 面向对象分析方法,要求掌握的内容,结构化分析方法 面向对象分析方法 数据流图 数据字典 用例图 对象模型-ERD 状态图 序列图,本次课堂练习,每名学生编写需求分析文档; 文档中要有数据流图、数据字典; 还有用例图、ERD、序列图。 需求文档按所给的需求分析标准文档形式,第3章 软件设计,设计原则 结构化设计方法 面向对象的设计方法 系统详细设计,软件设计的任务,软件设计的任务- 把分析阶段产生的软件需求说明转换成用适当的手段表示的软件设计文档,软件设计包括的内容: 软件系统的体系结构设计; 系统接口设计; 数据结构

34、设计; 软件过程设计; 系统界面设计,软件设计的概念,模块-是一个拥有明确定义的输入、输出和特性的程序实体。 抽象(Abstraction)-软件设计是在不同抽象级别考虑和处理问题的过程。 过程抽象、数据抽象 细化(Refinement)-分解过程。 信息隐蔽(Information Hiding)-模块内部的数据和过程,应该对不需要了解这些数据与过程的模块隐藏起来,模块化设计,分解 任务P,分解为P1、P2两个子任务 P=P1+P2 C为问题复杂度 C(P1+P2)C(P1)+C(P2) E为完成任务所需的工作量 E(P1+P2)E(P1)+E(P2,分解,模块独立性(Module Inde

35、pendence,模块独立性-把软件换份为模块时遵循的标准。 度量-内聚、耦合 内聚-模块内部各个成分之间的联系。(块内联系或模块强度) 耦合-模块与模块之间的联系。(块间联系,内聚(Cohesion,偶然性内聚-块内各组成成分在功能上互不相关。 逻辑性内聚-有若干个逻辑功能相似的成分组成。 时间性内聚-由相同的执行时间连接在一起。 过程性内聚-一组任务必须按照某一特定次序执行。 通信性内聚-都使用同一种输入数据,或产生同一种输出数据。 顺序性内聚-各组成部分顺序执行。 功能性内聚-用于完成单一功能,耦合(Coupling,非直接耦合-模块之间没有直接的信息传递。 数据耦合-模块之间传递的是简

36、单变量。 特征耦合-模块之间交换的是数据结构。 控制耦合-模块之间传递的是控制信号。 外部耦合-一组模块访问同一个全局变量。 公共耦合-一组模块访问同一个全局数据结构。 内容耦合-一个模块直接调用另一个模块的数据或直接转移到另一个模块内部,系统结构化,根据系统的分布情况可以将系统分解为一系列基本子系统,每一个子系统都是一个独立的软件单元,同时识别出子系统之间的通信,控制模型,根据控制系统的各个部分之间控制关系,对系统进行有效地分解子系统,可以形成集中管理、分散控制的分解模型,模块分解,对整体软件系统的结构进行分解,可以将软件系统形成层次分解的模块结构,确定模块的类型以及模块之间的调用关系,体系

37、结构的分类,容器模型 客户机/服务器模型 分层模型,容器模型,客户机/服务器模型,分层模型,设计方法,结构化设计方法,用DFD图表示的系统分析模型转换为数据结构的设计方法,SC图组成符号,数据流图的类型,变换型 事务型,SD结构化设计方法,复审DFD图,可进行修改或细化。 鉴别DFD图的类型。 按照SD方法规定的一组规则,将DFD图转换为初始SC图。 按照设计优化原则改进初始SC图,获得最终SC图,变换映射,划分DFD图的边界; 建立初始SC图的框架; 分解SC图的各个分支,例子 EXAMPLE,第一步 划分界限,第二步 完成第一级分解,第三步 完成第二级分解,细化SC图的各个分支,中心加工分

38、支的分解,传入分支的分解,传出分支的分解,事务映射,在DFD图上确定事务中心、接受部分、发送部分; 将DFD图的三个部分分别映射为事务控制模块、接受模块、动作发送模块; 分解和细化接受分支和发送分支,完成初始的SC图,结构化设计的优化原则,分割、合并、变动模块大小的指导原则 保持高扇入(Fan-in)、低扇出(Fan-out)的原则 作用域应在控制域范围内的原则,Example-DFD到SC的转化,本系统修改放在磁带中的一个主文件上,对文件做修改的信息放在卡片上,该系统读入一叠卡片,按卡片上的修改信息对磁带中的纪录作相应修改,然后产生新的主文件,顶层数据流图,第二层数据流图,第三层数据流图,S

39、C软件结构图,过程设计的原则,清晰第一的设计风格 结构化的控制结构 逐步细化的实现方法,An object-oriented design process面向对象设计过程,Define the context and modes of use of the system 了解并定义上下文和系统的使用模式。 Design the system architecture 设计系统体系结构。 Identify the principal system objects 识别出系统中的主要对象。 Develop design models 开发设计模型。 Specify object interface

40、s 描述对象接口,系统上下文和使用模型,系统上下文模型是一个静态模型,描述环境中的其他系统; 系统使用模型是一个动态模型,描述系统如何与环境交互的,Subsystems in the weather mapping system,气象制图系统中的子系统,Use-cases for the weather station气象台的用例,启动,关机,报告,校准,测试,Use-case description报告用例的描述,报告用例的描述,体系结构设计,可以结合体系结构模型构造体系结构,识别对象类,1)对系统的自然语言描述作文法分析。 对象和属性是名词,操作和服务是动词。 (2)使用应用领域中的真实实

41、体、职务、事件、交互、位置、机构单元等。 (3)使用行为方法,对每个行为了解谁发起的和哪些实体参与了这个行为。 (4)使用基于脚本的分析识别出系统使用的各个脚本,并以此对其进行分析。识别出对象、属性和操作,对象和对象类,对象是由状态和在此状态上的一组操作构成的一个实体。 状态由一组对象属性来表示。 操作提供给其他对象相应的服务。 对象通信通过向其他对象请求服务来实现,Weather station object classes,Design models设计模型,Static models describe the static structure of the system in terms

42、 of object classes and relationships 静态模型通过对象类及其之间的关系来描述系统的静态结构。 Dynamic models describe the dynamic interactions between objects. 动态模型描述系统的动态结构和系统对象之间的交互,Examples of design models,Sub-system models 子系统模型 说明对象的逻辑分组,每个分组构成一个子系统。静态模型 Sequence models 序列模型 说明对象交互的序列。动态模型 State machine models状态机模型 说明单个对象

43、如何相应事件来改变它们的状态。 Other models 用例模型说明系统中的交互,对象模型描述对象类,泛化或继承模型说明类是如何通过对其他对象的泛化得到的,聚合模型说明对象集合是如何关联的,Weather station subsystems,Weather station architecture气象台体系结构,Data collection sequence,Weather station state diagram,对象接口描述Weather station interface,数据设计,数据库设计,图书(图书号,书名,作者,出版社,出版日期,单价,借出标志)读者(借书证号,姓名,性别

44、,身份证,联系电话,密码) 借还书(借还时间,借还标志,图书数据模型设计,索引的建立,主键-能唯一标识该结点或该条记录。 外键-能对该结点与其他结点联系的标识。 借还书(借还时间、借还标志) 外键-图书、读者,每一个数据文件结构,过程设计,为软件中的每个模块确定相应的算法及内部数据结构,获得目标系统具体实现的精确描述,为编码工作做好准备。 (1)图形设计工具 (2)表格工具 (3)语言工具,程序流程图,功能模型设计,输入内容-用户对信息系统的录入。 输出内容-信息系统对外的显示或打印。 系统响应-信息系统对用户操作的处理过程,功能点列表,用户界面设计,确认用户输入的信息 响应的信息 出错处理和

45、显示信息 提供帮助和提示 处理窗口的滚动 建立功能与界面、数据库表的关联 建立应用程序与界面的分离,用户界面设计的特点,界面设计原则,设计方式比较,软件设计说明书,范围 数据设计 体系结构设计 接口设计 模块的过程设计 其他,小结,软件设计过程 体系结构设计 接口设计 数据结构设计 算法设计 用户界面设计,本次要求,完成设计文档 设计文档中必须完成: 功能点列表 数据文件表 界面设计图形表示(包含菜单、出错处理、结果响应等窗口的描述)。 对主要的函数给出流程图描述,第4章 编码实现,编码风格 编码语言的选择,编码风格,编码风格,使用标准的控制结构 有限制的使用GOTO语句 实现源程序的文档化

46、满足运行工程学的输入输出风格,使用标准的控制结构,单入口、单出口标准结构 if c then s; If c then s1 else s2; Case I of a: s1; b: s2; n: sn; endcase,While c do s; for i:=m to n do s; Repeat s until c,有限制的使用GOTO-1,用GOTO 语句实现提前退出循环; While c1 do begin if c2 then goto 20; if c3 then goto 30; end; 20: Goto 40; 30: 40,exit1:=false; exit2:=fal

47、se; While(c1) and (not exit1) and (not exit2) do Begin if c2 then exit1:=true; if c3 then exit2:=true; End If(exit1) then goto 20; If(exit2) then goto 30; 20: Goto 40; 30:. 40,有限制的使用GOTO-2,GOTO 语句用于出错处理 boolean push(item,index,stack,errflag) int errflag,index; float item,stack100; if(index=100) goto

48、 10; errflag=0; index=index+1; stackindex=item; return(errflag); 10: errflag=1; return(errflag);,有限制的使用GOTO-3,使用GOTO语句减少重复程序段。 if p then a;b; else b; endif while q loop a;b; endloop,if p then L1: a; endif b; If q then goto l1,实现源程序的文档化,有意义的变量名 适当的注释 标准的书写格式,名字,名字-非形式的、简练的、容易记忆的。 一个变量的作用于越大,名字所携带的信息越

49、多。 全局变量-使用具有说明性的名字;并加以注释。 局部变量-用短名字,Npending=0;/current length of input quene 全局变量采用大写开头的变量名。 如:Globle 常量用大写字母拼写。 如:CONSTANTS 变量的类型也应体现: 如:strTo,strFrom 字符串,名字,保持一致性 class UserQueue int noOfItemsInQ,frontOfTheQueue, queueCapacity; public: int noOfUserInQueue(),1)同一个词queue分别用了 Q、Queue、queue (2) 在类型Us

50、erQueue访问 queue.queueCapacity多余 可改为: class UserQueue int nitems, front, capacity; public: int nusers() queue.capacity+; n=queue.nusers(,名字,函数采用动作性的动词,后面可以跟着名词。 now=date.getTime(); putchar(/n,表达式和语句,用缩行显示程序的结构 for(n=0;n100;fieldn+=0); *i=0; return(n); 改为: for(n=0;n100;n+) fieldn=0; *i=0; return(n,表达式

51、和语句,使用表达式的自然形式。 避免含有否定运算的条件表达式。 可以改变关系运算方向,变成肯定的。 如 if(!block_id=unblocks) 改为 if(block_id=actblks)|(block_idunblocks,表达式和语句,用加括号的方式排除二义性。 特别是C语言,关系运算符比逻辑运算符优先级高。 if(x 分解为: if(2*kn-m) *xp=ck+1; else *xp=dk-; *x+=*xp,一致性和习惯用法,使用一致的缩排和加括号风格; if(month=FEB) int day; nday=28; if(year%4=0) nday=29; if(dayn

52、day) legal=FALSE; 最好采用习惯用法; for(i=0;in;i+) arrayi=1.0,使用字符形式的常量,不要用整数。 if(c=65,注释,不要大谈明显的东西。 给函数和全局数据加注释,满足运行工程学的输入输出风格,输入方面: (1)对输入数据进行有效性检验; (2)输入格式力求简单、一致; (3)使用结束标志终止输入; (4)提示“请输入”,给出范围和边界值; (5)对多个输入组合进行检查,输出方面: (1)对输出数据加以说明; (2)良好的报表和报告形式; (3)在线帮助; (4)对可能产生重大后果的给与提示; (5)防止用户意外非正常操作,具有防弹功能; (6)区

53、别不同用户,适合用户的习惯和水平; (7)系统能够自动恢复,编码语言的选择,选择编码语言的标准: (1)应用领域 (2)算法和计算复杂性 (3)数据结构的复杂性 (4)效率的考虑,第5章 软件测试Software Testing,Objective of Testing Testing Methods Testing and Debugging Process of Testing,Verification: Are we building the product right The software should conform to its specification 检查软件是否符合它的

54、描述。 检查系统是否满足它所定义的功能和非功能的需要,检验与验证Verification vs validation,Validation: Are we building the right product The software should do what the user really requires 软件是否满足用户的最终需要,Verification vs validation,V&V process,Software Inspections软件检查 Analyse and check system representations such as requirements do

55、cumentation,design disgrams and the program source code. Software Testing软件测试 Involves executing an implementation of the software with test data and examining the outputs of the software and its operational behaviour,Static and dynamic V&V,The V-model of development,Software inspections 软件检查,Involv

56、e people examining the source representation with the aim of discovering anomalies and defects Do not require execution of a system so may be used before implementation 软件检查不需要运行程序,可在程序完成之前进行验证,The inspection process,Static analysis checks,程序检查内容,测试的基本概念Testing Concept,Testing: To find errors in pro

57、grams 发现程序的错误 Debugging: Locate and modify errors 定位和纠正错误,Verification and validation is concerned with establishing the existence of defects in a program 确定在程序中存在错误 Debugging is concerned with locating and repairing these errors 查找错误并修复错误,Testing and debugging,测试和纠错的流程Testing and Debugging Process,

58、Testing,Testing Results,Debugging,The defect testing process,测试的种类Types of Testing,办公桌检查,测试方法Testing Methods,黑盒测试方法 (Black-Box) (1)等价分类法(Equivalence Partitioning) (2)边界值分析法(Boundary Value Analysis) (3)错误猜测法(Error Guessing) 白盒测试方法(White-Box) (1)路经测试法(Path Testing) (2)逻辑覆盖法(Logic Coverage Testing,Blac

59、k-box testing,Equivalence partitioning等价分类法,Input data and output results often fall into different classes where all members of a class are related Each of these classes is an equivalence partition where the program behaves in an equivalent way for each class member,等价分类法Equivalence Partitioning,基本思想:把输入数据的可能值划分若干等价类,使每类中的任何一个测试用例,都能代表同一等价类中的其他测试用例。 即:从某一等价类中任选一个测试用例未能发现程序的错误,就可以合理认为在该类中的其他测试用例也不会发现错误,Equivalence partitioning,Partition system inputs and outputs into equivalence sets If input is a 5-digit integer between 10,000 and 99,999, equivalence partitions are 10, 000,Equivalence

温馨提示

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

评论

0/150

提交评论