软件工程导论(整理)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、软件危机与软件工程

1、软件危机

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。(正常、不正常运行软件都具有这种问题)

2、软件危机的原因

1)软件本身特点造成;

程序规模庞大;

程序复杂性随着程序规模的增加而呈指数上升。

2)软件开发与维护的方法不正确。

主要表现:

(a)忽视软件需求分析;

(b)认为软件开发就是写程序并使之运行;

(c)轻视软件维护;

3、解决软件危机的途径:

1、组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

2、方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。

3、工具:应该开发和使用更好的软件工具。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。

4、软件工程包括哪7条基本原理?

1. 用分阶段的生命周期计划严格管理;

2. 坚持进行阶段评审;

3. 实行严格的产品控制;

4. 采用现代程序设计技术;

5. 结果能清楚地审查;

6. 开发小组的人员应该少而精;

7. 承认不断改进软件工程实践的必要性。

5、软件开发流程?

1)、问题定义2)、可行性研究3)、需求分析4)、总体设计5)、详细设计6)、编码和单元测试7)、综合测试8)、软件维护

6、软件开发模型

瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、rational统一过程、敏捷过程与极限编程、微软过程

二、可行性研究

1.系统流程图

系统流程图是概括地描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。

2.数据流图

数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。

3.数据字典

数据字典:对数据流图中包含的所有元素的定义的集合;

三、需求分析

1、需求分析目的及作用

需求分析是软件分析时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析的作用是对目标系统提出完整、准确、清晰、具体的要求。

2、需求分析的过程

1)、访谈

正式访谈:系统分析员提出事先准备好的问题。

非正式访谈:提出一些用户可以自由回答的开放性问题,鼓励被访者说出自己的想法。

需要访问大量人员时,利用调查表访问较佳。

2)、面向数据流自顶向下求精

借助数据流图、数据字典、IPO图等,细化、完善详细的数据流图,等到各处理环节对应的功能。

3)、简易的应用规格说明技术

面向团队的需求收集法:(用户与开发者配合)

●初步访谈;

●开发者和用户分别写出“产品需求”;

●开会讨论,各自展示需求列表;

●得出一致意见,为需求列表制定小型规格说明;

●根据会议成果,起草完整的软件需求规格说明。

4)、快速建立软件原型

快速建立能演示目标系统主要功能的程序。

(1)第四代技术

包括:数据库查询和报表语言、程序和应用系统生成器以及其他非常高级的非过程语言,其可以快速生成可执行代码

(2)可重用的软件构件

使用一组已有的软件构件来装配原型

(3)形式化规格说明和原型环境

四、总体设计

1、软件设计

软件设计一般包括(总体设计)和详细设计阶段等两个阶段,在软件设计过程中应该遵循的基本原理和相关概念有(模块化)、(抽象)、(逐步求精)、(信息隐藏和局部化)和(模块独立)。

2、面向数据流的设计方法

面向数据流的软件设计方法,一般是把数据流图中数据流划分为(变换流)和(事务流),再将数据流图映射为软件结构。

3、启发式规则

1)改进软件结构提高模块独立性

2)模块规模应该适中

3)深度、宽度、扇入和扇出都应适当

4)模块的作用域应该在控制域之内

5)力争降低模块接口的复杂程度

6)设计单入口单出口的模块

7)模块功能应该可以预测

4、模块间深度:表示软件结构中控制的层数、往往能粗略的标志一个系统的大小和复杂程度。

宽度:是软件结构内同一层次上的模块总数的最大值。宽度越大系统月复杂

扇出:是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块

扇入:表明有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多。作用域:为受该模块内一个判定影响的所有模块集合。

七、测试

1、测试:为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误测试方案;成功的测试时发现了至今尚未发现的错误的测试。

2、测试种类(对象):单元测试(模块)、白盒测试(结构测试)、黑盒测试(软件功能)、集成测试(发现与接口有关的问题)、确认测试(验证软件的有效性)

3、调试:作为成功测试的后果出现,也就是说,调试时在测试发现错误之后排除错误的过程。

八、软件维护

1、软件维护:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程

2、软件维护特点

1)机构化维护与非结构化维护差别巨大:非结构化维护、结构化维护

2)维护代价高昂

3)维护的为题很多

相关文档
最新文档