1、程序:能够完成预定功能、并满足性能要求的可执行的指令序列。软件:计算机程序以及开发、使用和维护程序所需要的所有文档, 是包括程序、数据及其相关文档的完整集合。软件= 知识+程序+文档+数据1、程序设计时期(1946 1956) 软件=程序开发方式:个体主要特征:计算机硬件=计算机用途少,规模小;不作为商品;开发者=使用者:自己开发,自己使用。2、程序系统时期(19561968) 软件=程序+ 说明开发方式:作坊式主要特征:程序规模增大,多人分工合作。软件作为商品,即程序设计者 使用者;程序开发和使用的文档资料已不可缺少。3、软件工程时期(1968现在) 软件=程序+ 数据+文档开发方式:工程化
2、主要特征:按工程管理的方法管理整个软件开发过程。软件生产的进度、数量、质量、成本与社会对软件的需求量和希望要求甚远,开发成本和进度难以控制,指令难以保证,与硬件发展形成强烈反差。这就是所谓的“软件危机”。- 现实与希望形成的巨大落差 产生软件危机的原因客观原因:软件是手工劳动,是智力产品-生产率低。软件是逻辑实体,出错容易,纠错困难。软件的复杂性使得仅靠人的智力难以驾驭。主观原因开发方式:认为开发软件就是写程序。组织方式:作坊式的生产方式;开发无计划、开发过程无规范、开发过程难控制。用户方面:对软件需求描述不精确。开发人员方面:对用户需求的理解与用户本来愿望有差异,相互之间的信息交流不及时、不
3、准确、有误解。成本、进度和质量软件工程三要素:过程、方法和工具软件生存周期包括三个时期:软件定义问题定义、可行性研究、需求分析 需求规格说明书 初步用户手册 软件初步测试计划 软件开发概要设计、详细设计、编码及模块测试、综合测试软件使用和维护改正性维护、适应性维护、完善性维护、预防性维护软件过程模型-瀑布模型软件过程模型螺旋模型数据字典的内容:数据流数据元素数据存储处理数据结构的定义:描述数据结构的组成(1)定义式数据结构名=数据项1+数据项 2+数据项n数据定义使用的符号:= 定义为+ 和:连接两个分量 选择:表示从中选择一项。 重复:表示由 0个或多个组成。m n 重复:表示至少出现 m次
4、,至多出现n次。( ) 可选:表示其中的内容可出现,也可不出现。IPO(Input/process/output)图是输入/处理/ 输出的简称,是由IBM 公司发展完善起来的一种图形工具,能方便地描绘输入数据、数据的处理和输出数据之间的关系。ER模型包括“实体”、“联系 ”和“属性”三个基本部分。实体:是客观世界中存在的且可以相互区分的 物。如:职工、教师、产品等 联系:客观世界中事物间的联系。往往表示实体间发生的某种行为。属性:是实体或联系具有的性质,通常一个实体由若干个性质来刻画。通常用“范式”(Normal Formas)定义消除数据的冗余的程度。总体设计过程一、系统体系结构设计二、软件
5、结构设计三、数据库设计 四、制定测试计划 五、书写文档 六、审核和复审软件设计原理 抽象抽出事物的本质特征而暂不考虑它们的细节。 抽象和求精是一对互补的概念。求精则是帮助设计者逐步揭示出低层细节。这两个概念都有助于帮助设计者在设计演化过程中构造出完整的设计模型。 模块化 信息隐蔽(和局部化) 信息隐蔽是模块设计的基本原则,局部化是实现信息 隐蔽的重要方法。 模块独立 模块的独立程度的度量标准内聚:衡量一个模块内部各个元素彼此结合的紧密程度;耦合: 衡量不同模块彼此间互相依赖(连接)的紧密程度。层次图:描述软件的层次结构(H图)。层次图中每个矩形框代表一个模块,矩形框之间的连线表示模块调用关系。
6、层次图适合用来描绘软件的层次结构。HIPO图:层次图+IPO 图对H图的每个方框,都有一张IPO图与之对应,来描述方框所代表的模块的处理过程。并且对每个IPO图都对应H图中方框相同的标记和编号,便于追踪。面向数据流的设计方法 概念 变换流分析设计 事物流分析设计 混合流分析设计 设计优化 PAD是问题分析图(Problem Analysis Diagram)变换流:事务流:概要设计小结一、任务1、系统体系结构设计:确定系统的总体物理实现方案。2、软件结构设计:确定模块和模块间的动态调用管理。3、数据结构设计(或数据库设计):确定系统中数据的总体结构。(数据库:逻辑设计、物理设计、安全性设计)。
7、4、接口设计:外部接口、人机界面设计二、设计原理1、模块独立性原理:信息隐蔽、耦合、内聚2、思维工具:抽象3:启发式规则:改进软件结构,提高系统质量三、设计工具: HIPO图、结构图四、面向数据流的设计方法-结构化设计方法1、从分析型的数据流图向软件结构的转换2、从事务型的数据流图向软件结构的转换详细设计工具分为图形、表格和语言三类。主要工具有:程序流程图 盒图(N-S图) PAD图 判定表 判定树 过程设计语言(PDL ) McCabe方法根据程序控制流的复杂程度来定量度量程序的复杂程度,这样度量出的结果称为程序的环行复杂度。用户界面设计原则1、置用户于控制之下。用户界面能够对用户的操作做出
8、恰当的反应,并帮助用户完成需要的工作。2、减少用户的记忆负担。系统应该“记住”有关的信息,通过默认项、快捷方式或界面视觉减少用户的记忆负担。3、保持界面的一致性。用户应该以一致的方式展示和获取信息。 问题:系统响应时间用户帮助设施错误信息处理命令交互界面设计包括:界面对话设计数据输入界面设计数据输出设计(屏幕显示设计)。常用的界面设计元素有:问题描述语言数据表格图形与图标菜单对话框窗口G.J.Myers关于软件测试的观点 :1、测试是为了发现程序中的错误而执行程序的过程。2、好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。3、成功的测试是发现了迄今为止尚未发现的错误的测试。E.D.D
9、ijkstra:程序测试能证明程序中的错误,是为了证明程序有错,而不是证明程序无错。必须记住:测试无法说明错误不存在,它只能表示软件错误已经出现。软件测试准则1、以用户需求为基准2、严格执行测试计划3、测试中的群集现象2-8原理: 80%的错误可能集中在20%的模块中。4、程序逻辑覆盖程度 5、第三方独立进行测试6、合理的输入和不合理的输入7、预期输出结果步骤: 1、模块测试 2、子系统测试 3、系统测试 4、验收测试5、平行运行 确认测试包括:软件有效性测试 运用黑盒测试方法,验证软件是否满足需求规格说明书列出的需求。软件配置复审 保证软件配置的所有成分都齐全,质量符合要求,文档与程序一致,具有完成软件维护所必须的细节,并且已经编排好分类的目录。、 和测试