一、名词解释
软件: 指计算机系统中的程序及其文档。
支持软件:支持软件的开发和维护的软件。
系统软件:属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作用,它与具体的应用领域无关。
软件工程:是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。
软件过程模型:是软件开发全部过程、活动和任务的结构框架,也称软件开发模型或软件生存周期模型。
技术可行性:主要根据系统的功能、性能、约束条件等,分析在现有资源和技术条件下系统能否实现。
需求管理:是一组用于帮助项目组在项目进展中的任何时候去标识、控制和跟踪需求的活动。信息流:表示了数据和控制在系统中流动时的变化方式,输入对象被变换为中间信息(数据和/或控制),然后进一步被变换为输出。
软件项目管理:是指软件生存周期中软件管理者所进行的一系列活动,其目的是在一定的时间和预设范围内,有效地利用人力、资源、技术和工具,使软件系统或软件产品按原定计划和质量要求如期完成 。
软件度量:是指计算机软件范围内的测量,主要是为产品开发的软件过程和产品本身定义相关的测量方法和标度。
面向对象的多态性:是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。(也就是说,相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果。 )
动态绑定:是指在程序运行时才将消息所请求的操作与实现该操作的方法连接起来 数据耦合:两个模块之间仅通过参数表传递简单数据,则称为数据耦合。
功能内聚 :指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不可分割的。
二、简答
1.、克服软件危机的途径:
消除错误的概念和做法
推广使用成功的开发技术和方法
使用软件工具和软件工程支持环境
加强软件管理
2、计算机系统工程的任务:
确定待开发软件的总体要求和范围,以及它与其它计算机系统元素之间的关系
进行成本估算,做出进度安排
进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。
3、软件过程三层含义:
① 个体含义,即指软件产品或系统在生存周期中的某一类活动的集合,如软件开发过
程,软件管理过程等;
② 整体含义,即指软件产品或系统在所有上述含义下的软件过程的总体;
③ 工程含义,即指解决软件过程的工程,它应用软件工程的原则、方法来构造软件过
程模型,并结合软件产品的具体要求进行实例化,以及在用户环境下的运作,以此进一步提高软件生产率,降低成本。
4、创建用况模型的步骤包括:
1) 定义系统
2) 确定执行者
3) 确定用况
4) 描述用况
5) 定义用况间的关系,
6) 确认模型
5、需求分析原则
① 必须能够表示和理解问题的信息域
② 必须能够定义软件将完成的功能
③ 必须能够表示软件的行为(作为外部事件的结果)
④ 必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节
⑤ 分析过程应该从要素信息移向细节信息
6、需求验证目的是要检验需求是否能够反映用户的意愿
评审人员评审时往往需要检查以下内容:
① 系统定义的目标是否与用户的要求一致;
② 系统需求分析阶段提供的文档资料是否齐全;文档中的描述是否完整、清晰、准确
地反映了用户要求;
③ 被开发项目的数据流与数据结构是否确定且充足;
④ 主要功能是否已包括在规定的软件范围之内,是否都已充分说明;
⑤ 设计的约束条件或限制条件是否符合实际;
⑥ 开发的技术风险是什么;
⑦ 是否详细制定了检验标准,它们能否对系统定义是否成功进行确认。
三、选择填空
软件分类:系统软件、支持软件和应用软件。
软件按工作方式划分:实时处理软件、分时软件、交互式软件、批处理软件。
软件按服务对象的范围划分:项目软件和产品软件 。
软件按使用的频度进行划分: 一次使用和频繁使用。
软件按失效的影响进行划分:高可靠性软件、一般可靠性软件
典型的软件过程模型有:瀑布模型、演化模型、增量模型、原型模型、螺旋模型、喷泉模型、基于构件的开发模型、形式方法模型。
技术可行性分析通常包括:风险分析、资源分析和技术分析。
软件需求工程细分为:需求获取、需求分析与协商、系统建模、需求规约、需求验证和需求管理六个阶段。
需求跟踪两种方式:正向跟踪、逆向跟踪。
正向跟踪:以用户需求为切入点,检查《需求规约》中的每个需求是否都能在后继工作产品中找到对应点。
逆向跟踪:检查设计文档、代码、测试用况等工作产品是否都能在《需求规约》中找到出处。 软件设计:把软件需求变换成软件表示的过程。
软件设计的两个阶段:软件体系结构设计阶段和部件级设计 。
测试用例的设计方法大体可分为两类:白盒测试和黑盒测试,也称白箱测试和黑箱测试 一种测试策略就是将测试分为单元测试、集成测试、确认测试和系统测试。
测试类型:静态测试和动态测试。
软件的特点
软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算 软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大
软件的使用没有硬件那样的机械磨损和老化问题
为了使程序能在不同的计算机上运行:
1)要使程序具有较好的可移植性。
2)对程序段的设计具有功能性。
3)变量名的使用对提高编程效率没有影响。
可维护性关键在于:选择好的程序设计风格。
软件开发生命周期中的编程阶段任务:得到好的源程序代码。 软件特点:抽象性、复杂性、开发成本高。