2021年底期末软工考试复习资料整理
文章目录
第一章 软件工程
1、软件危机,软件工程出现的背景;
定义: 软件在开发和维护过程中遇到的一系列严重问题。
具体表现:
- 软件开发的进度难以控制,经常出现经费超预算、完成期限一再拖延的现象。
- 软件需求在开发初期不明确,导致矛盾在后期集中暴露,从而对整个开发过程带来灾难性的后果。
- 由于缺乏完整规范的资料,加之软件测试不充分,从而造成软件质量低下,运行中出现大量问题。
- 软件文档资料不完整、不合格
- 软件的可维护性差,程序中的错误难以改正,程序不能适应硬件环境的改变,不能应用户要求增加新的功能;
- 软件价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升
2、软件的特点,与硬件特性的区别;
特点
- 软件是逻辑的,而不是物理的产品;
- 软件是由开发或工程化而形成的,没有明显的制造过程;软件成本集中于“开发”上,意味着软件项目不能像硬件制造项目那样来管理;
- 软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。
- 大多数软件是自定的,而不是通过已有构件组装而成的;迄今为止,软件的开发尚未完全摆脱手工方式;
- 软件成本相当昂贵;
- 软件本身是复杂的:软件比任何其他人类制造的结构更复杂,硬件的复杂性和软件相比也是微不足道的;软件本质上的复杂性使软件产品难以理解,影响软件过程的管理,并使维护过程十分复杂。
软硬件区别:
- 软件是开发出来的,硬件是制造出来的;
- 硬件有磨损,而软件没有;
- 多数硬件产品是基于构件组装出来的,而多数软件产品目前依然是定制开发的
3、软件工程的概念;
软件工程: 是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化方法应用到软件领域。
4、软件工程三要素:过程、方法、工具;
- 过程: 进行一系列有组织的活动,从而能够合理和及时地开发出计算机软件。过程定义了技术方法的采用、工程产品(包括模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证和变更的管理。
- 方法: 为软件开发提供“如何做”的技术。它包括了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列的任务。
- 工具: 为过程和方法提供自动的或半自动的支持。这些软件工具被集成起来,建立起一个支持软件开发的系统,称之为计算机辅助软件工程(CASE, Computer Aided Software Engineering)。CASE集成了软件、硬件和一个存放开发过程信息的软件工程数据库,形成了一个软件工程环境。
5、软件工程学的基本原则:抽象、信息隐藏(封装)、模块化、一致性;
- 抽象(abstraction):抽取事物最基本的特性和行为,忽略非基本的细节。采用分层次抽象的办法可以控制软件开发过程的复杂性,有利于软件的可理解性和开发过程的管理。
- 信息隐藏(information hiding)
- 将模块中的软件设计决策封装起来的技术;
- 按照信息隐藏的原则,系统中的模块应设计成箱,模块外部只能使用模块接口说明中给出的信息,如操作、数据类型等。
- 模块化(modularity)
- 模块(module)是程序中逻辑上相对独立的单元;
- 模块的大小要适中;
- 高内聚、低耦合。
- 一致性(consistency)
- 整个软件系统(包括文档和程序)的各个模块均应使用一致的概念、符号和术语;程序内部接口;软件与硬件接口;系统规格说明与系统行为应保持一致;
- 实现一致性需要良好的软件设计工具(如数据字典、数据库、文档自动生成与一致性检查工具等等)、设计方法和编码风格的支持。
6、什么是软件构件;
**软构件(Software Component):**具有一定集成度并可以重复使用的软件组成单元;