软件危机是指在计算机软件开发与维护过程中遇到的一系列严重问题。20世纪60年代,随着计算机硬件性能的快速提升,软件规模不断扩大,出现了"软件危机"现象。主要表现为:项目延期、预算超支、质量低劣、维护困难等。
产生原因主要有两方面:
解决方案包括四个层面:
软件工程是指导计算机软件开发和维护的工程学科,结合了管理技术和最佳技术方法。其7条基本原理构成了现代软件开发的基石:
软件工程方法学包含方法、工具和过程三个要素,主要分为两类:
软件生命周期分为三个时期八个阶段:
常见软件过程模型各有特点:
可行性研究的核心目的是确定问题是否值得解决,而非如何解决。这一阶段需要回答三个关键问题:
可行性研究过程包含八个步骤:
系统流程图是描绘物理系统的传统工具,展示数据在各部件间的流动情况。常用符号包括:
数据流图(DFD)描述系统逻辑模型,关注数据处理逻辑而非物理实现。DFD包含四种核心符号:
绘制原则:
数据字典是对DFD中所有元素的精确定义,与DFD共同构成完整的系统逻辑模型。其内容包含:
数据结构定义方法使用四种符号:
成本/效益分析通过量化计算判断项目是否值得开发。主要方法包括:
需求分析的核心目的是准确确定"系统必须做什么",导出系统的逻辑模型。其主要任务包括:
ER图是描述系统数据关系的图形工具,包含三个核心元素:
联系类型包括:
绘制步骤:
状态转换图描绘系统行为,展示状态及事件触发的状态转换。其核心符号包括:
绘制步骤:
需求验证需要从四个维度评估:
验证方法包括:
总体设计的核心目的是概括地确定"系统如何实现",主要任务包括:
模块独立性是衡量软件设计质量的核心标准,包含两个关键指标:
设计原则:尽量使用数据耦合,避免内容耦合
设计原则:追求功能内聚,避免偶然内聚
面向数据流的设计方法将信息流映射为软件结构,适用于两种信息流类型:
详细设计的核心目的是确定"模块如何具体实现",为编码提供详细蓝图。其主要内容包括:
结构程序设计强调使用三种基本控制结构:
扩展结构:
设计原则:
Jackson方法根据数据结构设计程序结构,主要步骤:
特点:
软件测试的目标是发现错误而非证明无错。好的测试用例能发现未发现的错误。
测试方法:
测试步骤:
逻辑覆盖(从低到高):
测试用例设计示例:
对于条件"(A>1) AND (B=0)",需要:
测试用例设计示例:
输入1-100的整数:
调试是在测试发现错误后定位并改正的过程,常用方法:
软件可靠性指标:
软件维护是交付后为改正错误或满足新需求而修改的过程,分为四类:
软件维护具有三个显著特点:
维护过程六个步骤:
可维护性决定因素:
提高可维护性的关键: