软件危机是指在计算机软件的开发和维护过程中遇到一系列严重问题。软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门。软件工程方法学包含3个要素:方法、工具和过程目前使用最广泛的软件工程方法学,分别是传统方法学和面向对象方法学软件生命周期由软件定义、软件开发和运行维护3个时期组成。软件生存周期是指一个软件从提出开发要求开始直到软件报废为止的整个时期。通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。软件定义分3个阶段,即问题定义、可行性研究和需求分析。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的主要内容包括技术可行性、经济可行性和操作可行性3个方面。开发时期由4个阶段组成:总体设计、详细设计、编码和单元测试,综合测试。其中前两个阶段称为系统设计,后两个阶段称为系统实现。系统流程图是概括地描绘物理系统的传统工具;而数据流图是系统逻辑功能的图形表示工具。模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。分析建模的用处是为了更好地理解复杂事物。软件需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效性需求。需求分析过程应该建立3种模型分别是数据模型、功能模型和行为模型。数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。结构程序设计的定义:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制接口进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。衡量模块独立程序的两个定性标准是内聚和耦合。确认测试也称为验收测试,它的目标是验收软件的有效性。等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。一个理想的r