精华内容
下载资源
问答
  • 软件工程导论课程设计.pdf
  • 机票预订系统,能录入旅客的信息(姓名、身份证号码、时间、目的地等),根据旅客需求查询和安排航班。
  • 停车场管理系统-软件工程导论课程设计.pdf
  • 软件工程导论课程设计(完整,详细)
  • 软件工程导论课程设计任务书.doc
  • 软件工程导论课程设计[定稿].pdf
  • 停车场管理系统~软件工程导论课程设计汇本.doc
  • 软件工程导论课程设计_学生学籍管理系统方案.doc
  • 图书管理系统_软件工程导论课程设计报告书.doc
  • 软件工程导论课程设计汇本报告2016年~11~22.doc
  • 软件工程课程设计电影院系统(文档),电影院系统,包括可行性分析,需求分析,界面设计,软件设计,软件测试,项目管理,偏向理论,纯文档类
  • 湖南人文科技学院计算机系 课程设计说明书 课程名称 : 软件工程导论 课程代码 题 目 : 学生选修课信息管理系统 年级/专业/班 : 09级计科2班 学生姓名 : 赵浩胡碧山文盼聂惠俊杨晨 学号 : 09408237 ;09408207 ; ...
  • 对于顺序图的设计,顺序图顾名思义就是用来描述对象自身及对象间信息传递顺序的视图。它用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。它着重...

    对于顺序图的设计,顺序图顾名思义就是用来描述对象自身及对象间信息传递顺序的视图。它用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。它着重显示了参与相互作用的对象和所交换消息的顺序。

    顺序图主要有4个标记符:对象、生命线、消息和激活。

    对于人力资源管理系统而言,我总共画了7张图,首先按照参与者的类别分为部门管理员,系统管理员以及应聘者,再按照每个参与者所参与的功能进一步划分。

    在设计顺序图的时候,有上网浏览过别人做这个类似的系统时的分析。我认为应该要先确定该功能下所涉及的边界类,实体类和接口类分别是哪些,然后在分析每个类之间的交互顺序。在用rose软件画图时有一点好处就是,由于之前在类图中已经对类做了定义,所以画顺序图时,需要用到什么类直接从列表中拉到顺序图界面就可以直接显示了,除了之前类图中没有定义到的数据库接口和功能相对应的界面以外。

    最难的就是确立交互顺序,就拿登录来说,登录看似只是一个输入用户名密码的操作,其实中间暗含了很多系统内部的流程,涉及到了登录界面,数据库接口,以及存在于数据库里的表以及表信息从而判断用户是否已经注册,又是属于哪一类用户。一层一层的返回所需的数据。

    转载于:https://www.cnblogs.com/lyx15606900513/p/9187208.html

    展开全文
  • 这是一个图书管理系统,主要负责图书的采购信息存档、对图书信息的查询及编辑、对学生相关信息的管理、对借阅书本情况的管理,不含程序实现
  • 软件工程导论—详细设计

    千次阅读 多人点赞 2020-05-09 12:47:52
    1. 结构程序设计 2. 人机界面设计 3. 过程设计工具 4. 面向数据结构的设计方法 5. 程序复杂程度的定量度量

    1. 结构程序设计

    详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统。经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

    结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。

    结构程序设计的经典定义是:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。为了实际使用方便起见,常常还允许使用DO-UNTIL和DO-CASE两种控制结构。

    有时需要立即从循环(甚至嵌套的循环)中转移出来,允许使用LEAVE(或BREAK)结构。LEAVE或BREAK结构实质上是受限制的GOTO语句,用于转移到循环结构后面。
    在这里插入图片描述

    2. 人机界面设计

    2.1. 人机界面设计概述

    人机界面设计是接口设计的重要组成部分。对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。

    人机界面的设计质量,直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命,必须对人机界面设计给予足够重视。

    人机界面设计有三条黄金规则:

    1. 界面要置用户于控制之下;
    2. 界面内容要减少用户记忆负担;
    3. 各个保持界面一致。

    2.2. 人机界面设计问题

    设计人机界面过程中会遇到的4个问题:

    1. 系统响应时间
      系统响应时间指从用户完成某个控制动作,到软件给出预期的响应之间的这段时间。系统响应时间有两个重要属性:长度和易变性。
      长度:如果系统响应时间过长,用户就会感到紧张和沮丧;系统响应时间过短会迫使用户加快操作节奏,从而可能会犯错误。
      易变性:指系统响应时间相对于平均响应时间的偏差,即使系统响应时间较长,响应时间易变性低也有助于用户建立起稳定的工作节奏。
    2. 用户帮助设施
      大多数现代软件都提供联机帮助设施,用户无须离开用户界面就能解决自己的问题。常见的帮助设施可分为集成的和附加的两类。
      集成的帮助设施设计在软件里面,它对用户工作内容是敏感的,用户可以从与刚刚完成的操作有关的主题中选择一个请求帮助。
      附加的帮助设施是在系统建成后再添加到软件中的,它实际上是一种查询能力有限的联机用户手册。集成的帮助设施优于附加的帮助设施。
    3. 出错信息处理
      出错信息和警告信息,是出现问题时交互式系统给出的“坏消息”。
    4. 命令交互
      多数情况下,用户既可以从菜单中选择软件功能,也可以通过键盘命令序列调用软件功能。在理想的情况下,所有应用软件都有一致的命令使用方法。

    2.3. 人机界面设计过程

    用户界面设计是一个迭代的过程,也就是说,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改。

    为了支持上述迭代过程,各种用于界面设计和原型开发的软件工具应运而生。这些工具被称为用户界面工具箱或用户界面开发系统。
    在这里插入图片描述

    3. 过程设计工具

    3.1. 程序流程图

    程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法。
    在这里插入图片描述
    它的主要优点是对控制流程的描绘很直观,便于初学者掌握。
    程序流程图的主要缺点有:

    1. 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构;
    2. 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制;
    3. 程序流程图不易表示数据结构。

    3.2. 盒图(N-S图)

    盒图具有功能域明确的特点,很容易确定局部和全程数据的作用域,能清晰的表现嵌套关系,也可以表示模块的层次结构。不可以任意转移控制。

    在这里插入图片描述
    例如下面的程序流程图,N-S图表示如下。
    在这里插入图片描述

    3.3. PAD图

    PAD是问题分析图(problem analysis diagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。

    在这里插入图片描述
    它拥有如下优点:

    1. 使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序;
    2. PAD图所描绘的程序结构十分清晰;
    3. PAD图表现程序逻辑易读、易懂、易记;
    4. 容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成;
    5. 即可表示程序逻辑,也可描绘数据结构;
    6. PAD图的符号支持自顶向下、逐步求精方法的使用。

    例如下面的程序流程图,PAD图表示如下。
    在这里插入图片描述

    3.4. 判定表(决策表)

    当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。

    判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。

    在这里插入图片描述
    如上图所示,一张判定表由4部分组成:

    1. 左上部列出所有条件;
    2. 左下部是所有可能做的动作;
    3. 右上部是表示各种条件组合的一个矩阵;
    4. 右下部是和每种条件组合相对应的动作。

    一张典型的判定表如下所示:

    1234
    条件发货单金额>$500>$500<=$500<=$500
    赊欠情况>60天<=60天>60天<=60天
    操作不发出批准书
    发出批准书
    发出发货单
    发出赊欠报告

    判定表能清晰地表示复杂的条件组合与应做的动作之间的对应关系。但判定表的含义不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程,当数据元素的值多于两个时,判定表的简洁程度也将下降,此时建议使用判定树。

    3.5. 判定树(决策树)

    判定树是判定表的一种简化形式,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。因此多年来判定树一直受到人们的重视,是一种比较常用的系统分析和设计的工具。

    判定树的形式简单,一眼就可以看出其含义,因此易于掌握和使用。但是它的简洁性不如判定表,数据元素的同一个值往往要重复写多遍,而且越接近树的叶端重复次数越多,并且画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。

    如下判定树示例,用来计算行李费:
    在这里插入图片描述

    3.6. 过程设计语言

    过程设计语言(PDL)也称为伪代码,它是用正文形式表示数据和处理过程的设计工具。

    PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,可以适应各种工程项目的需要。

    PDL是一种“混杂”语言,它使用一种语言的词汇,同时却使用另一种语言的语法。

    伪代码的基本控制结构有三种:

    • 简单陈述句结构:避免复合语句;
    • 判定结构:IF_THEN_ELSE或CASE_OF结构;
    • 选择结构:WHILE_DO或REPEAT_UNTIL结构。

    例如用伪代码设计检测发货单的过程

    IF 发货单金额超过$500 THEN
    	IF 欠款超过60天 THEN
    		在偿还欠款前不予批准
    	ELSE 欠款未超期
    		发批准书及发货单
    	ENDIF
    ELSE 发货单金额未超过$500
    	IF 欠款超过60天 THEN
    		发批准书、发货单及催款通知
    	ELSE 欠款未超期
    		发批准书及发货单
    	ENDIF
    ENDIF
    

    PDL可以作为注释直接插在源程序中间。有助于保持文档和程序的一致性,提高了文档的质量。也可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。现在已经有自动处理程序存在,而且可以自动由PDL生成程序代码,极大方便了工作。但不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。

    4. 面向数据结构的设计方法

    4.1. 面向数据结构的设计方法概述

    数据结构既影响程序的结构又影响程序的处理过程,最终目标是得出对程序处理过程的描述,一般来说这种设计方法有着以下三条设计准则:

    • 重复出现的数据通常由具有循环控制结构的程序来处理;
    • 选择数据要用带有分支控制结构的程序来处理;
    • 层次的数据组织通常和使用这些数据的程序的层次结构相似。

    这里我们介绍一下Jackson结构程序设计方法,它是一种结构化编程方法,以数据流结构及程序结构之间的对应关系为基础。Jackson方法将程序及数据用顺序、选择、循环结构的组合来表示,适合用来设计程序的细部控制结构。

    4.2. Jackson图

    数据结构中数据元素彼此间的逻辑关系有三种:

    1. 顺序结构:顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次;
    2. 选择结构:选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个;
    3. 循环结构:重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。

    在这里插入图片描述
    Jackson图形象直观可读性好,便于表示层次结构,而且是对结构进行自顶向下分解的有力工具,它既能表示数据结构也能表示程序结构。但当用Jackson图表示选择或重复结构时,选择条件或循环结束条件不能直接在图上表示出来,影响了图的表达能力,也不易直接把图翻译成程序,另一方面,Jackson图的框间连线为斜线,不易在行式打印机上输出。

    4.4. Jackson方法

    Jackson结构程序设计方法由5个步骤组成:

    1. 分析并确定输入数据和输出数据的逻辑结构,用Jackson图描绘数据结构;
    2. 找出输入数据结构和输出数据结构中有对应关系的数据单元。
      所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须重复的次序和次数都相同才可能有对应关系)。
    3. 用下述规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:
      第一,为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框(层次不同时与图中层次低的那个对应);
      第二,根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框;
      第三,根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。
      改进的Jackson图规定在构成顺序结构的元素中不能有重复出现或选择出现的元素,因此可能需要增加中间层次的处理框。
    4. 列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。
    5. 用伪码表示程序。

    例如:假设一个文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。

    用 Jackson结构程序设计方法的设计步骤如下:

    1. 用Jackson图描绘的输入输出数据结构
      在这里插入图片描述
    2. 分析确定在输入数据结构和输出数据结构中有对应关系的数据单元
      在这里插入图片描述
    3. 从数据结构图导出程序结构图
      在这里插入图片描述
    4. 列出所有操作和条件,并且把它们分配到程序结构图的适当位置
      在这里插入图片描述
    5. 用伪码表示程序处理过程

    5. 程序复杂程度的定量度量

    5.1. 程序复杂程度的定量度量概述

    详细设计阶段设计出的模块质量可以使用软件设计的基本原理和概念进一步仔细衡量它们的质量。但是,这种衡量毕竟只能是定性的,人们希望能进一步定量度量软件的性质。

    定量度量程序复杂程度可以把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣,也可以作为模块规模的精确限度。

    5.2. McCabe方法

    McCabe方法是一种软件质量度量方法,它是基于对程序拓扑结构复杂度的分析。 它根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。

    它的表示是一张流图,所谓流图实质上是简化的程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。

    流图的表示图符:

    1. 结点:用圆表示,一个圆代表一条或多条语句;
    2. 边:箭头线称为边,代表控制流。在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句;
    3. 区域:由边和结点围成的面积称为区域,包括图外部未被围起来的区域。

    如下图所示:
    在这里插入图片描述
    任何方法表示的过程设计结果,都可以翻译成流图,在流图中,对不同结构有不同的表示方法,例如:

    1. 对于顺序结构,一个顺序处理序列和下一个选择或循环的开始语句,可以映射成流图中的一个结点
      在这里插入图片描述
    2. 对于选择结构,开始语句映射成一个结点;两条分支至少各映射成一个结点;结束映射成一个结点
      在这里插入图片描述
    3. 对于循环结构,开始和结束语句各映射成一个结点。
      在这里插入图片描述
      当过程设计中包含复合条件时,应该把复合条件分解为若干个简单条件,每个简单条件对应流图中一个结点。所谓复合条件,就是在条件中包含了一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)。

    例如:
    在这里插入图片描述
    计算环形复杂度的方法
    环形复杂度定量度量程序内分支数或循环个数,即程序结构的复杂程度,它可以定量地度量测试难度,然后能对软件最终的可靠性给出某种预测。大量实践表明,模块环形复杂度以V(G)≤10为宜。

    环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度V(G):

    1. V(G)=流图中的区域数;
    2. V(G)=E-N+2(其中E是流图中的边数,N是结点数)
    3. V(G)=P+1(其中P是流图中判定结点的数目 )

    例如:
    在这里插入图片描述

    5.3. Halstead方法

    Halstead方法根据程序中运算符操作数的总数来度量程序的复杂程度。

    N 1 N_1 N1为程序中运算符出现的总次数, N 2 N_2 N2为操作数出现的总次数,程序长度 N N N定义为: N = N 1 + N 2 N=N_1+N_2 N=N1+N2

    程序中使用的不同运算符(包括关键字)的个数 n 1 n_1 n1,以及不同操作数(变量和常数)的个数 n 2 n_2 n2。预测程序长度的公式如下: H = n 1 log ⁡ 2 n 1 + n 2 log ⁡ 2 n 2 H = n_1 \log_2n_1 + n_2 \log_2n_2 H=n1log2n1+n2log2n2预测程序中包含错误的个数的公式如下: E = N log ⁡ 2 ( n 1 + n 2 ) / 3000 E = N \log_2 (n_1+n_2) / 3000 E=Nlog2(n1+n2)/3000

    展开全文
  • 软件工程导论课程总结

    千次阅读 2019-02-17 10:13:24
    软件工程基本知识总结!

    文章目录

    1 软件过程概述

    1.1软件危机

    软件危机

    在计算机软件的开发和维护过程中所遇到的一系列严重问题。

    软件危机典型表现

    •对软件开发成本和进度的估计常常不准 确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。

    • 用户对“已完成”系统不满意的现象经常发生。

    • 软件产品的质量往往靠不住。Bug一大堆, Patch一个接一个。

    • 软件的可维护程度非常之低。

    • 软件通常没有适当的文档资料。

    • 软件的成本不断提高。

    • 软件开发生产率的提高赶不上硬件的发展和人们需求的增长。

    软件危机的原因

    ● 一方面是与软件本身的特点有关 — 如何开发软件,以满足不断增长,日趋复杂的需求。

    ● 另一方面是由软件开发和维护的方法不正确有关 —如何维护数量不断膨胀的软件产品。

    消除软件危机的途径

    • 对计算机软件有一个正确的认识,软件=程序+数据+文档资料

    • 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人 员协同配合、共同完成的工程项目。

    • 推广使用在实践中总结出来的开发软件的成功技术和方法。

    • 开发和使用更好的软件工具。

    • 解决途径 软件工程 1)管理措施2) 技术措施

    1.2软件工程

    软件工程概念

    软件工程:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。

    软件工程:(1)把系统的、规范的、 可度量的方法应用于软件开发、运行和维护过程,即:将工程化应用于软件;(2)研究(1)中提到的方法。

    软件工程:是应用计算机科学、数学(用于构造模型和算法)及管理科学(用于计划、资源、质量和成本等的管理)等原理开发软件的工程。它借鉴传统工程(用于制定规范、设计范型、评估成本、权衡结果)的原则、方法,以提高软件开发质量,降低成本为目的。

    软件工程方法学

    概念

    把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学

    软件工程方法学包含3个要素

    • 过程 为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

    • 方法 完成软件开发的各项任务的技术方法,回答“怎样做”的问 题。

    • 工具 为运用方法而提供的自动的或半自动的软件工程支撑环境。

    软件工程方法学分类

    • 面向过程的方法学 –- 传统

    • 面向对象的方法学 –- 现代

    • 面向方面的方法学 –- 逐步

    1.3软件生命周期

    1.4软件过程

    软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

    瀑布模型

    • 瀑布模型有许多优点:可强迫开发人员采用规范的方法(例如,结构化技术); 严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。瀑布模型的成功在很大程度 上是由于它基本上是一种文档驱动的模型。

    • “瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。实际项目很少按照该模型给出的顺序进行;用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成;开发者常常被不必要地耽搁。

    快速原型模型

    • 适用于用户驱动的系统(即需求模糊或随时间变化的系统)。

    • 优点:

    –从实践中学习(Learning by doing)

    –改善通信

    –改善用户参与

    –使部分已知需求清晰化

    –展示描述的一致性和完整性

    –提高系统的实用性、可维护性

    –节省开发的投入、缩短整个软件的开发周期

    • 原型模型的缺点

    –用户有时误解了原型的角色,例如他们可能误解原型应该和真实系统一样可靠。

    –缺少项目标准,进化原型方法有点像编码修正。

    –缺少控制,由于用户可能不断提出新要求,因而原型迭代的周期很难控制。

    –额外的花费:研究结果表明构造一个原型可能需要10%额外花费。

    –为了尽快实现原型,采用了不合适的技术,运行效率可能会受影响。

    –原型法要求开发者与用户密切接触,有时这是不可能的。例如外包软件。

    增量模型

    先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。

    特点

    • 融合了线性顺序模型的基本成分和原型实现的迭代特征;

    • 以功能递增的方式进行软件开发;

    • 在每一步递增中,均发布一个新的增量,把用户/开发者的经验结合到不断求精的产品中;

    • 每个增量的开发没有必要使用相同的过程;

    • 可改善测试效果和降低软件开发总成本。

    • 增量过程模型与原型实现模型,本质上都是迭代的。

    • 两者区别在:增量模型强调每一个增量发布一个可操作的产品。早期的增量提供了为用户服务的功能和给用户评价的平台。

    增量模型存在的问题

    • 增量应该相对较小,每个增量应该包含一 定的系统功能。所以,很难把用户的需求映射到适当规模的增量上。

    • 大多数系统需要一组在系统许多部分都会用到的基本服务。但由于增量实现前需求不能被详细定义,所以,明确所有增量都会用到的基本服务就比较困难。

    增量模型的优点

    1. 在较短时间内向用户提交可完成部分工作的产 品,并分批、逐步地向用户提交产品。从第一个部件交付之日起,用户就能做一些有用的工 作。
    2. 整个软件产品被分解成许多个增量部件,开发 人员可以一个部件一个部件地逐步开发。
    3. 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
    4. 采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报

    使用增量模型的困难

    1. 在把每个新的增量部件集成到现有软件体系结构中时,必须不破坏原来已 经开发出的产品。此外,必须把软件 的体系结构设计得便于按这种方式进 行扩充,向现有产品中加入新构件的 过程必须简单、方便,也就是说,软 件体系结构必须是开放的。
    2. 开发人员既要把软件系统看作整体。 又要看成可独立的部件,相互矛盾。
    3. 多个部件并行开发,具有无法集成的 风险。

    螺旋模型

    可看作在每个快速原型阶段之前都增加了风险分析过程的快速原型模型。

    • 对于大型软件系统的开发,螺旋模型是一 个很现实的方法,主要适用于内部开发的大规模软件项目。

    • 优势:随着迭代的增加(成本的增加), 风险程度随之降低

    • 缺陷:比较复杂,需要相当的风险评估技术,且成功依赖于这种技术。要有具有丰富风险评估专门知识的开发人员,否则风 险更大。

    敏捷过程与极限编程

    极限编程 (extreme Programming,简称XP)

    特点

    以极限编程为杰出代表的敏捷过程,具有对变化和不确定性的更快速、更敏捷的反应特征,而且在快速的同时仍然能够保持可持续的开发速度。

    2可行性研究

    2.1可行性研究的任务

    可行性研究的内容

    (1) 技术可行性

    (2) 经济可行性

    (3) 操作可行性:用户使用可能性、 时间进度可行性、组织和文化上的可行性

    (4) 社会可行性(法律可行性)

    2.2系统流程图

    2.3数据流图

    DFD-Date Flow Diagram

    分层 DFD 图的优点

    . 便于实现— 采用逐步细化的扩展方法,可避免一次引入过多的细节,有利于控制问题的复杂度;

    . 便于使用— 用一组图代替一张总图,方便用户及软件开发人员阅读。

    2.3数据字典

    DD(Data Dictionary)

    数据字典的任务是: 对于数据流图中出现的所 有被命名的图形元素在字典中作为一个词条加 以定义,使得每一个图形元素的名字都有一个 确切的解释。

    数据流词条的描述

    数据流名

    说明:简要介绍作用,即它产生的原因和结果。

    数据流来源:即该数据流来自何方。

    数据流去向:去向何处。

    数据流组成:数据结构。

    每个数据量流通量:数据量、流通量。

    例子

    数据流名:发票

    说明:用作学生已付书款的依据

    数据流来源:来自加工“审查并开发票”

    数据流去向:流向加工“开领书单”。

    数据流组成:学号+姓名+书号+单价总价+书费合计

    加工逻辑词条的描述

    格式

    加工名

    加工编号:反映该加工的层次

    简要描述:加工逻辑及功能简述

    输入数据流:

    取值范围: 相关的数据元素及数据结构

    加工逻辑说明

    2.5成本效益分析

    成本估计技术

    1. 代码行技术
    2. 任务分解技术
    3. 自动估计成本技术

    3需求分析

    3.1 需求分析的任务

    1 确定对系统的综合要求

    -功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、 逆向需求、将来可能提出的要求。

    2 分析系统的数据要求

    3 导出系统的逻辑模型

    4 修正系统开发计划

    3.2 与用户沟通获取需求的方法

    访谈

    • 正式的访谈

    系统分析员将提出一些事先准备好的具体问题。

    • 非正式的访谈

    分析员将提出一些用户可以自由回答的开放性问 题,以鼓励被访问人员说出自己的想法。

    • 当需要调查大量人员的意见时,向被调查人分发调查表是一个十分有效的做法。

    • 在访问用户的过程中使用情景分析技术往往非常有效。

    情景分析

    所谓情景分析就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析。

    情景分析技术的用处主要体现在下述两个方面:

    (1) 它能在某种程度上演示目标系统的行为,从而便于用户理解,而且还可能进一步揭示出一些分析员 目前还不知道的需求。

    (2) 由于情景分析较易为用户所理解,使用这种技术能保证用户在需求分析过程中始终扮演一个积极主动的角色。需求分析的目标是获知用户的真实需求, 而这一信息的惟一来源是用户,因此,让用户起积极主动的作用对需求分析工作获得成功是至关重要 的。

    快速建立软件原型

    • 快速原型就是快速建立起来的旨在演示目标系统主要功能的可运行的程序。

    • 快速建立软件原型是最准确、最有效、 最强大的需求分析技术。

    • 快速原型应具备的特性是“快速”、 “容易修改”。

    3.3 分析建模与规格说明

    分析建模

    需求分析过程应该建立3种模型:

    数据模型 ---- 实体-联系图

    功能模型 ---- 数据流图

    行为模型 ----状态转换图

    软件需求规格说明

    软件需求规格说明(SRS)

    Software Requirement Specification

    通常用自然语言+模型,完整、准确、具体地描述系统的数据要求、功能需求、 性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求 以及将来可能提出的要求。

    软件需求说明书的编写提示

    1 引言

    1.1 编写目的

    1.2 背景

    1.3 定义

    1.4 参考资料

    2 任务概述

    2.1 目标

    2.2 用户的特点

    2.3 假定和约束

    3 需求规定

    3.1 对功能的规定

    3.2 对性能的规定

    3.2.1 精度

    3.2.2 时间特性要求

    3.2.3 灵活性

    3.3 输人输出要求

    3.4 数据管理能力要求

    3.5 故障处理要求

    3.6 其他专门要求

    4 运行环境规定

    4.1 设备

    4.2 支持软件

    4.3 接口

    4.4 控制

    3.4 实体-联系图(ER)

    Entity Relationship Diagram

    • ER图 ---- 是用来建立数据模型的工具。

    • 数据模型 ---- 是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,反映了用户的现实环境,而且与在软件系统中的实现方法无关。

    • 数据模型中包含3种相互关联的信息:数据对象 (实体)、数据对象的属性及数据对象彼此间相互连接的关系。

    3.5 数据规范化

    规范化的目的

    • 消除数据冗余,即消除表格中数据的重复;

    • 消除多义性,使关系中的属性含义清楚、单一;

    • 使关系的“概念”单一化,让每个数据项只是一个简单的数或字符串,而不是一个组项或重复组;

    • 方便操作。使数据的插入、删除与修改操作可行并方便;

    • 使关系模式更灵活,易于实现接近自然语言的查询

    范式

    通常用“范式(Normal Forms)”定义消除数据冗余的 程度。第一范式(1NF)数据冗余程度最大,第五范 式(5 NF)数据冗余程度最小。但是:

    1、范式级别越高,存储同样数据就需要分解成更多张表,因此,“存储自身”的过程也就越复杂。

    2、随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降,因此,在需求变化时数据的稳定性较差

    3、范式级别提高则需要访问的表增多,因此性能(速度) 将下降。从实用角度看来,在大多数场合选用第三范式都比较恰当。

    3.6 状态转换图

    状态转换图(简称为状态图)

    通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。

    事件就是引起系统做动作或 (和)转换状态的控制信息。

    此外,状态图还指明了作为特定事件的结果系统将做哪些动 作(例如,处理数据)。

    符号

    • 初态用实心圆表示,终态用一对同心圆(内圆为 实心圆)表示。

    • 中间状态用圆角矩形表示,可以用两条水平横 线把它分成上、中、下3个部分。上面部分为状 态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选的。

    3.7 其他图形工具

    • IPO图

    input processing output

    4总体设计

    4.1 设计过程

    • 总体设计过程通常由两个主要阶段组成:

    – 系统设计阶段,确定系统的具体实现方案;

    – 结构设计阶段,确定软件结构。

    4.2 设计原理

    4.2.1 模块化

    模块是由边界元素限定的相邻程序元素(例如, 数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。

    – 如:过程、函数、子程序、宏、对象等,都可作为模块。

    模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

    4.2.2 抽象

    人类在认识复杂现象的过程中使用的最强有力的思维工具是 抽象 – 就是抽出事物的本质特性(共性),而暂时不考虑它们的细节。

    软件工程过程的每一步都是对软件解法的抽象层次的一次精化。

    4.2.3 逐步求精

    逐步求精定义为:“为了能集中精力解决主要问题而尽量推迟对 问题细节的考虑。”

    • 抽象与求精是一对互补的概念。

    • 抽象使得设计者能够说明过程和数据,同时却忽略低层细节。事实上,可以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法。

    • 求精则帮助设计者在设计过程中逐步揭示出 低层细节。

    • 这两个概念都有助于设计者在设计演化过程 中创造出完整的设计模型。

    4.2.4 模块独立

    模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。

    模块的独立程度可以由两个定性标准度量

    耦合

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

    耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。

    内聚

    一个模块内部元素在功能上相互关联的强度

    耦合、内聚与模块独立性关系

    耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。

    4.3 改进设计的启发规则

    1. 改进软件结构提高模块独立性。
    2. 模块规模应该适中(30-60行语句)。
    3. 深度、宽度、扇出和扇入都应适当。
    4. 模块的作用域应该在控制域之内。
    5. 力争降低模块接口的复杂程度。
    6. 设计单入口单出口的模块。
    7. 模块功能应该可以预测。

    4.4结构图

    SC – Structure Chart

    结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。

    在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当 一个在调用箭头尾部标以一个弧形符号, 表示模块A反复调用模块C和模块D

    4.5 面向数据流的设计方法

    — 结构化设计(SD - Structured Design)

    • 面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径。

    • 面向数据流的设计要解决的任务,就是在需求分析的基础上,将表示系统逻辑模型的DFD图映射 (Mapping)成软件系统结构的初始设计描述。

    分类

    变换分析DFD->SC

    5详细设计

    详细设计的目的: 为软件结构图 (SC) 中的每一个模块确定采用的算法和模块内数据结构,用某种选定的表达工具给出清晰的描述。

    5.1 结构程序设计

    结构程序设计的经典定义如下所述:“如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。”

    3种基本的控制结构

    顺序、选择、循环

    5.2 人机界面设计

    设计人机界面中的4个问题

    1)系统响应时间

    两个重要属性,分别是长度和易变性。

    2)用户帮助设施

    常见的帮助设施可分为集成的和附加的两类

    3)出错信息处理
    4)命令交互

    人机界面设计指南

    1)一般交互指南

    一般交互指南涉及信息显示、数据输入和系统整体控制,因此,这类指南是全局性的,忽略它们将承担较大风险。

    (1) 保持一致性。

    应该为人机界面中的菜单选择、命令输入、数据显示以及众多的其他功能,使用一致的格式。

    (2) 提供有意义的反馈。

    应向用户提供视觉的和听觉的反馈,以保证在用户和系统之间建立双向通信

    (3) 在执行有较大破坏性的动作之前要求用户确认。

    如果用户删除一个文件,或覆盖一些重要信息,或终止一个程序的运行,应 该给出“您是否确实要…”的信息,以请求用户确认他的命令。

    (4) 允许取消绝大多数操作。

    UNDO或REVERSE功能曾经使众多终端用户避免了大量时间浪费。每个交互 式系统都应该能方便地取消已完成的操作。

    (5) 减少在两次操作之间必须记忆的信息量。

    不应该期望用户能记住在下一步操作中需使用的一大串数字或标识符。应该

    尽量减少记忆量。

    (6) 提高对话、移动和思考的效率。

    应该尽量减少用户击键的次数,设计屏幕布局时应该考虑尽量减少鼠标移动 的距离,应该尽量避免出现用户问“这是什么意思?”的情况。

    (7) 允许犯错误。系统应该能保护自己不受严重错误的破坏。

    (8) 按功能对动作分类,并据此设计屏幕布局。

    下拉菜单的一个主要优点就是能按动作类型组织命令。实际上,设计者应该尽力提高命令和动作组织的“内聚性”。

    (9) 提供对用户工作内容敏感的帮助设施。

    (10) 用简单动词或动词短语作为命令名。

    过长的命令名难于识别和记忆,也会占用过多的菜单空间。

    2) 信息显示指南

    如果人机界面显示的信息是不完整的、含糊的或难于理解的,则该应用系统显然不能满足用户的需求。可以用多种不同方式“显示”信息:用文字、图形和声音;按位置、移动和大小;使用颜色、分辨率和省略。

    (1) 只显示与当前工作内容有关的信息。

    用户在获得有关系统的特定功能的信息时,不必看到与之无关的数据、菜单和图形。

    (2) 不要用数据淹没用户,应该用便于用户迅速吸取信息的 方式来表示数据。 例如,可以用图形或图表来取代庞大的表格。

    (3) 使用一致的标记、标准的缩写和可预知的颜色。

    显示的含义应该非常明确,用户无须参照其他信息源就能理解。

    (4) 允许用户保持可视化的语境。

    如果对所显示的图形进行缩放,原始的图像应该一直显示着(以缩小的形式 放在显示屏的一角),以使用户知道当前看到的图像部分在原图中所处的相 对位置。

    (5) 产生有意义的出错信息。

    (6) 使用大小写、缩进和文本分组以帮助理解。

    人机界面显示的信息大部分是文字,文字的布局和形式对用户从中提取信息的难易程度有很大影响。

    (7) 使用窗口分隔不同类型的信息。

    利用窗口用户能够方便地“保存”多种不同类型的信息。

    (8) 使用“模拟”显示方式表示信息,以使信息更容易被用户提取。

    (9) 高效率地使用显示屏。当使用多窗口时,应该有足够的空间使 得每个窗口至少都能显示出一部分。此外,屏幕大小应该选得 和应用系统的类型相配套(这实际上是一个系统工程问题)。

    3)数据输入指南

    用户的大部分时间用在选择命令、键入数据和向系统提供输入。在许多应用系统中,键盘仍然是主要的输入介质,但是,鼠标、数字化仪和语音识别系统正迅速地成为重要的输入手段

    (1) 尽量减少用户的输入动作。

    最重要的是减少击键次数,这可以用下列方法实现:用鼠标从预定义的一组输入中选一个;用“滑动标尺”在给定的值域中指定输入值;利用宏把一次击键转变成更复杂的输入数据集合。

    (2) 保持信息显示和数据输入之间的一致性。显示的视觉特征应该与输入域一致。

    (3) 允许用户自定义输入。

    专家级的用户可能希望定义自己专用的命令或略去某些类型的警告信息和动作确认,人机界面应该为用户提供这样做的机制。

    (4) 交互应该是灵活的,并且可调整成用户最喜欢的输入方式。

    用户类型与喜好的输入方式有关,例如,秘书可能非常喜欢键盘输入,而经理可能更喜欢使用鼠标之类的点击设备。

    (5) 使在当前动作语境中不适用的命令不起作用。这可使得用户不去做那些肯定会导致错误的动作。

    (6) 让用户控制交互流。

    用户应该能够跳过不必要的动作,改变所需做的动作的顺序(在应用环境允 许的前提下),以及在不退出程序的情况下从错误状态中恢复正常。

    (7) 对所有输入动作都提供帮助。

    (8) 消除冗余的输入。

    除非可能发生误解,否则不要要求用户指定输入数据的单位;尽可能提供默认值;绝对不要要求用户提供程序可以自动获得或计算出来的信息。

    5.3 详细设计的工具

    程序流程图

    主要优点

    对控制流程的描绘很直观,便于初学者掌 握。由于程序流程图历史悠久,为最广泛的人所熟悉,尽 管它有种种缺点,许多人建议停止使用它,但至今仍在广 泛使用着。不过总的趋势是越来越多的人不再使用程序流 程图了。

    主要缺点

    (1) 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。

    (2) 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制

    (3) 程序流程图不易表示数据结构。

    盒图(N-S图)

    特点

    (1) 功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。

    (2) 不可能任意转移控制。

    (3) 很容易确定局部和全程数据的作用域。

    (4) 很容易表现嵌套关系,也可以表示模块的层次结构。

    5.4 程序复杂程度的定量度量

    定量度量程序复杂程度的价值

    — 把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量;

    — 定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;

    — 程序的定量的复杂程度可以作为模块规模的精确限度。

    MrcCabe度量法

    McCabe度量法,又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法

    计算环形复杂度V(G)的方法

    (1) 流图中的区域数等于环形复杂度

    (2) 流图G的环形复杂度 V(G)=E N+2其中,E是流图中边的条数,N是结点数

    (3) 流图G的环形复杂度 V(G)=P+1其中,P是流图中判定结点的数目。

    6编码与测试----实现

    6.1软件测试基础

    6.1.1软件测试的目标

    (1) 预防错误: 为下次项目
    (2) 发现错误:为本次项目

    G.Myers 给出了关于测试的一些规则,这些规则也可以看作是测试的目标或定义。

    (1) 测试是为了发现程序中的错误而执行程序的过程;

    (2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;

    (3) 成功的测试是发现了至今为止尚未发现的错误的测试。

    6.1.2测试方法

    6.1.3测试步骤

    1. 模块测试 — 单元
    2. 子系统测试 — 局部
    3. 系统测试 — 集成
    4. 验收测试 — 用户参与
    5. 平行运行 — 新旧共存

    6.1.4测试阶段的信息流

    测试阶段的信息流

    软件测试的对象

    软件测试并不等于程序测试。软件测试应贯 穿于软件定义与开发的整个期间。因此,需求分析、概要设计、详细设计以及程序编码 等所得到的文档资料,包括需求规格说明、 概要设计说明、详细设计规格说明以及源程 序,都应成为软件测试的对象。

    6.2单元(模块)测试

    6.2.1 测试重点 — 5个方面

    1. 模块接口

    主要检查下述几个方面:参数的数目、次序、属性或单位系统与变元是否一致;是否修改了只作输入用的变元;全局变量的定义和用法在各个模块中是否一致。

    2. 局部数据结构

    局部数据说明、初始化、默认值等方面的错误。

    3. 重要的执行通路

    选择最有代表性、最可能发现错误的执行通路进行测试就是十分关键的。应该设计测试方案用来发现由于错误的计算、不正确的比较或不适当的控制流而造成的错误。

    4. 出错处理通路

    5. 边界条件

    6.2.2代码审查

    由审查小组,人工测试源程序称为代码审查。

    6.3 集成测试

    集成测试 是测试和组装软件的系统化 技术,其主要目标是发现与接口有关的问题。

    集成测试有两种方法

    1、非渐增式测试方法,即:先分别测试每个模块, 再把所有模块按设计要求放在一起结合成所要的程序 进行测试。

    2、渐增式测试,即:先把下一个要测试的模块同已 经测试好的那些模块结合起来进行测试,测试完以后 再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法实际上同时完成单元测试和集成测试,目前在进行集成测试时普遍采用渐增式测试方法。

    渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略。但在实践中常采用混合的策略。

    回归测试

    • 任何成功的测试都会发现错误,而且错误必须被改正。每当 改正软件错误的时候,软件配置的某些成分(程序、文档或 数据)也被修改了。回归测试就是用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动。

    • 即:回归测试是指重新执行已经做过的测试的某个子集,以 保证修改变化没有带来非预期的副作用。

    • 回归测试集(已执行过的测试用例的子集)包括下述3类不同的测试用例:

    (1) 检测软件全部功能的代表性测试用例;

    (2) 专门针对可能受修改影响的软件功能的附加测试;

    (3) 针对被修改过的软件成分的测试。

    6.4确认测试

    6.4.1 确认测试的范围

    • 确认测试必须有用户积极参与,或者以用户为主进行。

    • 确认测试通常使用黑盒测试法。

    • 通过测试和调试要保证软件能满足所有功能要求,能 达到每个性能要求,文档资料是准确而完整的,此外, 还应该保证软件能满足其他预定的要求。

    6.4.2 软件配置复查

    软件配置:软件需求规格说明、软件设计规格说明、源代码等

    复查的目的是保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编好目录。

    除了按合同规定的内容和要求,由人工审查软件配置 之外,在确认测试过程中还应该严格遵循用户指南及 其他操作程序,以便检验这些使用手册的完整性和正 确性。必须仔细记录发现的遗漏或错误,并且适当地 补充和改正。

    6.4.3 Alpha和Beta测试

    • Alpha测试由用户在开发者的场所进行,并且在开发 者对用户的“指导”下进行测试。开发者负责记录发 现的错误和使用中遇到的问题。该测试是在受控的环 境中进行的。

    • Beta测试由软件的最终用户们在一个或多个客户场所 进行。Beta测试是软件在开发者不能控制的环境中的 “真实”应用。用户记录在Beta测试过程中遇到的一 切问题(真实的或想像的),并且定期把这些问题报 告给开发者。接收到在Beta测试期间报告的问题之后, 开发者对软件产品进行必要的修改,并准备向全体客 户发布最终的软件产品。

    6.5白盒测试技术

    6.5.1 逻辑覆盖

    逻辑覆盖 ---- 是以程序内部的逻辑结构为基 础的设计测试用例的技术。

    (1) 语句覆盖

    (2)判定覆盖

    (3)条件覆盖

    (4)判定/条件覆盖

    (5)条件组合覆盖

    (6)点覆盖:如果连通图G 的子图G′是连通的,而且包含G的所有结点, 则称G′是G的点覆盖。

    (7)边覆盖:如果连通图G的子图 G′′是连通的,而且包含G的所有边,则称G′′是 G的边覆盖。

    (8)路径覆盖:选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中

    有环,则要求每个环至少经过一次)。

    6.5.2 控制结构测试

    1. 基本路径测试
    2. 条件测试
    3. 循环测试

    6.6黑盒测试技术

    • 黑盒测试着重测试软件功能。黑盒测试并不能取代 白盒测试,它是与白盒测试互补的测试方法,它很 可能发现白盒测试不易发现的其他类型的错误。

    • 黑盒测试力图发现下述类型的错误: 1功能不正确或遗漏了功能; 2界面错误; 3数据结构错误或外 部数据库访问错误; 4性能错误; 5初始化和终止 错误。

    • 黑盒测试技术:等价划分法、边界值分析法、错误推测法、因果图法等。

    6.6.1 等价类划分法(等价分配)

    把所有可能的输入数据(有效的和无效 的)划分成若干个等价的子集(称为等价类别或等价区间), 使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同.

    划分等价类的规则

    (1)如果输入条件规定了取值范围,可定义一个有 效等价类和两个无效等价类。

    (2)如果输入条件代表集合的某个元素,则可定义 一个有效等价类和一个无效等价类。

    (3)如规定了输入数据的一组值,且程序对不同输 入值做不同处理,则每个允许的输入值是一个 有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。

    (4)如果规定了输入数据必须遵循的规则,可确定 一个有效等价类(符合规则)和若干个无效等 价类(从不同角度违反规则)。

    (5)如已划分的等价类各元素在程序中的处理方式 不同,则应将此等价类进一步划分成更小的等 价类。

    用等价类划分法设计测试用例步骤

    (1)形成等价类表,每一等价类规定一个唯一的编号;

    (2)设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一 步骤,直到所有有效等价类均被测试 用例所覆盖;

    (3)设计一新测试用例,使其只覆盖一个 无效等价类,重复这一步骤直到所有 无效等价类均被覆盖;

    展开全文
  • 含有.mdl文件 实验一:熟悉UML和Rose开发环境日志 实验二:图书馆系统的需求分析日志 实验三:细化(1)日志 实验四:细化(2)日志 1. 实现一个简单的图书管系统的需求分析。 2. 画出图书管理系统对应的用例图和...
  • 每个学期的期中,学校教务处会分类向各个学院发出下各学期的教学计划,包括课程名称、课程代码、课时、班级类别(本科、专科、成人教育、研究生)、班号等;学院教学主管人员根据教学任务要求给出各门课程的相关限制...
  • 软件工程导论教学大纲,用于本科生教学。含理论课、实验课大纲及课程考核设计,全面、实用。
  • 安徽 课程设计报告 课 程 软件工程导论 题 目 班 级 专 业 计算机科学与技术 姓 名 学 号 指 导 教 师 日 期 2014.05.05 摘 要 随着信息技术在管理上越来越深入而广泛的应用管理信息系统的实 施在技术上已逐步成熟...
  • 对于子系统概念十分的模糊,百度百科中所描述的说子系统是一种模型元素,它具有包(其中可包含其他模型元素)和类(其具有行为)的语义。子系统的行为由它所包含的类或其他子系统提供。子系统实现一个或多个接口,...

    对于子系统概念十分的模糊,百度百科中所描述的说子系统是一种模型元素,它具有包(其中可包含其他模型元素)和类(其具有行为)的语义。子系统的行为由它所包含的类或其他子系统提供。子系统实现一个或多个接口,这些接口定义子系统可以执行的行为。

    根据子系统的确立规则:如果某个协作中的各个类只是在相互之间进行交互,并且可生成一组定义明确的结果,就应将该协作和它的类封装在一个子系统中。

    然后我将该系统大致分为了6个子系统即6个包,分别是

    1、Page:用于存放JSPHTMLCSSJavaScript等页面相关资源。

    2Action : 页面调用的方法,该包中存放着页面访问的路径。

    3ServiceI : 业务逻辑对象的接口,用于向Action方法中的数据提供数据。

    4DaoI : 数据库接入层,这个是一个接口,主要给Service包中的类提供。

    5Model : 直接关联数据库,为Dao连接数据库提供方法,调用该类可获取对应数库中的表中数据

    6Util : 公用类方法,主要用于提供其它类中的使用方法,例如MD5加密方法。

    转载于:https://www.cnblogs.com/lyx15606900513/p/9187452.html

    展开全文
  • 对于活动图和状态图会经常混淆,因为两个图都可以用来实现可视化。于是上网对这两个图的概念进行了搜索。首先,状态图是用来表示对象的状态变化的,它描述了一个特定对象的所有可能状态以及由于各种时间的发生引起的...
  • 课程设计报告 科目软件工程概论 设计题目学生学籍管理系统 专业 软件工程 09-1 班 姓名 XXXXX XXXXX 学生学籍管理 一 需求分析 开发环境和软件 1操作系统 Windows xp 2 数据库软件 SQL Server 2000 3 Java 开发工具 ...
  • 带带对方的萨芬的所发生的发生的发生的 地方撒丰大厦
  • 软件工程课程设计(完整版)酒店管理系统 欢迎来下
  • 软件工程课程设计学生选课系统《软件工程课程设计学生选课系统《软件工程课程设计学生选课系统
  • 一. 信息结构 以图的形式展示项目的信息结构。 二. 主要用户界面展示 主页展示 公开原型图链接:https://org.modao.cc/app/efc36460dbfea3ea2273452ba6213030 详情页展示 公开原型图链接:...三....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,530
精华内容 2,212
关键字:

软件工程导论课程设计

友情链接: Finite-Element-Method-.rar