您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 综合/其它 > 武汉理工大学软件开发工具复习文档
软件开发工具软件概论:基本概念、架构、开发过程、工序、软件危机产生的原因、软件架构是什么样的、软件开发过程是什么样的、模型。软件分析与设计的基础:结构化分析、维护、设计。数据库设计。软件测试基本概念:软件测试的目标、准则、过程。C#语法:运算符优先级,左右位移运算。1)如何定义软件?–国标中对软件的定义为:与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。2)其它定义:–1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。–2.程序能够满意地处理信息的数据结构。–3.描述程序功能需求以及程序如何操作和使用所要求的文档。–4.以开发语言作为描述语言,可以认为:软件=程序+数据+文档。3)软件分类–系统软件:协助计算机硬件和系统工作,实现计算机基本功能•设备驱动、操作系统、通用工具…–应用软件:商业软件、数据库、视频游戏、图像处理、QQ…–编程软件:编译器、调试器、解释器、文本编辑器–其他分类方法:工作方式(实时、分时、交互式、批处理式);运行环境(单机、网络和嵌入式);–体系结构(C/S,B/S)。4)软件特点:–软件是一种逻辑实体:抽象的、无形的,没有物理实体,但是可以记录在介质上。–软件是人类智力的产品:软件是人们通过智力脑洞,依靠只是和技术等手段生产的信息系统产品。–软件开发过程复杂:软件涉及人、社会和组织的行为和需求,涉及几乎所有领域的知识,过程极为复杂,20实际60年代末爆发了一次软件危机。–软件需要长期维护:软件不会像硬件一样老化磨损,但存在缺陷维护和技术更新,软件维护和硬件维护有着本质差别,不能简单更换部件实现。在软件生命周期中,需要随时对暴露出来的问题进行修改。–软件成本昂贵:软件应用范围广泛和需求复杂,导致软件开发需要投入大量人力、物力和财力精心开发,导致软件成本昂贵。–软件可以复制:软件开发出来很容易被复制,从而形成多个副本5)软件危机–主要表现:开发成本和进度失控;用户对软件产品不满意;软件产品质量差;软件产品可维护性差;软件缺少相应文档资料;软件成本比例上升;生产率低。–原因:软件核心是逻辑,开发进程难以准确描述,软件质量也难以评价;规模庞大;无法准确把握用户需求。–解决方法:使用软件工程方法和技术。6)软件三层架构:•1)表示层•2)应用层•3)数据层7)软件N层架构:•1)用户接口层(表示层)•2)应用\服务层•3)业务层•4)数据访问层•5)数据存储8)软件架构的目标:–可靠性:软件多用于商业、服务,可靠性非常重要;–安全性:承担重要交易处理,安全性较为重要–可伸缩性:必须能够满足用户数目和使用率快速增长的情况下,保持合理的性能–可定制化性:同一套软件,可以根据不同用户群体及市场需求的变化挑战–可拓展性:随着新技术的出现,系统可以导入新技术–可维护性:排除现有错误,降低技术支持成本–客户体验:易于使用–市场时机:快速让产品进入市场,占领市场9)软件生命周期问题定义可行性分析总体描述系统设计编码调试和测试验收与运行维护升级废弃10)软件开发活动问题的定义及规划需求分析软件设计程序编码软件测试运行维护11)四种模型12)结构化分析方法–是一种面向数据流,自顶向下,逐步求精进行需求分析的方法。它适用于分析大型的数据处理系统,通常与设计阶段的结构化设计方法衔接适用,特别适用于企事业管理系统。–结构化分析通常使用数据流图、数据字典、结构化语言、判定表和判定树等工具,来建立一种结构化说明书的目标文档(需求规格说明书)。–20世纪70年代后期产生,适用于分析大型数据处理系统,与结构化设计SD一起联合使用。–通常用数据流图表达需求,以数据字典表示数据的逻辑定义。–核心思想是自顶向下、逐步求精。–基本手段是分解和抽象。–使用数据流图、数据字典等规范化工具描述需求。13)数据流图14)结构化设计的基本原则•1)抽象–抽象是一种思维工具,把事物本质的共同特性提取出来而不考虑其他细节。•2)模块化–把一个待开发的软件分解成若干小的简单的部分。•3)信息隐藏–隐蔽一个模块内包含的信息。•4)模块独立性(高内聚,低耦合)–内聚性:是一个模块内部各个元素间彼此结合的紧密程度的度量。–耦合性:模块间互相连接紧密程度的度量。一般要求做到高内聚、低耦合。结构化设计有概要设计和详细设计两个阶段:15)概要设计•1)设计软件系统结构–将一个复杂的系统按功能划分成模块;–确定每个模块的功能;–确定模块之间的调用关系;–确定模块之间的接口,即模块之间传递的信息;–评价模块结构的质量。•2)数据结构及数据设计•3)编写概要设计文档–包括概要设计说明书,数据库设计说明书,集成测试计划等•4)概要设计文档评审–包括设计方案是否完整实现需求分析中规定的功能。•5)概要设计工具——结构图(StructureChart,SC)。16)详细设计•详细设计的任务是为软件结构中的每一个模块确定采用的算法和块内数据结构.•详细设计的描述工具:–程序流程图:应用广泛的软件过程设计表示工具,通常也称为程序框图。–N-S图–问题分析图PAD–伪码PDL17)流程图18)数据库设计:1)规范的设计方法:•需求分析–获取用户需求•概念结构设计–形成具体的DBMS概念结构•逻辑结构设计–转化概念结构为数据模型•物理结构设计–为逻辑模型选取合适的物理结构•数据库实施–创建数据库,编写应用程序和SQL程序•运行维护–不断维护,分析数据库性能,调整参数,对数据库进行备份,恢复和处理。2)E-R图:•实体型(Entity):具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体;在E-R图中用矩形表示,矩形框内写明实体名;比如学生张三、学生李四都是实体。如果是弱实体的话,在矩形外面再套实线矩形。•属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画。在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性。如果是多值属性的话,在椭圆形外面再套实线椭圆。如果是派生属性则用虚线椭圆表示。•联系(Relationship):联系也称关系,信息世界中反映实体内部或实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。在E-R图中用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。比如老师给学生授课存在授课关系,学生选课存在选课关系。如果是弱实体的联系则在菱形外面再套菱形。–联系可分为以下3种类型:–(1)一对一联系(1∶1)–(2)一对多联系(1∶N)–(3)多对多联系(M∶N)•属性冲突–属性冲突指属性值的类型、取值范围或取值集合在不同的ER图中定义不同。•命名冲突–命名冲突包括同名异义和异名同义两种情况,前者是不同意义的对象在不同的局部应用中具有相同的名字,后者是同一意义的对象在不同的局部应用中具有不同的命名。命名冲突可以发生在实体、联系一级上,也可能发生在属性一级上。•结构冲突–结构冲突的情况比较多。一种是同一对象在不同应用中具有不同的抽象,这类冲突的解决方法通常是把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。3)概念结构设计•概念结构独立于数据库逻辑结构,也独立于支持数据库的DBMS。他能充分反映现实世界中实体之间的联系,同时又易于向关系、网状、层次等各种数据类型转换。•需求分析后需要根据数据流图和数据字典,抽象出具有相同特性和行为的一类实体,忽略非本质细节,抽取人们关心的属性,通过概念模型精确地表述。–数据抽象与局部视图设计•中层图一般为E-R图的依据。–视图的集成•消除不必要冗余,形成基本E-R图–解决冲突,合并分E-R图,形成初步E-R图•合并不一致,形成初步E-R图–消除不必要的冗余,设计基本E-R图。•合并后的E-R图可能存在数据冗余和联系冗余,需要进一步去除冗余。4)逻辑结构设计:1.E-R图向关系模型转换:–将实体转换为关系模式–将实体间的联系转化成关系模式•1∶1的联系•1∶n的联系•m∶n的联系2.优化关系模型:(完成转换后,需要对数据模型进行优化,修改,调整数据模型的结构,提高数据库性能。)①确定数据依赖。按需求分析阶段得到的语义,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间的数据依赖。②对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。③按照数据依赖的理论对关系模式逐一进行分析,考查是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。④按照需求分析阶段得到的信息要求和处理要求,分析这些模式是否满足这些要求,确定是否要对某些模式进行合并或分解。⑤对关系模式进行必要的分解或合并。3.设计用户子模式:•方便用户使用,提高用户使用效率(1)使用更符合用户习惯的别名(2)针对不同级别的用户定义不同的视图(3)简化用户对系统的使用5)物理结构设计•数据库物理设计阶段主要包括以下4个过程:–①分析影响物理数据库设计的因素。–②为关系模式选择存取方法。–③设计关系、索引等数据库文件的物理存储结构。–④评价物理结构。•进行数据库物理设计时需要注意以下问题:–确定数据的存储结构。–选择合适的存取路径。–确定数据的存放位置。–确定存取分布。19)软件测试目标(1)软件测试是为了发现错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。20)软件测试准则(1)所有测试都应该能追溯到用户的需求。(2)严格执行测试计划,排除测试的随意性。(3)将Pareto原理应用到测试中,集中测试容易出错的模块。(4)程序员应该避免测试自己设计的程序,而由独立的第三方完成测试工作。(5)测试用例应该由测试输入数据和预期输出结果组成。(6)测试应该从“小规模”开始,并逐步转向“大规模”。(7)妥善保存测试过程中形成的测试文档,包括测试计划测试用例和测试报告等,以便作为后期再测试的参考,同时也是系统文档资料的重要组成部分。21)软件测试过程1.单元测试单元测试,又称为模块测试,是对每一个程序模块进行测试,以验证每一个模块是否满足系统设计的要求,它是整个测试工作的基础。单元测试一般由熟悉程序内部设计和编码细节的程序员来完成,主要采用白盒测试方法,从模块接口、局部数据结构、重要的执行通路、出错处理通路和边界条件5个方面来测试模块的功能。据统计,单元测试所发现的错误,大约占程序中错误总量的2/3。2.集成测试集成测试,又称为组装测试、子系统测试,是在模块测试的基础上,把各个模块按照设计要求组装起来同时进行测试,其目标是发现与接口有关的问题。通常由模块组装成子系统或系统时有两种集成测试方法:非渐增式方法和渐增式方法。3.系统测试系统测试是经过集成测试后的软件,作为计算机系统的一部分,与计算机硬件、某些支持软件、数据和人员等元素结合起来,在实际运行环境中对系统进行严格有效的测试,目的是解决各子系统之间的数据通信和数据共享问题以及是否满足用户需求的问题。4.验收测试验收测试是在系统测试完成之后,用户在实际应用环境中所进行的真实数据测试,其目的是检测系统是否达到了用户需求规格说明书中的要求,尽可能地发现软件中存留的缺陷,并保证系统或软件产品最终被用户接收。具体地说,验收测试的内容包括:易用性测试、兼容性测试、安装测试、文档测试等几个方面。
本文标题:武汉理工大学软件开发工具复习文档
链接地址:https://www.777doc.com/doc-2462322 .html