软件工程——编码、测试、维护

一、编码

(一)选择语言

任何一种语言都不是“十全十美”的,因此,在选择程序设计语言时,首先明确求解的问题对编码有什么要求,并把它们按轻重次序一一列出。然后根据这些要求去衡量可使用的语言,以判断出哪些语言能较好地满足要求。

一般情况下,程序设计语言的选择常从以下几个方面考虑。

  1. 项目的应用领域
  2. 算法与计算的复杂性
  3. 数据结构的复杂性
  4. 效率
  5. 可移植性
  6. 程序设计人员的水平
  7. 构造系统的模式

(二)编码风格

软件=程序+文档。为了高程序的可维护性,源代码也需要实现“文档化”。内部文档的组织包括标识符命名、内部注释和程序的视觉组织。

    1. 标识符应该具有鲜明的意义,能够提示程序对象代表的实体

    2. 程序代码的视觉组织

    3. 程序内部的注释

语句结构规则

  1. 在一行内只写一条语句,并且采用适当的缩进格式,使程序的逻辑和功能变得更加明确;
  2. 程序编写要简单、清楚,能直截了当地说明程序员的用意;
  3. 首先保证程序正确,然后才要求提高速度;
  4. 尽可能使用库函数 尽量用公共过程或子程序去代替重复的功能代码段;
  5. 避免使用临时变量而使可读性下降;
  6. 避免采用过于复杂的条件测试; ;
  7. 避免过多使用循环嵌套和条件嵌套;
  8. 不要使 GOTO 语句相互交叉;
  9. 对递归定义的数据结构尽量使用递归过程

高效率原则

  1. 提高程序运行效率
  2. 提高存储器效率
  3. 提高输入/输出效率

二、测试

(一)测试步骤

单元测试的内容:模块接口测试、局部数据结构测试、重要路径测试、错误处理测试、边界测试

集成测试的方式:自顶向下集成、自底向上集成、混合的集成测试

验收测试的内容:有效性测试、软件配置复查

系统测试

(1) 恢复测试:通过系统的修复能力,检测重新初始化、数据恢复、重新启动、检验 点设置是否正确,以及人工干预的平均恢复时间是否在允许范围内。

(2) 安全测试:设计测试用例,安全保密措施,检验系统是否有安全保密的漏洞。

(3) 强度测试:设计测试用例,检验系统的能力最高能达到什么实际限度,让系统处 于资源的异常数量、异常频率、异常批量的条件下运行测试系统的承受能力。

(4) 性能测试:设计测试用例测试并记录软件运行性能,与性能要求相比较,检查是 否达到性能要求规格。

(二)调试技术

强行排错、回溯法、归纳法、演绎法

三、维护

种类

  1. 校正性维护
  2. 适应性维护
  3. 完善性维护
  4. 预防性维护

维护的工作流程

提高可维护性的方法

1.建立明确的软件质量目标和优先级

2. 使用提高软件质量的技术和工具

3. 进行明确的质量保证审查

4. 验收检查

5. 周期性地维护审查

6. 选择可维护的程序设计语言

7. 健全程序的文档

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
专题七:软件工程专题 1、软件工程知识 1.1概述 软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率、提高软件质量、减低软件成本。 软件工程是1968年在德国的NATO会议上提出的,希望用工程化的原则和方法来克服软件危机;而软件危机就是软件开发和维护过程中的各种问题,由于软件开发阶段缺乏好的方法的指导和好的工具的辅助,而且缺少有关的文档,使得大量的软件难以维护软件生命周期是指由软件定义、软件开发和软件维护等阶段组成的全过程,反映软件生存期内各种工作得组织以及各个阶段如何衔接。下表归纳了软件生存周期各个阶段的任务、参与人员和产生文档。 常见的软件开发模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。 阶段 任务 参与人员 产生文档 软件定义阶段——待开发软件要“做什么” 系统分析 确定待开发软件的总体要求和适用范围,以及与之有关的硬件、支撑软件的要求 用户、项目负责人、系统分析员 可合并项目计划书中 软件项目计划 确定待开发软件的目标,对其进行可行性分析,并对资源分配、进度安排等做出合理的计划 用户、项目负责人、系统分析员 可行性分析报告、项目计划书 需求分析 确定待开发软件的功能、性能、界面等要求,从而确定系统的逻辑模型 用户、项目负责人、系统分析员 需求规格说明书 软件开发阶段——待开发软件“怎么做” 软件设计 概要设计 模块分解,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构的设计 系统分析员、高级程序员 设计说明书、数据说明书、模块开发卷宗 详细设计 设计每个模块的实现细节和局部数据结构的设计 高级程序员、程序员 编码 用某种程序语言为每个模块编写程序 高级程序员、程序员 程序清单 软件测试 发现软件中的错误,并加以纠正 高级程序员或系统分析员(另一部门或单位) 软件测试计划、软件测试用例说明,软件测试报告 软件维护阶段—开发后交付使用的软件维护 软件维护 使软件适应外界环境的变化、实现功能的扩充和质量的改善而修改软件 维护人员 维护计划、维护报告   软件由计算机程序、数据及文档组成,同时与硬件、数据库人、过程等共同构成计算机系统。软件工程包括三个要素:方法、工具和过程。
专题七:软件工程专题 1、软件工程知识 1.1概述 软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率、提高软件质量、减低软件成本。 软件工程是1968年在德国的NATO会议上提出的,希望用工程化的原则和方法来克服软件危机;而软件危机就是软件开发和维护过程中的各种问题,由于软件开发阶段缺乏好的方法的指导和好的工具的辅助,而且缺少有关的文档,使得大量的软件难以维护软件生命周期是指由软件定义、软件开发和软件维护等阶段组成的全过程,反映软件生存期内各种工作得组织以及各个阶段如何衔接。下表归纳了软件生存周期各个阶段的任务、参与人员和产生文档。 常见的软件开发模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。 阶段 任务 参与人员 产生文档 软件定义阶段——待开发软件要“做什么” 系统分析 确定待开发软件的总体要求和适用范围,以及与之有关的硬件、支撑软件的要求 用户、项目负责人、系统分析员 可合并项目计划书中 软件项目计划 确定待开发软件的目标,对其进行可行性分析,并对资源分配、进度安排等做出合理的计划 用户、项目负责人、系统分析员 可行性分析报告、项目计划书 需求分析 确定待开发软件的功能、性能、界面等要求,从而确定系统的逻辑模型 用户、项目负责人、系统分析员 需求规格说明书 软件开发阶段——待开发软件“怎么做” 软件设计 概要设计 模块分解,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构的设计 系统分析员、高级程序员 设计说明书、数据说明书、模块开发卷宗 详细设计 设计每个模块的实现细节和局部数据结构的设计 高级程序员、程序员 编码 用某种程序语言为每个模块编写程序 高级程序员、程序员 程序清单 软件测试 发现软件中的错误,并加以纠正 高级程序员或系统分析员(另一部门或单位) 软件测试计划、软件测试用例说明,软件测试报告 软件维护阶段—开发后交付使用的软件维护 软件维护 使软件适应外界环境的变化、实现功能的扩充和质量的改善而修改软件 维护人员 维护计划、维护报告   软件由计算机程序、数据及文档组成,同时与硬件、数据库人、过程等共同构成计算机系统。软件工程包括三个要素:方法、工具和过程。   主要的软件开发方法有以下几种方法:   生命周期法:命周期法认为:每一个软件系统都有一定的生命周期。软件的生命周期是指一个软件系统从其提出、调查到分析、设计和有效使用,直至被淘汰或取代的整个期间。软件生命周期法就是按软件生命周期的各个阶段划分任务,按一定的规则和步骤,有效地进行软件开发的方法。   通常一个软件系统的生命周期可分为五个阶段:准备阶段、分析阶段、设计阶段、实施阶段、运行与维护阶段   原型法:原型法是先根据用户的最主要要求,开发出能实现系统最基本功能的一个原型,再根据用户对原型使用与评价的意见,反复修改完善原型,直到等到用户满意的最终系统为止。   原型法分4个阶段:确定用户需求;设计原型;使用、评价原型;修改、完善原型。 1.2软件分析 软件开发模型:瀑布模型;演化模型(原型法);螺旋模型;喷泉模型(迭代和无间隙);软件成本模型;可行性分析的任务是从技术上、经济上、使用上、法律上分析需解决的问题是否存在可行的解。 需求分析是软件生存周期中相当重要的一个阶段。需求分析主要是确定待开发软件的功能、性能、数据、界面等要求。具体有以下几点:  确定软件系统的综合要求  分析软件系统的数据要求  导出系统的逻辑模型  修正项目开发计划  如有必要,可开发一个原型系统 需求分析的基本原则是能够表达和理解问题的信息域和功能域;以层次化的方式进行分解和不断细化;要给出系统的逻辑视图和物理视图; 描述软件需求的方法: 功能层次模型:一般来讲就是系统的功能图,模块分布图等描述整个系统的功能的分布和功能的层次结构; 数据流模型:就是以数据流为着眼点的分析方法得到的模型,主要通过数据在整个系统的流动情况来确定系统的主要功能主线和流程; 控制流模型:通过了解和界定系统中控制线,通过控制流的走向和控制的对象来确定系统的功能分布和控制与被控制的关系; 结构化分析(SA)方法是一种面向数据流的需求分析方法,它适用于分析大型数据处理系统。结构化分析方法的基本思想是自顶向下逐层分解,这样做可以把一个大问题分解成若干个小问题,经过多次逐层分解,每个最底层的问题都是足够简单、容易解决的,这个过程就是分解的过程。 结构化方法的分析结果由数据流图DFD、数据词典和加工逻辑说明几个部分组成。其中,DFD的基本成分有数据流(data flow)、加工(process)、文件(file)和源/宿(source/sink)。  画数据流图的基本步骤:自外向内、自顶向下、逐层细化、完善求精;  数据流图的父图与子图要平衡, 即输入和输出的数据流一致;  数据流图中的每个加工至少有一个输入数据流和一个输出数据流;  局部的数据存储不画出来,只有当局部数据存储作为某些数据加工之间的数据接口才画出,这有利于信息隐蔽;  画数据流的时候不画控制流,两者的区别就是控制流中没有数据;  一个加工的数据流与输出流不应该同名;  允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出流向两个不同的加工;  保持数据守恒:一个加工的所有输出数据必须

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小张自由—>张有博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值