第一章概述。
1.什么是软件危机?产生的原因。
是指在计算机软件开发和维护过程中所遇到的一系列严重问题。
原因:软件本身的特点、软件开发与维护方法不正确。
2软件的概念(*)软件是计算机系统中与硬件相互依存的另一部分,它包括程序、数据及相关文档的完整集合。
特点:软件是一种逻辑实体,缺乏“可见性”。
在软件的开发过程中没有明显的制造过程。
软件在运行和使用过程期间,没有硬件那样的机械磨损、老化问题。但维护一般需要修改设计。
软件成本相当昂贵。
文档的作用:描述如何使用这个系统;描述怎么安装和管理这个系统;描述系统需求。
3、软件工程原理:1.用分阶段的生命周期计划严格管理软件开发。
2.坚持进行阶段评审。3.
实行严格的产品版本控制。4.采用现代程序设计技术。
5.结果应能清楚地审查。文档要有严格要求。
6.开发小组的成员要少而精。7.
要不断地改进软件工程实践的经验和技术。
4.软件工程方法学(传统方法学、面向对象方法学) 三要素:方法、工具、过程。
结构化方法/面向对象方法(4个要点)(*
把对象作为融合了数据及在数据上的操作行为的统一的软件构件。
把所有的对象都划分为类。
按照父类和子类的关系,把若干个相关类组成一个层次结构的系统。
对象彼此间仅能通过发送消息互相联系。
在分析、设计、实现中用到“对象、类、继承、消息通信”这四个基本概念,就是面向对象的方法。
5.软件生存周期各阶段(*)
1. 问题定义:要解决什么问题?
2. 可行性研究:有可行的方法吗?
3. 需求分析:目标系统必须做什么?
4. 总体设计:怎样实现目标系统?
5. 详细设计。
6. 编码和单元测试:实现。
7. 综合测试:系统达到预定目标了吗?
8. 软件维护。
第二章可行性研究。
1.可行性研究的目的:用最少的代价在最短的时间内确定问题是否能够解决。
任务:(1)分析和澄清问题。
目标、规模、限制、约束。
2)导出系统逻辑模型。
3)探索可供选择的解决方案并研究可行性。
技术可行性:使用现有的技术能实现这个系统吗?
经济可行性:这个系统的经济效益能超过它的开发成本吗?
操作可行性:系统的操作方式在这个用户组织内行得通吗?
法律、社会效益可行性:要开发的项目是否存在侵权、妨碍等社会责任问题。
4)给出行动方案建议,制定初步项目计划。
2.可行性研究过程(*)
1)确定系统的规模和目标(2)分析现有系统(3)设计新系统的高层逻辑模型(4)评审系统模型(5)设计和评价解决方案(6)制定行动方案(7)草拟开发计划(8)书写文档提交审查。
3.方法和工具。
1)系统流程图符号表示略。
2)数据流图(*)p42 例子。
3)数据字典(*)p54. 5题。
数据字典是关于数据的信息的集合。 数据字典提供关于数据的描述。
数据字典内容:四类元素:数据流、数据元素、数据存储、处理
定义数据的方法:对数据进行自顶向下分解,分解为最基本的数据元素。
四种基本组合方式:顺序 + 字母字符+数字字符。
选择字母字符|数字字符]
重复 25
可选 ( a)
第三章需求分析。
1.需求分析的任务和难点书p56
任务:①画出目标系统的组织结构图与列出各部门的岗位角色表(组织机构模型) ②画出目标系统的业务操作流程图 ③画出目标系统的数据流程图,掌握业务规则,获得初步数据模型。 ④列出目标系统的功能点列表(功能模型) ⑤列出系统的性能点列表(性能模型) ⑥列出目标系统的接口列表(接口模型) ⑦确定目标系统的运行环境(环境模型) ⑧目标系统的界面约定(界面模型) ⑨对目标系统的开发工期、费用、开发进度、系统风险等问题进行分析与评估。
软件工程的两大难点:软件需求、项目管理。
2、需求过程(*)1)需求获取 ②分析建模 ③需求说明书 ④需求验证。
3、 需求获取方法:访谈、调查表、学徒、搜集资料、用例分析、原型方法。
4、分析建模方法(*)
1)结构化分析方法(面向数据流分析)(*就是面向数据流自顶向下逐步求精进行需求分析的方法。
2)er图(*)实体联系模型是用户对数据和加工的需求用实体联系图(即e-r图)表达出来,明确描述应用系统的概念结构数据模型。
实体(数据对象):是对软件必须理解的复合信息的抽象。
复合信息:具有一系列不同性质和属性的事物。如:外部实体、事物(例如单据、报表)、事件(存款)、角色、单位、地点等。
属性:定义了实体的性质。特殊属性-标识符。
联系:实体之间的关系。1 : 1 , 1 : m , m : n 联系也可有属性。
3)数据规范化(第一二三范式)
4)状态图。
5)用例分析。
5、《需求规格说明书》与需求验证。
《软件需求规格说明书》是需求分析阶段的主要文档。
通常用自然语言完整、准确、规范、具体地描述系统的功能要求、性能要求、数据要求、约束等。
软件设计的输入。
是验收的依据。
第五章总体设计。
1.设计的目标和任务。
目标:软件设计的目标就是构造一个高内聚低耦合的软件模型。
任务:1) 划分出组成系统的物理元素---程序、文件、数据库、人工过程和文档等,但是每个物理元素仍处于黑盒子级,这些黑盒子的具体内容将在以后详细设计。
2)设计软件的结构,也就是要确定系统中每个程序是由那些模块组成的,以及这些模块相互之间的关系。
2、总体设计过程:1)设想供选择的方案2)选取合理的方案3)推荐最佳方案4)功能分解5)设计软件结构6)设计数据库7)制定测试计划8)书写文档9)审查和复审。
3、设计原理(*)模块化、抽象、逐步求精、信息隐藏和局部化、模块独立(耦合和内聚)
模块化(*)就是将软件系统划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体。
抽象可分为控制抽象、过程抽象、数据抽象三种。
逐步求精:为了能够集中精力解决主要问题而尽量推迟对问题细节的考虑。与抽象互补。
信息隐藏和局部化:信息隐藏是一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说是不能访问的。自顶向下逐步求精是进行软件结构设计的常用途径。
局部化是指把一些关系密切的软件元素物理地放得彼此靠近。局部化有助于实现信息隐藏。
模块化可使软件结构清晰,便于理解,便于修改。模块化有助于软件开发工程的组织管理。
模块独立是设计的关键模块独立性度量:耦合和内聚。
耦合程度由高到低(模块独立性由弱到强):内容耦合、公共耦合、控制耦合、数据耦合。
内聚性由高到低(模块独立性由强到弱):功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚。
对于低内聚的模块,可通过重新分解来实现模块的修改与优化,这样提高了模块内部的紧凑性,必然会降低块间联系,确保从整体上提高模块的独立性。
对于高耦合度的模块,则通过功能重组,将联系紧密的部分组成新的模块,这样可以防止系统僵化,提高模块的可维护性。
4、软件结构优化的启发式规则(*)
改进软件结构提高模块独立性。
模块规模应该适中。
深度、宽度、扇出和扇入都应适当。
模块的作用域应该在控制域之内。
力争降低模块接口的复杂程度。
设计单入口单出口的模块。
模块功能应该可以**。
5、总体设计方法和工具。
结构化方法指导思想(*)
1. 改进软件结构提高模块独立性。
2. 模块规模应该适中。
3. 深度、宽度、扇出和扇入都应适当。
4. 模块的作用域应该在控制域之内。
5. 力争降低模块接口的复杂程度。
6. 设计单入口单出口的模块。
7. 模块功能应该可以**。
面向数据流的的设计方法(*)面向数据流的设计方法,即通常所说的结构设计法(简称sd方法),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。目标是给出设计软件结构的一个系统化的途径。
变换分析步骤1:复审基本系统模型。
步骤2:复审并细化数据流图。
步骤3:确定数据流图中含有变换特征还是事务特征。
步骤4:确定输入流和输出流的边界,从而孤立出变换中心。
步骤5:完成第一级分解。
步骤6:完成第二级分解。
为每一个输入模块、输出模块、变换模块设计它们的从属模块。
步骤7:利用设计度量和启发式对第一次分割得到的软件结构进一步精化。
事务分析与变换分析设计步骤大部分相同或类似,主要差别仅在于由数据流图得到软件结构的映射方法不同。
描述软件结构的工具(可能是绘图题详见课本p102--104)
层次图和hipo图 (p102 --103)
结构图(p103---p104)
第6章详细设计。
1、详细设计的目标和任务。
答:主要任务:为每一模块确定算法;确定每一模块使用的数据结构;确定模块的外部接口和用户界面;为每一模块设计一组测试用例;编写文档: “详细设计说明书”;
设计的质量目标:逻辑正确、性能满足要求、易理解、可维护。
2、 结构程序设计的基本控制结构:顺序结构选择结构循环结构。
3.人机界面设计要解决四个设计问题:1.系统响应时间 2. 用户帮助设施3. 出错信息处理4. 命令交互。
人机界面设计指南:1. 一般交互指南2. 信息显示指南3. 数据输入指南。
4.过程设计工具有:
1)程序流程图:流程图是用图形化的方式,表示程序中一系列操作及执行的顺序。
2)结构化流程图(ns图):n-s图是流程图的另一种表达形式,简称n-s图。与流程图对应的三种结构:顺序,分支,循环。
3)pad图—问题分析图。
4)过程设计语言pdl:程序设计语言也称结构化英语或伪**,它使用结构化编程语言的风格描述程序算法,但不遵循特定编程语言的语法。程序设计语言允许你在比源**更高的层次上进行设计,通常省略与算法无关的细节,例如,交换两个变量的操作。
软件工程复习 1
重庆邮电大学。期末复习。1.什么是软件工程?他的基本原理是什么?1 把系统化的 规范的 可度量的途径应用于软件开发 运行和维护的过程,也就是把工程化应用于软件中 研究 中提到的途径。2.是什么导致了软件工程?为了消除软件危机,为了从管理和技术两方面研究如何更好地开发和维护计算机软件导致了软件工程的出...
软件工程复习材料 1
一 填空题 1.软件测试通常有两种方法,一种是从功能上的测试,也称为黑盒测试,一种是从结构上的测试称为白盒测试。p151 2.软件生命周期通常由问题定义 可行性研究 需求分析 总体设计 详细设计 编码和单元测试 综合测试 软件维护等阶段构成。p11 3.数据字典的内容通常由4类元素的定义组成 数据流...
软件工程复习
单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...