软件危机,软件生存周期(总结)

这篇博客是对《软件工程导论(第六版)》中开篇部分的总结。这节概念太多了,所以在此记录一下



1-软件危机

软件危机的定义

在计算机软件开发和维护过程中遇到的一系列严重的问题。这些问题主要体现在两个方面:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机的表现

  1. 软件开发成本和进度估计不准:出现延时交付,取消项目等问题。
  2. 用户对已交付的软件不满意:开发人员与用户交流不充分,产品不符合用户需求。
  3. 软件质量靠不住:没有评审、复审、测试等步骤,开发人员需要一直进行维护软件。
  4. 软件的可维护性差
  5. 软件没有适当的文档资料

软件结构的变化加剧了软件危机

20世纪80年代是软件迅猛发展的年代,此年代最主要的表现为:软件架构发生了变化:由传统的集中式主机1变为了现在的 客户机-服务器模式2;客户机-服务器模式有发展为 浏览器-服务器模式3






2-软件工程

软件的定义

为了消除软件危机,首先我们应该对计算机软件有一个正确的认识。即,消除“软件就是程序”的错误观念。一个软件必须由一个完整地配置组成,这些配置为:

程序+数据+文档。
程序:能够完成预订功能和性能的可执行的指令序列。
数据:使程序能够适当处理信息的数据结构。
文档:开发、使用和维护程序所需要的图文资料。

什么是软件工程

为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措
施。软件工程就是从 管理和技术 两方面研究如何更好地开发和维护计算机软件的一门新兴学科。





3-软件生存周期

什么是软件生存周期:软件从产生、发展到成熟、直到衰亡为止的过程称为软件生存周期。

软件生存周期由 软件定义、软件开发、软件维护 组成,每个时期又划分为若干个阶段,以方便我们对软件进行管理。

那么,软件生存周期到底要划分为多少个阶段呢?不同的标准所划分出的阶段有所不同,这里采用的是书上划分的阶段。

  1. 问题定义
  2. 可行性研究
  3. 需求分析
  4. 总体设计
  5. 详细设计
  6. 实现
  7. 综合测试
  8. 软件维护


3.1-问题定义

问题:软件要解决的问题是什么?

实现:通过对客户的访问调查,分析员需要扼要地写出关于问题性质、工程目标和工程规模的书面报告,并且此报告需要得到客户的确认。


3.2-可行性研究

问题:对于上一个阶段所确定的问题有行得通的解决方法吗?

任务:这个阶段的任务不是具体解决问题,而是研究问题的范围;探索这个问题是否值得去解决;这个问题是否有可行的解决方法。可行性研究的结果 是客户作出是否继续进行这项工程的重要依据。及时终止不值得的项目可避免更大的浪费。

完成后需要给出的文档有:

  1. 问题定义报告。内容:问题性质,工程目标,工程规模。
  2. 可行性研究报告。内容:经济/技术/操作/社会(是否违法) 可行性。


3.3-需求分析

问题:为了解决目标问题,目标软件(系统)必须做什么。

关键任务:此阶段系统分析员必须把用户的所有需求 完整、准确、清晰、具体 地分析出来(如 功能/性能/将来 需求等)。(可行性研究对需求的分析是不准确的,它只是为了研究软件是否可行)

完成后需要给出的文档有:需求规格说明书(目标系统需求)。


3.4-总体设计(又称为概要设计)

总体设计又称为概要设计,其面临的问题是:怎样实现目标系统?
我们要根据需求设计方案,通常需要设计几套方案。

关键任务:一、确定解决问题的策略和目标系统中应包含的程序。二、设计程序的体系结构,也就是确定程序由哪些模块组成及模块间的关系。

完成后需要给出的文档有:总体设计说明书(记录总体设计结果)。


3.5-详细设计(又称为模块设计)

详细设计也称为模块设计,其面临的问题是问题:应该怎样具体地实现这个系统。

关键任务:设计程序的详细规格说明。

此阶段将详细地设计每个模块,确定实现功能模块所需的算法和数据结构
完成后需要给出的文档有:详细设计说明书(用相应的图形或其它工具表达算法和数据结构)。


3.6-实现(编码和单元测试)

关键任务:写出正确的容易理解、容易维护的程序模块。
到此阶段,程序员应该根据目标系统的性质和实际环境,选择适当的语言和开发工具、把详细设计说明书中的算法和数据结构翻译成程序、进行模块测试。

完成后需要给出的文档有:程序清单,单元测试报告。


3.7-综合测试

关键任务:将经过单元测试的模块组装起来进行测试(可以测试接口);通过测试软件达到预定要求。

综合测试里最基本的测试是集成测试和验收测试。
完成后需要给出的文档有: 测试报告,包括测试计划(怎么测试的)、测试方案(设计了几种方案)、测试结果(有没有问题)。这些文档都应作为软件配置的一个组成部分。


3.8-软件维护

关键任务:通过必要维护活动使系统持久满足用户需求。





  1. 把应用程序和数据存取都安装在一台计算机上,用户通过应用程序处理本机的数据。缺点为,数据无法共享和不够安全。 ↩︎

  2. 此模式(客户/服务器)分为两阶段。第一阶段把软件分为了两部分,一部分是安装在客户端的应用程序,另一部分是负责数据存取的服务器端。多个用户可通过网络来共享数据。缺点为,客户端负担太重——所有的应用程序安装在客户端,服务只负责简单的数据存取;第二阶段把第一阶段的客户端进行了修改,然后软件分为了三部分。一是负责人机交互(界面)的客户端,二是负责应用处理的应用服务器端,三是负责数据存取的数据库服务器端。缺点为,客户端依然需要安装应用程序;若应用程序需要升级,则每一个客户端都需要更新应用程序。 ↩︎

  3. 此模式(浏览器/服务器)分为浏览器(负责发送请求)和Web端(负责数据处理)。Web端又分为两部分,一是安装在Web服务器上的处理程序,二是负责存取数据的数据库。客户端需要通过浏览器访问Web端的应用程序,再通过Web端的应用程序才能访问到数据库中的数据。 ↩︎

发布了10 篇原创文章 · 获赞 13 · 访问量 425

猜你喜欢

转载自blog.csdn.net/hufuzhi1146231094/article/details/105150478