
软件的概念.docx
3页软件的概念:软件=程序+文档软件是能够完成预定功能的可执 行计算机程序包括使程序正常执行所需要的以及有关描述程 序操作和使用的文档特点: 软件是一种逻辑实体,而不是具体的物理实体因此, 它具有抽象性软件的生产与硬件不同,没有明显的制造过程对软件的质量 控制,必须立足于软件开发方面在软件的运行和使用期间,没有像硬件那样的磨损、老化问题 软件的开发和运行往往受到计算机系统的限制,对计算机系统 有不同程度的依赖性迄今为止,软件的开发尚未完全摆脱手工艺的方式 软件本身是复杂的软件的成本相当昂贵 相当多的软件工作涉及到社会因素 分类: 按软件的功能划分:系统软件、支撑软件、应用软件 按软件的规模划分:微型、小型、中型、大型、超大型 按软件的工作方式划分:实时、分时、交互、批处理 按软件服务对象的范围划分:项目软件、产品软件(2)软件的发展和软件危机(一般) 计算机软件发展的各个时期1. 第一代(60 年代中期之前)程序设计阶段 硬件通用,软件专用;程序规模小,编写者和使用者为同一人 (同组人)2. 第二代(60 年代中期-70 年代中期)程序系统阶段 出现“软件作坊、” 产品软件;“个体化”开发方法。
3. 第三代(70 年代中期之后)软件工程阶段 软件开发成为一门新兴的工程学科——软件工程4. 第四代(90 年代后)现代软件工程阶段 软件危机:是指在计算机软件的开发和维护过程中所遇到的一 系列严重问题主要是两个问题1. 如何开发软件,怎样满足对软件的日益增长的需求2. 如何维护数量不断膨胀的已有软件软件危机的主要表现:1. 对软件开发成本和进度的估计不准确2. 用户不满意3. 软件质量不高、可靠性差4. 软件常常不可维护、错误难以改正5. 缺乏适当的文档资料6. 软件成本占系统总成本的比例逐年上升7. 软件开发速度跟不上计算机发展速度(3)软件工程过程 (重点)软件工程的基本原理: 1. 用分阶段的生命周期计划严格管理2. 坚持进行阶段评审3. 实行严格的产品控制 4. 采用现代程序设 计技术 5. 结果应能清楚地审查6. 开发小组的人员应该少而精 7. 承认不断改进软件工程实践的必要性软件工程方法学3 要素: 方法、工具和过程第二部分 软件过程 2(1)软件生命周期的基本任务(重点) 软件生命周期的各个阶段:(定义、开发、使用及维护)(1)问题定义(2)可行性分析(3)需求分析: 分析软件 需求,编写软件需求规格说明(4)概要设计和详细设计: 确 定软件体系结构,设计软件模块(5)程序编写(6)软件测 试(7)运行和维护(2)Rational 统一过程(次重点)识记:RUP (统一软件开发过程)的6条软件开发经验(①迭 代式开发②管理需求③体系结构④可视化建模⑤验证软件质 量⑥控制软件变更)理解: RUP 软件开发生命周期(初始阶段、细化阶段、构造阶 段、迁移阶段)第三部分 结构化分析(一)考核知识点及考核目标(1)软件需求分析概述(重点) 需求分析:是指开发人员要准确地理解用户的要求,进行细致的 调查分析,将用户非形式化的需求陈述转化为完整的需求定义, 再由需求定义转化为相应的软件需求规格说明书(即需求分析 的结果)的过程 需求分析的任务:是确定系统必须完成哪些工作,也就是对目标 系统提出完整、准确、清晰、具体的要求过程:可行性分从收集资料到形成软件需求分析文档,—般来说 要经过四个过程:获取用户需求,分析用户需求,编写需求文 档,评审需求文档可行性分析的内容?经济可行性 技术可行性 运行可行性 法律可行性需求分析的主要原则?一. 确定对系统的综合要求1. 功能需求2. 性能需求3. 可靠性和可用性需求4. 出错 处理需求5. 接口需求6. 约束7. 逆向需求8. 将来可能提 出的要求二 . 分析系统的数据要求三. 导出系统的逻辑模型四 . 修正系统开发计划(2)结构化分析方法(重点) 结构化分析方法的含义:结构化分析方法就是用抽象模型的概 念,按照软件内部数据传递、变换的关系,自顶向卜逐层分解, 直到找到满足功能要求的所有可实现的软件为止第四部分 结构化设计(1)软件设计的目标和任务(重点) 软件设计的重要性:软件设计是后续开发步骤及软件维护工作 的基础。
如果没有设计,只能建立一个不稳定的系统结构 软件设计的任务:将需求分析的结果(分析模型与需求分析规 约)转化为实际软件系统的一个模型或软件表达式,即用于构 造软件的“蓝图”2) 程序结构与程序结构图(重点)(3) 模块的独立性(重点) 所谓模块,是指具有相对独立性的,由数据说明、执行语句等 程序对象构成的集合程序中的每个模块都需要单独命名,通 过名字可实现对指定模块的访问在高级语言中,模块具体表 现为函数、子程序、过程等一个模块具有输入/输出(接口)、 功能、内部数据和程序代码四个特征模块的独立性:模块独立性, 是指软件系统中每个模块只涉及 软件要求的具体的子功能, 而和软件系统中其它的模块的联系 最小且接口是简单的.一般采用两个准则度量模块独立性即模块间耦合和模块内聚 耦合是模块之间的互相连接的紧密程度的度量内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密 程度)的度量模块独立性比较强的模块应是高内聚低耦合的模块 模块化:模块化是指将整个程序划分为若干个模块,每个模 块用于实现一个特定的功能划分模块对于解决大型复杂的 问题是非常必要的,可以大大降低解决问题的难度模块化可以降低解决问题的复杂度,从而降低软件开发的工作 量。
模块化不但可以降低软件开发的难度,而且可以使程序结 构清晰,增加易读性和易修改性此外,模块化还有利于提高 代码的可重用性及团队合作开发大型软件的可行性抽象是人类在解决复杂问题过程中使用的思维工具,即抽出事 物本质的共同的特性而暂不考虑它的细节.软件系统进行模块设计时,可有不同的抽象层次 在最高的抽象层次上,可以使用问题所处环境的语言概括地描 述问题的解法在较低的抽象层次上,则采用过程化的方法 结构化程序中自顶向卜、逐步求精的模块划分思想正是人类思 维中运用抽象方法解决复杂问题的体现此外,在程序设计中 运用抽象的方法还能够提高代码的可重用性4) 结构化设计方法(次重点)75)结构化数据系统开发方法(一般)1. 系统规则用结构化系统开发方法开发一个系统,将整个开发 过程划分为首尾相连的五个阶段,即一个生命周期(Life Cycle )根据用户的系统开发请求,进行初步调查,明确 问题,确定系统目标和总体结构确定分阶段实施 进度,然后进行可行性研究;2. 系统分析:分析业务流程、分析数据与数据流程、分析功能 与数据之间的关系,最后提出分析处理方式和新 系统逻辑方案;3. 系统设计:进行总体结构设计、代码设计、数据库(文件) 设计、输入/输出设计、模块结构与功能设计,根 据总体设计,配置与安装部分设备,进行试验, 最终给出设计方案;4. 系统实施:同时进行编程(由程序员执行)和人员培训(由 系统分析设计人员培训业务人员和操作员),以 及数据准备(由业务人员完成),然后投入试运 行;5. 系统运行与维护:进行系统的日常运行管理、评价、监理审计,修 改、维护、局部调整,在出现不可调和的大问题 时,进一步提出开发新系统的请求,老系统生命 周期结束,新系统诞生,构成系统的一个生命周 期。
在每一阶段中,又包含若干步骤,步骤可以不分先 后,但仍有因果关系,总体上不能打乱第五部分 结构化实现(1)软件测试的基础(重点)软件测试是动态查找程序代码中的各类错误和问题的过程, 软件测试是保证软件可靠性的主要手段测试阶段的主要任 务是发现并改正软件中的错误 白盒测试和黑盒测试是软件测试的两类基本方法软件测试通常至少分为单元测试、集成测试和系统测试三个基 本阶段软件维护的目的是要保证软件的正常运行,尽可能延长软件生 命周期软件测试的对象: 软件测试并不等于程序测试软件测试应贯穿于软件定义与开 发的整个期间需求分析、概要设计、详细设计以及程序编码等各阶段所得到 的文档,包括需求规格说明、概要设计规格说明、详细设计规 格说明以及源程序,都应成为软件测试的对象2)测试用例设计(重点)黑盒法该方法把被测试对象看成一个黑盒子,测试人员完全不考 虑程序的内部结构和处理过程,只在软件的接口处进行测 试,依据需求规格说明书,检查程序是否满足功能要求因 此,黑盒测试又称为功能测试或数据驱动测试 黑盒测试是功能测试,根据程序的功能来测试设计用例白盒法该方法把被测试对象看成一个白盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础, 对程序中尽可能多的逻辑路径进行测试,检验内部控制结构 和数据结构是否有错,实际的运行状态与预期的状态是否一 致。
白盒法根据被测程序的内部结构设计测试用例3)白盒测试用例设计(重点)1 逻辑覆盖:是以程序内部逻辑为基础的测试技术,2 语句覆盖的含义是选择足够多的测试用例,使得被测程序中 的每条语句至少执行一次3 判定覆盖就是设计若干个测试用例,运行所测程序,使得程 序中每个判断的取真分支和取假分支至少经历一次判定覆盖 又称为分支覆盖判定覆盖的每个语句至少经历一次4 条件覆盖就是设计若干个测试用例,运行所测程序,使得程 序中每个判断的每个条件的可能取值至少执行一次条件覆盖 使得每个语句至少执行一次 )5判定/条件覆盖就是设计足够的测试用例,使得判断中每个 条件的所有可能取值至少执行一次,同时每个判断的所有可 能判断结果至少执行一次即要求各个判断的所有可能的条 件取值组合至少执行一次6条件组合覆盖就是设计足够的测试用例,运行所测程序,使 得每个判断的所有可能的条件取值组合至少执行一次(4) 黑盒测试用例的设计(重点)等价类的划分:输入数据的可能值划分为若干个等价类,使每 类中的任何一个测试用例,都能够代表同一等价类中的其他测 试用例,把漫无边界的随即测试变成有针对性的等价类测试需要考虑有效等价类和无效等价类) 边界值分析的方法过程 :使被测程序能在边界值及其附近运 行,从而更有效得暴露从程序中隐藏的问题;(5) 软件测试的策略(重点)测试步骤:单元测试(测试模块功能)编译―静态分析器检查一代码评审- 动态测试(白盒黑盒)组装测试(测试软件设计信息)自顶向卜测试:先广后深、先 深后广;自底向上测试;两种测试混合。
确认测试(测试软件需求信息)测试组装完毕的程序是否满足SRS系统测试(测试与系统其它部分的兼容性等)对硬件或其他软 件是否实现 SRS 要求第六部分 维护(一)考核知识点(1) 软件维护的定义(重点)1. 纠错性维护:纠正在开发期间未能发现的问题2. 适应性维护: 适应性维护就是为了和变化了的环境适当地 配合而进行的修改软件的活动3: 完善性维护:不断改善和加 强,以满足用户的新需求等,4. 预防性维护:“把今天的方法学应用于昨天的系统以满足明天的需要 改善软件的可维护性(2) 软件维护的特点(一般)1 结构化维护与非结构化维护差别悬殊2 维护的代价高昂3 维护的困难性(3) 软件维护过程(一般)首先必须建立一个维护组织,随后必须确定报告和评价的 过程,而且必须为每个维护要求规定一个标准化的事件序 列此外,还应该建立一个适用于维护活动的记录保管过程, 并且规定复审标准第七部分 面向对象的概念与模型(一)考核知识点(1)面向对象的概念(重点)1. 面向。
