第七章软件工程概述
- 格式:pptx
- 大小:371.80 KB
- 文档页数:50


软件工程发展概述
计算机工业发达国家在发展软件的过程中曾经走过不少弯路,受过许多的挫折,至今仍然经受着“软件危机”的困扰。人们开发幼稚软件的能力大大落后于计算机硬件日新月异的进展和社会对计算机软件不断增长的需求,这种状况已经严重妨碍了计算机技术的进步。
为了摆脱软件危机,一门新的学科产生并发展起来—软件工程,几十年来软件工程的发展大致如下几个阶段。
第一阶段—软件危机。
20世纪中期,计算机刚被从军用领域转向民用领域使用,那时编写程序的工作被视同为艺术家的创作。当时的计算机硬件非常昂贵,编程人员追求的是如何在有限的处理器能力和存储器空间约束下,编写出执行速度快、体积小的程序。程序中充满了各种各样让人迷惑的技巧。这时的软件生产非常依赖于开发人员的聪明才智。
到了20世纪60年代,计算机的应用范围得到较大扩展,对软件系统的需求和软件自身的复杂度急剧上升,传统的开发方法无法适应用户在质量、效率等方面对软件的需求。这就是所谓的“软件危机”。
早期出现的软件危机主要表现在:
① 软件开发费用和进度失控。费用超支、进度拖延的情况屡屡发生。有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量。
②软件的可靠性差。尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人。
③生产出来的软件难以维护。很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。进入80年代以来,尽管软件工程研究与实践取得了可喜的成就,软件技术水平有了长足的进展,但是软件生产水平依然远远落后于硬件生产水平的发展速度。
软件危机不仅没有消失,还有加剧之势。主要表现在:
①软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。由于微电子学技术的进步和硬件生产自动化程度不断提高,硬件成本逐年下降,性能和产量迅速提高。然而软件开发需要大量人力,软件成本随着软件规模和数量的剧增而持续上升。从美、日两国的统计数字表明,1985年度软件成本大约占总成本的90%。
《计算机软件技术基础》
第一章 算法
1.1算法的基本概念
算法:指解题方案的准确而完整的描述
算法的基本特征:
能行性(算法中的每一个步骤必须能够实现;算法执行的结果要能够达到预期的目的)
确定性(算法中的每一个步骤都必须是有明确定义的,不能摸棱两可,也不能有多义性)
有穷性(算法必须能在执行有限个步骤之后终止)
拥有足够的情报(算法执行的结果总是与输入的初始数据有关。不同输入对应不同输出)
算法:是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的、明确的,此顺序将在有限的次数下终止。
算法的基本要素:
1.算法中对数据的运算和操作(算术运算、逻辑运算、关系运算、数据传输【赋值、输入、输出】)
2.算法的控制结构(算法中各操作之间的执行顺序)
1.2算法描述语言
C语言描述和简单的算法描述语言
(1)符号与表达式:符号主要用以表述变量名、数组名等
(2)赋值语句
(3)控制转移语句:
无条件转移语句形式:GOTO 标号
条件转移语句形式 IF C THEN S
IF C THEN S1
ELSE S2
(4)循环语句
WHILE语句:WHILE C DO S
FOR语句:FOR i=init TO limit BY step DO S
(5)其他语句
EXIT语句:退出某个循环,使控制转到包含EXIT语句的最内层的WHILE或FOR循环后面的一个语句去执行
RETURN语句:结束算法的执行(允许使用用引号括起来的注释信息)
READ(INPUT)和WRITE(PRINT/OUTPUT)语句:用于输入输出
(6)算法中的注释总是用一对方括号【】括起来;复合语句用一对花括号{}括起来
1.3算法设计基本方法
1.列举法【例1.1】
基本思想:根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的(通常解决“是否存在”“有多少种可能”类型问题)
第七章 面向数据流的设计方法
面向数据流的设计方法,即通常所说的结构设计法(简称SD方法),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。数据流图主要描绘信息在系统内部加工和流动的情况,面向数据流的设计方法根据数据流图的特性定义两种“映射”,这两种映射能机械地将数据流图转换为程序结构。该方法的目标是为软件结构设计提供一个系统化的途径,使设计人员对软件有一个整体的认识。本章所述技术用于软件的概要设计描述,包括模块、界面和数据结构的定义,这是所有后续开发工作的基础。每种软件设计方法都有长处和不足,先用哪种方法首先应考虑它适用的范围。任何软件系统都可以用数据流图表示,理论上,面向数据流的设计方法可用于任一种软件系统的开发。然而,该方法对那些顺序处理信息且不含层次数据结构的系统最为有效,例如过程控制、复杂的数值分析过程、以及科学与工程方面的应用,等等。当SD方法用于完全的数据处理时,即使系统中作用层次数据也同样行之有效。
从系统设计的角度出发,软件设计方法可以分为三大类。第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以 LCP(程序逻辑构造)方法、Jackson 系统开发方法和数据结构化系统开发(DSSD)方法为代表。第三类设计方法即面向对象的设计。
第一节 基本概念和设计过程
面向数据流设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。该方法实施的要点是:①建立数据流的类型。②指明流的边界 。③将数据流图映射到程序结构 。④用“因子化”方法定义控制的层次结构。⑤用设计测量和一些启发式规则对结构进行细化。
一、在系统结构图(SC)中的模块
在系统结构图中不能再分解的底层模块为原子模块。如果一个软件系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其他所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。如果系统结构图是完全因子分解的 ,就是最好的系统 。一般地,在系统结构图中有4种类型的模块(如图7-1-1):
红岩第七章内容
红岩第七章以“软件工程与实践”为主题,内容丰富多彩,带给我们很多的指导意义。本章主要介绍了软件的构建过程,包括需求分析、设计、编码、测试和维护等多个环节。通过这一章的学习,我们可以更好地理解软件开发的方法和技巧,在实践中不断提升自己的编程能力和团队协作能力。
首先,在需求分析阶段,我们要深入了解用户的需求,明确软件的功能和性能要求。只有全面、准确地掌握需求,才能为后续的设计和编码工作提供有力的支持。
其次,设计是软件开发过程中非常关键的环节。良好的设计能够提高软件的可维护性、可扩展性和可复用性。在设计阶段,我们要遵循一些设计原则,如高内聚低耦合、单一职责、开闭原则等,以保证软件的质量和性能。
编码是将设计转化为可执行代码的过程。在编码之前,我们要学会选择合适的编程语言和开发工具,并遵循一些编码规范,如命名规范、注释规范等。编码时,我们要保持面向对象的思维方式,灵活运用各种数据结构和算法,以提高代码的效率和可读性。
测试是确保软件质量的关键环节。通过各种测试手段,如单元测试、集成测试和系统测试等,我们可以发现并解决软件中存在的问题,同时保证软件的稳定性和可靠性。 最后,维护是软件开发周期中最长久的一个环节。在维护过程中,我们要及时修复软件中出现的错误,同时根据用户的反馈和需求,进行功能的优化和升级。只有不断改进和完善软件,才能使其更好地满足用户的需求。
红岩第七章的学习使我意识到软件开发是一个综合性的活动,需要技术、经验和团队合作等多方面的支持。通过实践,我们要逐步提高自己的技术水平,培养解决问题的能力,同时要学会与他人进行有效的沟通和合作,提倡团队精神。只有这样,我们才能在软件开发领域取得长远的发展和成功。