软件工程的重点知识及回顾

  1. 什么是软件工程,软件开发的过程是什么样的?软件的生命周期如何?它目标和内容是什么?
    首先:软件工程是用科学知识和技术原理来定义、开发、维护软件的一门学科。
    其次:软件开发的过程包括问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、维护等。
    最后:软件生命周期由软件定义、软件开发、和运行维护三个时期组成:
    软件定义:问题定义、可行性研究、 需求分析;
    软件开发:概要设计、详细设计、编码、测试;
    运行维护:软件维护。
    软件工程目标:付出较低开发成本,达到要求的功能,取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
    软件工程内容:包括开发技术和开发管理两个方面。
  2. 从软件工程的角度谈谈继承的好处?
    首先:在软件工程中继承体现在软件重用,即两次或多次不同的软件开发过程中使用相同或相似的软件元素的过程。
    其次:软件重用好在① 提高软件的生成率;②减少开发人员的数量;③缩短开发周期,降低软件开发和维护的费用。
  3. 分析软件危机产生的原因有哪些?
    ① 软件本身的特性(缺乏可见性、无制造过程、规模庞大)。
    ② 对软件开发错误的认识和做法。
    ③ 开发与维护的方法不正确。
  4. 说明结构化程序的主要思想是什么?
    首先是自顶向下,逐步求精的程序设计方法;
    其次使用了3种基本控制结构、单入口、单出口来构造程序。
  5. 软件测试包括哪些步骤?这些步骤的测试对象是什么?
    ① 单元测试:测试对象为单元模块。
    ②集成测试:测试对象是组装后的程序模块。
    ③确认测试:测试对象是可运行的目标软件系统。
  6. 需求分析与软件设计的二个阶段任务的主要区别是啥?
    需求分析是定义软件的用户需求,即定义待开发软件能做什么。
    而软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件。
  7. 文档在软件工程中的作用?
    首先可以提高软件开发过程中的能见度,便于用户了解软件功能和性能。
    其次可以作为开发人员阶段工作的成果和结束标志。
    最后可以记录开发过程的有关信息,便于使用与维护。
  8. 什么是软件质量?
    首先是指与所确定的功能与性能需求一致。
    其次是指与所成文的标准一致。
    最后是指与所有专业的开发软件所期望的隐含特征一致。
  9. 软件测试的方法有哪些?
    首先从测试过程可以分为动态测试和静态测试。
    其次从测试技术上可以分为白盒测试和黑盒测试。
    最后从测试阶段可以分为单元测试,集成测试,验收测试。
  10. 动态测试与静态测试的区别?
    静态测试:不运行被测程序本身,而是通过分析和检查源程序的语法、结构、过程、接口等来判断程序的正确性。
    动态测试:通过运行软件来检验软件的动态行为和运行结果的正确性。
  11. 白盒测试和黑盒测试的区别?
    黑盒测试和白盒测试有什么区别?
    (1)黑盒测试法: 把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。 只检查程序功能是否能按照规格说明书的规定正常使用,程序在运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试,包含等价类划分法、边界值法、错误推测法、因果图法等。
    (2)白盒测试法: 是把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试,包含逻辑覆盖法和基本路径测试法。
  12. 软件危机的含义
    软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。即:效率下降和质量下降的问题。
  13. 软件危机的具体表现
    ① 软件成本高,开发进度估计不准。
    ② 用户对“ 已完成的”软件系统不满意的现象常常发生。
    ③ 软件产品质量差,可靠性不能保证。
    ④ 软件产品可维护性差。
    ⑤ 软件没有合适的文档资料。
    ⑥ 软件成本逐年上升。
    ⑦ 软件开发生产率滞后于硬件和计算机应用普及。
  14. 消除软件危机的途径
    ① 使用好的软件开发技术和方法。
    ② 使用好的软件开发工具。
    ③ 良好的组织,严密的管理,各类人员互相配合。
  15. 模型软件开发阶段步骤
    ① 需求分析 :分析需求。
    ② 概要设计 :主要是架构实现,架构搭建、表述各模块功能。
    ③ 详细设计 :对概要设计中表述的各模块进行深入分析,要求达到伪代码级别,包含数据库设计说明。
    ④ 软件编码 :按照详细设计好的模块功能表,编程人员编写出实际的代码。
    ⑤ 单元测试 :按照设定好的最小测试单元进行按单元测试,主要是测试程序代码。
    ⑥ 集成测试 :经过了单元测试后,将各单元组合成完整的体系,主要测试各模块间组合后的功能。
    ⑦ 系统测试 :经过了单元测试和集成测试以后,把软件系统搭建起来,按照软件规格说明书中所要求,测试软件其性能功能等是否和用户需求相符合,在系统中运行是否存在漏洞。
    ⑧ 验收测试 :用户在拿到软件的时候,会根据前提需求以及规格说明书来做相应测试,以确定软件是否达到预期效果。
  16. 数据字典的用途
    ① 数据字典:数据字典是对数据的数据项、数据结构、数据流、数据存储等进行定义和描述。目的是对数据流程图中的各个元素做出详细的说明。
    ② 用途:作为分析阶段的工具, 作为数据库开发的基础。
  17. 软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发?
    软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一 软件过程等,其中喷泉模型、统一软件过程模型适用于面向对象的软件开发。
  18. 软件维护有哪些内容?
    ① 校正性维护。在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。
    ② 适应性维护。为了使应用软件适应计算机硬件、软件环境及数据环境不断发生的变化而修改软件的过程称为适应性维护。
    ③ 完善性维护。为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。
    ④ 预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。
  19. 什么是需求分析?需求分析阶段的基本任务是什么?
    ① 需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
    ② 基本任务:⑴问题识别。⑵分析并导出软件的逻辑模型 。⑶编写文档。
  20. 软件设计的基本原理包括哪些内容?
    ⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。
    ⑵抽象:认识复杂现象过程所使用的工具,只考虑事物本质的共同特性,忽略细节和其它因素。通过抽象确定组成软件的过程实体。
    ⑶信息隐蔽:将模块实现自身功能的细节与数据”隐蔽”起来。模块间仅交换为完成系统功能所必须的信息。
    ⑷模块独立性:每个模块只完成系统要求的独立的子功能。
  21. 如何理解高内聚低耦合?
    ① 内聚它是指内部间聚集,关联的程度。高内聚则是要高度的聚集,最好就是做到功能内聚,模块内的各组成部分都是为了完成同一个功能而存在。高内聚意味着可靠性高,可重用性高,可读性高。
    ② 耦合是指模块间的关联程度,我们设计要尽量降低各个模块间的耦合程度,因为一 旦各模块耦合程度高,那么对程序的维护就会非常困难,牵一发动全身。
  22. 流程图与数据流图有什么主要区别?
    一、指代不同
    1、数据流图:是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
    2、数据流程图:是一种能全面地描述系统数据流程的主要工具。
    二、表达方式不同
    1、数据流图:从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。
    2、数据流程图:用一组符号来描述整个系统中信息的全貌,综合地反映出信息在系统中的流动、处理和存储情况。
    三、特征不同
    1、数据流图:只反映系统必须完成的逻辑功能,所以它是一种功能模型。在结构化开发方法中,数据流图是需求分析阶段产生的结果。
    2、数据流程图:抽象性和概括性。抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况。概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体。
    在这里插入图片描述
    在这里插入图片描述
  23. 简述结构化分析、设计的要点?
    结构化分析方法适合于数据处理类型软件的需求分析。
    其要点是"自顶向下" 地开发系统,由整体到各组成部分,由表及里,由抽象到具体,逐步求精。
    (1)模块化
    (2)由顶向下,逐步求精.
    (3)上层模块分解为下层模块,有三种不同的结构形式,即顺序结构,选择结构和循环结构。
  24. 面向对象和面向过程的软件工程有什么区别?
    面向过程编程就是把要解决问题的分解成多个步骤,然后把问题逐步解决。 面向对象编程就是要把解决的问题分解成多个对象,目的是为了描述各个对象在整个解决问题步骤中的行为。
    面向过程编程性能好,但开销大,耗资源;面向对象性能差点,但易扩展,易复用,易维护,具有封装、继承、多态的特性。
  25. 软件工程的三要素
    方法、工具、过程
    方法是完成软件开发的各项任务的技术方法;
    工具是为运用方法提供的自动的或者半自动的软件工程的支撑环境;
    过程是为了获得高质量的软件所需要完成的一系列的任务的框架。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值