软件工程基本原理(第一章、第二章)
《软件工程》教学教案

《软件工程》教学教案一、第一章:软件工程概述1. 教学目标了解软件工程的定义、目的和重要性,掌握软件开发的基本过程和原则。
2. 教学内容软件工程的定义和重要性;软件开发的基本过程;软件工程的原则和方法。
3. 教学方法采用讲授法,结合案例分析,让学生了解和掌握软件工程的基本概念和原则。
4. 教学资源教材、课件、案例分析。
5. 教学评价通过课堂提问和案例分析,评估学生对软件工程的理解和应用能力。
二、第二章:软件需求分析1. 教学目标掌握软件需求分析的基本概念、方法和过程,能够运用需求分析工具进行需求收集和分析。
2. 教学内容软件需求分析的基本概念;需求分析的方法和过程;需求分析工具的使用。
3. 教学方法采用讲授法和实例分析,让学生了解和掌握需求分析的方法和过程。
4. 教学资源教材、课件、实例分析。
5. 教学评价通过课堂提问和实例分析,评估学生对需求分析的理解和应用能力。
三、第三章:软件设计1. 教学目标掌握软件设计的基本概念、方法和过程,能够运用设计工具进行软件架构和详细设计。
2. 教学内容软件设计的基本概念;设计方法和过程;设计工具的使用。
3. 教学方法采用讲授法和实例分析,让学生了解和掌握软件设计的方法和过程。
4. 教学资源教材、课件、实例分析。
5. 教学评价通过课堂提问和实例分析,评估学生对软件设计的理解和应用能力。
四、第四章:软件实现1. 教学目标掌握软件实现的基本概念、方法和过程,能够运用编程语言进行软件编码和测试。
2. 教学内容软件实现的基本概念;实现方法和过程;编程语言和测试工具的使用。
3. 教学方法采用讲授法和编程实践,让学生了解和掌握软件实现的方法和过程。
4. 教学资源教材、课件、编程环境和测试工具。
5. 教学评价通过编程实践和测试结果,评估学生对软件实现的理解和应用能力。
五、第五章:软件维护1. 教学目标掌握软件维护的基本概念、方法和过程,能够进行软件维护和优化。
2. 教学内容软件维护的基本概念;维护方法和过程;软件优化技巧。
软件工程的基本原理和理论

软件工程的基本原理和理论软件工程是一门涉及软件开发、运行和维护的学科,它旨在通过系统化的方法和工具,提高软件的质量,保证软件项目的成功实施。
软件工程的基本原理和理论是软件工程师必备的知识体系,以下是软件工程的基本原理和理论的介绍。
一、软件生命周期管理软件生命周期是指从软件项目的规划、需求分析、设计、编码、测试到运行和维护的整个过程。
软件生命周期管理是软件工程实践的基础,它通过阶段划分、活动规划和质量保证等手段,确保软件项目按时交付、质量可控。
二、需求工程需求工程是软件工程的第一步,它涉及对用户需求的收集、分析、规范和管理。
在需求工程中,软件工程师需要与客户密切合作,确保设计和实现的软件系统能够满足用户的需求。
三、软件设计原理软件设计是指将需求转化为可执行的软件系统的过程,软件设计原理是指在设计过程中需要遵循的基本原则和规范。
软件设计原理包括模块化、高内聚低耦合、迪米特法则等,这些原理帮助软件工程师设计出结构清晰、易于维护的软件系统。
四、编码与测试编码是将软件设计转化为可执行代码的过程,测试是验证代码是否符合需求和设计的过程。
在编码和测试阶段,软件工程师需要熟悉编程语言、掌握良好的编码风格,同时进行单元测试、集成测试和系统测试等各个层面的测试工作。
五、软件质量保证软件质量保证是软件工程中非常重要的环节,它包括质量规划、质量控制和质量评估等方面。
软件工程师需要通过制定质量计划、进行代码审查、进行性能测试和安全漏洞扫描等手段,确保软件系统的质量符合要求。
六、软件项目管理软件项目管理是指对软件项目进行计划、组织、协调和控制的过程。
软件工程师需要掌握项目管理的基本理论和方法,对资源进行合理分配、制定时间表和风险管理来确保软件项目的成功实施。
七、软件配置管理软件配置管理是对软件开发过程中进行的各种变更进行有效控制的过程。
软件工程师需要使用版本控制工具和配置管理工具,对软件的开发、测试和发布进行管理,确保软件版本的一致性和可追溯性。
软件工程导论复习

软件工程导论复习软件工程导论---------------- 信计13-1 韩慧珊第一章软件工程学概述1、软件危机软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
2、软件工程及软件工程的特性1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
3、软件工程的基本原理1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审。
3.实行严格的产品控制4.采用现代程序设计技术。
5.结构应能清楚的审查。
6.开发小组的人员应该少而精。
7.承认不断改进软件工程实践的必要性。
4、软件工程方法学包含3个要素:方法、工具和过程。
使用最广泛的分别是传统方法学和面向对象方法学。
5、软件生存周期3个时期:软件定义、软件开发和运行维护。
软件定义:问题定义、可行性研究和需求分析。
开发时期:总体设计,详细设计,编码和单元测试,综合测试。
前两个阶段称为系统设计,后两个称为系统实现。
维护时期的主要任务是使软件持久的满足用户的需求。
6、瀑布模型模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。
它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。
因此,它是一种以文档作为驱动的模型。
瀑布模型特点:1.阶段间具有顺序性和依赖性。
2.推迟实现的观点。
3.质量保证的观点。
(以下看一下)快速原型:是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成功能的一个子集。
软件工程基本原理

1983年IEEE给软件工程旳定义:“软件工程是开发、 运营、维护和修复软件旳系统措施。” 强调“系统措施” 不是“个人技巧”。
计算机软件发展旳三个阶段及其特点
特点,阶段 程序设计
程序系统
软件工程
软件所指
主要程序设计 语言
软件工作范围
需求者
程序
汇编及机器语 言
程序编写
程序设计者
程序及阐明书 高级语言 设计和测试
少数顾客
程序、文档、 数据
软件语言*
整个软件生命 周期
市场顾客
开发软件旳组 织
软件规模
个人 小型
开发小组 中、小型
详细旳说:主要有下列某些体现: 1、对软件开发成本和进度旳估计经常很不精确; 2、顾客对已完毕旳软件系统不满意旳现象经常发生; 3、软件产品旳质量经常靠不住; 4、软件经常是不可维护旳; 5、软件一般没有合适文档资料; 6、软件成本在计算机系统总成本中中所占旳百分比逐年 上升; 7、软件开发旳生产率提升旳速度,既跟不上硬件发展旳 速度,也远远跟不上计算机应用普及进一步旳趋势。
1、软件不同于硬件:它是计算机系统中旳逻辑部件, 在写出程序代码并在计算机上运营之前,软件开发过程旳进 展情况较难衡量,软件开发旳质量也较难评价,所以管理和 控制软件开发过程相当困难。
2、软件在运营过程中不会因使用时间过长而被用坏, 假如运营中发觉错误,很可能是遇到了一种在开发时期引入 杂在测试阶段没能检测出来旳故障,所以软件维护一般意味 着改正或修改原来旳设计。
软件工程的基本原理

软件工程的基本原理软件工程是一门关于开发、维护和管理软件项目的学科,它涉及多个方面,包括需求分析、软件设计、编码、测试以及软件项目管理等。
在软件工程中,有一些基本原理被广泛应用,下面将对这些原理进行详细介绍。
1. 模块化原则在软件工程中,一个重要的原理是模块化。
模块化是指将一个软件系统分解成若干个相互独立的模块,每个模块具有清晰的功能和责任,并且可以独立地进行开发、测试和维护。
通过模块化的设计思想,可以提高软件的可维护性、可扩展性和重用性,从而提高软件开发的效率和质量。
2. 面向对象原则面向对象是软件工程中另一个重要的原则。
面向对象是一种软件设计范式,它将程序中的数据和操作进行封装,以对象的形式进行表示。
面向对象的设计思想提供了一种结构化的方法,可以使得软件开发更加灵活、可扩展和可维护。
通过面向对象的编程,可以提高代码的复用性,并且降低代码的复杂度。
3. 可靠性原则软件的可靠性是指软件在特定条件下的正确性和稳定性。
在软件工程中,为了提高软件的可靠性,需要进行合理的需求分析、严格的代码编写和全面的测试。
此外,软件的可靠性还需要考虑系统的安全性和兼容性等方面的需求。
通过遵循可靠性原则,可以有效地降低软件系统出现错误的概率,提高软件的质量和可信度。
4. 可维护性原则软件的可维护性是指在软件开发完成后,能够方便地进行软件的修改、调试和维护。
为了提高软件的可维护性,需要遵循一些原则和最佳实践。
比如,使用清晰易懂的命名规范、编写易于阅读的代码、进行良好的文档记录等。
通过提高可维护性,可以减少软件维护过程中的时间和成本。
5. 迭代开发原则迭代开发是一种软件开发的方法论,它将软件开发过程分为若干个迭代周期,在每个迭代周期中,完成一部分功能的开发、测试和交付。
通过迭代开发的方式,可以快速响应用户的需求变化,并且及时进行产品的修正和优化。
迭代开发的原则也包括持续集成、持续交付和持续测试等,它们都旨在提高软件开发的效率和质量。
软件工程第01章

教学目的:1. 了解软件、软件危机等概念2. 掌握软件工程的定义、原理、目标和原则教学重点:软件工程的定义、原理、目标和原则教学难点:软件工程的目标和原则第一章软件与软件工程1.1 软件(Software)1.1.1 软件与软件的组成程序设计语言三种类型:1.机器语言、汇编语言:依赖于机器,面向机器2.高级语言:独立于机器,面向过程或面向对象3.面向问题语言:独立于机器,非过程式语言(4GL)文档(document)—一种数据媒体和其上所记录的数据。
文档记录软件开发活动和阶段成果,具有永久性,可供人或机器阅读。
文档可用于专业人员和用户之间的通信和交流;软件开发过程的管理;运行阶段的维护。
1. 软件的特点软件是逻辑产品,硬件是物理产品。
特点:(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
软件开发、设计几乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:1)纠错性维护—改正运行期间发现的潜伏错误;2)完善性维护—提高或完善软件的性能;3)适应性维护—修改软件,以适应软硬件环境的变化;4)预防性维护—改进软件未来的可维护性和可靠性。
(5)软件不会磨损和老化。
2. 软件的发展第一阶段——20世纪60年代中期以前,软件开发处于个体化生产状态。
在这一阶段中,软件还没有系统化的开发方法。
目标主要集中在如何提高时空效率上。
第二阶段——从20世纪60年代中期到70年代末期。
软件开发已进入了作坊式生产方式,即出现了“软件车间”。
软件开发开始形成产品。
到20世纪60年代末,“软件危机”变得十分严重。
第三阶段——从20世纪70年代中期到20世纪80年代末期。
软件开发进入了产业化生产,即出现了众多大型的“软件公司”。
在这一阶段,软件开发开始采用了“工程”的方法,软件产品急剧增加,质量也有了很大的提高。
软件工程各章名词解释

名词解释一个三分 五个十五分第一章 绪论1. 软件2. 文档3. 软件工程4. 软件工程过程5. 软件生存周期6. 软件生存周期模型第二章 软件可行性研究与项目开发计划1. 投资回收2. 纯收人第三章 软件需求分析1. 需求分析2. 数据流3. 数据字典4. 加工5. 数据流图第四章 软件概要设计1. 模块2. 模块化3. 抽象4. 信息隐蔽5. 模块独立性6. 耦合性7. 无直接耦合8. 数据耦合9. 标记耦合10. 控制耦合11. 公共耦合12. 内容耦合13. 内聚性14. 偶然内聚15. 逻辑内聚16. 时间内聚17. 通信内聚18. 顺序内聚19. 功能内聚第五章 软件详细设计1. PAD2. 过程设计语言(PDL)第六章 软件编码1. 程序设计风格2. 程序可移植性第七章 软件测试1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 路径覆盖7. 环路复杂性8. 黑盒测试9. 白盒测试10. 驱动模块11. 桩模块12. 单元测试13. 集成测试14. 确认测试15. 调试第八章 软件维护1. 维护2. 校正性维护3. 适应性维护4. 完善性维护5. 预防性维护6. 软件可维护性第九章 软件开发的增量模型1. 原型第十章 面向对象的方法1. 对象2. 类3. 消息4. 方法5. 继承性6. 单重继承7. 多重继承8. 多态性9. 抽象10. 信息隐藏11. 链12. 关联第十一章 软件质量与质量保证1. 软件可靠性2. 效率3. 可维护性4. 可移植性5. 可互操作性6. 适应性7. 可重用性8. 软件设计质量9. 软件程序质量10. 冗余第十二章 软件工程管理1. 软件配置管理2. 软件配置项3. 基线4. 文档第十三章 软件开发环境1. 软件开发环境2. 软件工具3. CASE4. CASE生存期5. CASE工作台软件工程自考名词解释答案第一章 绪论1. 计算机程序及其说明程序的各种文档.2. 文档是有关计算机程序功能,设计,编制,使用的方案或图形资料.3. 用科学知识和技术原理来定义,开发,维护软件的一门学科.4. 软件工程过程规定了获取,供应,开发,操作和维护软件时,要实施的过程,活动和任务.5. 软件生存周期是指一个软件从得出开发要求开始直到该软件报废为止的整个时期.6. 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型.第二章 软件可行性研究与项目开发计划1. 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间.2. 在整个生存周期之内的累计经济效益(折合成现在值)与投资之差.第三章 软件需求分析1. 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非不甘落后将用户非不甘落后 需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程.2. 数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成.3. 数据字典(Data Dic onary, 简称DD)就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的,无二义性的说明方式为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述.4. 加工又称为数据处理,是对数据流进行某些操作或变换.5. 数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程.第四章 软件概要设计1. 模块在程序中是数据说明,可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合,分解和更换的单元.2. 模块化是指解决一个复杂问题自顶向下逐层把软件系统划分成若干模块的过程.每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个要求的功能.3. 抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素.4. 信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的.5. 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单.6. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程序的一种度量.7. 无直接耦合指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息.8. 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.9. 标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名,记录名,文件名等这些名字即为标记,其实传递的是这个数据结构的地址.10. 控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关,标志等),被调模块通过该控制变量的值有选择地执行块内某一功能.11. 公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合.公共数据环境可是是全程变量或数据结构,共享的通信,内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享外部设备分类为外部耦合).12. 当一个模块直接使用另一个模块的内部数据,或通过非正常口转入另一个模块内部,这种模块之间的耦合为内容耦合.13. 内聚块又称块内联系指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.14. 偶然内聚指一个模块内的各处理元素之间没有任何联系.15. 逻辑内聚指模块内执行个逻辑上相似的功能,通过参数确定该模块完成哪一个功能.16. 把需要同时执行的动作组合在一起形成的模块为时间内聚模块.17. 通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据.18. 顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入.19. 功能内聚指模块内所有元素共同完成一个功能,缺一不可.因此模块不能再分割.第五章 软件详细设计1. PAD图指问题分析图(Problem Analysis Diagram),是一咱算法描述工具,它是一种由左往右展开的二维树型结构.PAD图的控制流程为自上而下,从左到右地执行.2. 过程设计语言(Process Design Language,简称PDL),也称程序描述语言(Program Descrip on Language),又称为伪码.它是一种用于描述模块自法设计和处理细节的语言.第六章 软件编码1. 程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等.2. 指程序从一个计算机环境移值到另一个计算机环境的容易程序.第七章 软件测试1. 语句覆盖是指设计足够的测试用例,使被测程序中每个语句至少执行一次.2. 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次”真”和”假”值,从而使程序的每一个分支至少都通过一次.3. 条件覆盖指设计足够的测试用例,使得判定表达工中每个条件的各种可能的值出现一次.4. 判定/条件覆盖标准指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次.5. 条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次.6. 路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径.7. McCabe定义程序图的环路为程序图中区域的个数.区域个数为边和结点圈定的封闭区域数加上图形外的区域数1.8. 黑盒测试是功能测试又称为功能测试或数据驱动测试.9. 白盒测试是对程序中尽可能多和逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致.10. 驱动模块是用来模拟被测模块的上级调用模块的模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被模块,接收被测模块的测试结果并输出.11. 桩模块用来代替被测试模块所调用的模块它的作用是返回被测模块所需的信息.12. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误.13. 集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行测试,故也称组装测试或联合测试.14. 确认测试又称有效性测试.是为了检查软件的功能与性能是否与需求规格说明书中确定的指标相符合所进行的测试.15. 调试是为了确定错误的原因和位置,并改正错误所进行的工作,因此调试也称为纠错.第八章 软件维护1. 在软件运行/维护阶段对软件产品所进行的修改就是维护.2. 为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护.3. 随着计算机的飞速发展,计算机硬件,软件及数据环境在不断发生变化,为了使应用软件适应这种变化而修改软件的过程称为适应性维护.4. 在犯罪分子件运行时期中,用户往往会对软件提出新的功能要求与性能要求.这种增加软件功能,增强软件性能,提高软件运行效率而进行的维护活动称为完善性维护.5. 为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护.6. 软件可维护性是指软件能够被理解,校正,适应及增强功能的容易程度.第九章 软件开发的增量模型1. 软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性.第十章 面向对象的方法1. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则,计划或事件.2. 具有相同或相似性质的对象的抽象就是类具有相同或相似性质的对象的抽象就是类3. 对象之间进行通信的构造叫做消息.4. 类中操作的实现过程叫做方法,一个方法有方法名,参数,方法体.5. 继承性是子类自动共享父类数据结构和方法的机制这是类之间的一种关系.6. 在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承.7. 在类层次中,子类继承了多个父亲的数据结构和方法,称为多重继承.8. 多态性是指相同的操作或函数,过程可作用于多用户种类型的对象上并获得不同结果.不同的对象收到同一消息可以产生不同的结果,这种现象称为多态性.9. 抽象是指强调实体的本质,内在的属性,忽略一些无关紧要的属性.10. 信息隐蔽是指所有软件部件内部都有明确的范围以及清楚的外部边界每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离.11. 链表示对象间的物理与概念联结.12. 关联表示类之间的一种关系,就是一些可能的链的集合.第十一章 软件质量与质量保证1. 软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度.2. 为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度.3. 找到并改正程序中的一个错误所需代价的程度.4. 将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量.5. 将一个系统耦合到另一个系统所需的工作量.6. 修改或改进一个已投入运行的软件所需工作量的程度.7. 一个软件能再次用于其他相关应用的程度.8. 设计的规格说明书要符合用户的要求.9. 程序要按照设计规格说明所规定的情况正确执行.10. 冗余是指实现系统规定功能是多余的那部分资源,包括硬件,软件,信息和时间.第十二章 软件工程管理1. 软件配置管理,简称SCM,是一组管理整个软件生存期各阶段中变更的活动是一组管理整个软件生存期各阶段中变更的活动2. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位.3. 基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果.4. 文档是指某种数据媒体和其中所记录的数据.在软件工程中,文档用来表示对需求,工程或结果进行描述,定义,规定,报告或认证的任何书面或图示的信息.它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令.第十三章 软件开发环境1. 软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成.2. 软件工具是指为支持计算机软件的开发,维护,模拟,移植或管理而研制的程序系统.3. CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发.4. 一个组织中的CASE系统从被始需求到完全废弃这一生存期.5. 一个CASE工作台是一组工具集,支持像设计,实现或测试等特定的软件开发阶段.。
软件工程-课程目录-大纲视图(全国高等教育自学考试指定教材-计算机网络专业-独立本科)

第一章绪论1.1 软件工程概念的提出与发展1.2 软件开发的本质1.3 本章小结第二章软件需求与软件需求规约2.1 需求与需求获取2.1.1需求定义2.1.2 需求分类2.1.3 需求发现技术2.2 需求规约2.2.1 需求规约定义2.2.2 需求规约(草案)格式2.2.3 需求规约(规格说明书)的表达2.2.4 需求规约的作用2.3 本章小结第三章结构化方法3.1 结构化需求分析3.1.1 基本术语1.数据流2.数据存储3.数据源和数据谭3.1.2 系统功能模型表示数据流图(Dataflow Diagram)3.1.3 建模过程1.建立系统环境图, 确定系统语境2.自顶向下, 逐步求精, 建立系统的层次数据流图3.定义数据字典数据流条目给出所有数据流的结构定义数据存储条目给出所有数据存储的结构定义数据项条目给出所有数据项的类型定义4.描述加工(1)结构化自然语言(2)判定表(3)判定树3.1.4 应用中注意的问题(1)模型平衡问题(2)信息复杂性控制问题3.1.5 需求验证3.2 结构化设计3.2.1 总体设计1.总体设计的目标及其表示(1)Yourdon提出的模块结构图(2)层次图(3)HIPO图2.总体设计步骤(1)变换型数据流图——变换设计(2)事物型数据流图——事物设计3.模块化及启发式规则(1)模块化1)耦合①内容耦合②公共耦合③控制耦合④标记耦合⑤数据耦合2)内聚①偶然内聚②逻辑内聚③时间内聚④过程内聚⑤通信内聚⑥顺序内聚⑦功能内聚(2)启发式规则1)改进软件结构, 提高模块独立性2)力求模块规模适中3)力求深度、宽度、扇出和扇入适中4)尽力使模块的作用域在其控制域之内5)尽力降低模块接口的复杂度6)力求模块功能可以预测3.2.2 详细设计1.结构化程序设计2.详细设计工具(1)程序流程图(2)盒图(N-S图)(3)PAD图(Problem Analysis Diagram)(4)类程序设计语言IPO图、判定树和判定表等也可以作为详细设计工具3.3 本章小结第四章面向对象方法——UML 4.1 UML术语表4.1.1 表达客观事物的术语1.类与对象1)类的属性(Attribute)2)类的操作3)关于类语义的进一步表达①详细叙述类的职责(Responsibility)②通过类的注解和/或操作的注解, 以结构化文本的形式和/编程语言, 详述注释整个类的语义和/或各个方法③通过类的注解或操作的注解, 以结构化文本形式, 详述注释各个操作的前置条件和后置条件, 甚至注释整个类的不变式④详述类的状态机⑤详述类的内部结构⑥类与其他类的协作4)类在建模中的主要用途①模型化问题域中的概念(词汇)②建立系统的职责分布模型③模型化建模中使用的基本类型2.接口(Interface)(1)采用具有分栏和关键字《interface》的矩形符号来表示(2)采用小圆圈和半圆圈来表示3.协作(Collaboration)4.用况(Use Case)5.主动类(Action Class)6.构件(Component)7.制品(Artifact)8.节点(Node)4.1.2 表达关系的术语1.关联(Association)(1)关联名(Name)(2)导航(3)角色(Role)(4)可见性(5)多重性(Multiplicity)(6)限定符(Qualifier)(7)聚合(Aggregation)(8)组合(Composition)(9)关联类(10)约束①有序(ordered)②无重复对象(set)③有重复对象(bag)④列表(list)或序列(sequence)⑤只读(readonly)2.泛化(Generalization)①完整(Complete)②不完整(Incomplete)③互斥(Disjoint)④重叠(Overlapping)3.细化(Realization)4.依赖①绑定(Bind)②导出(Derive)③允许(Permit)④实例(InstanceOf)⑤实例化(Instantiate)⑥幂类型(Powertype)⑦精化(Refine)⑧使用(Use)可模型化以下各种关系(1)结构关系1)以数据驱动2)以行为驱动(2)继承关系(3)精化关系(4)依赖关系4.1.3 表达组合信息的术语——包1)访问(Access)2)引入(Import)4.2 UML模型表达格式1.类图(Class Diagram)(1)模型化待建系统的概念(词汇), 形成类图的基本元素(2)模型化待建系统的各种关系, 形成该系统的初始类图(3)模型化系统中的协作, 给出该系统的最终类图(4)模型化逻辑数据库模式2.用况图(Use Case Diagram)所包含的内容(1)主题(Subject)(2)用况(Use Case)(3)参与者(Actor)(4)关联、泛化与依赖模型化工作1)关于系统/业务语境的模型化①系统边界的确定②参与者与用况的交互③参与者的语义表达④参与者的结构化处理2)关于系统/业务需求的模型化①确定系统/业务的基本用况②用况的结构化处理③用况的语义表达3.状态图(1)状态1)名字2)进入/退出效应(Effect)①entry②exit③状态内部转移3)do动作或活动4)被延迟的事件(2)事件1)信号(Signal)事件2)调用(Call)事件3)时间事件4)变化事件(3)状态转移①源状态②转移触发器③监护(guard)条件④效应(effect)⑤目标状态实际应用中, 使用状态图的作用①创建一个系统的动态模型②创建一个场景的模型4.顺序图(1)术语解析1)消息2)对象生命线3)聚焦控制(the Focus of Control)(2)控制操作子1)选择执行操作子(Operator for Optional Execution)2)条件执行操作子(Operator for Conditional Execution)3)并发执行操作子(Operator for Parallel Execution)4)迭代执行操作子(Operator for Iterative Execution)4.3 本章小结第五章面向对象方法——RUP5.1 RUP特点1.以用况为驱动2.以体系结构为中心3.迭代增量式开发5.2 核心工作流5.2.1 需求获取1.列出候选需求2.理解系统语境(1)业务用况模型(2)业务对象模型3.捕获系统功能需求(1)活动1: 发现并描述参与者(2)活动2: 发现并描述用况(3)活动3: 确定用况的优先级(Priority)(4)活动4: 精化用况(5)活动5: 构造用户界面原型1)用户界面的逻辑设计2)物理用户界面的设计3)开发用户界面原型并演示为了执行该用况, 用户怎样使用该系统(6)活动6: 用况模型的结构化5.2.2 需求分析1.基本术语(1)分析类(Analysis Class)1)边界类(Boundary Classes)2)实体类(Entity Classes)3)控制类(Control Classes)(2)用况细化(Use Case Realization)(3)分析包(Analysis Package)2.分析模型的表达3.分析的主要活动(1)活动1: 体系结构分析(Architectural Analysis)1)任务1: 标识分析包2)任务2: 处理分析包之间的共性3)任务3: 标识服务包4)任务4: 定义分析包的依赖5)任务5: 标识重要的实体类6)任务6: 标识分析包和重要实体类的公共特性需求(2)活动2: 用况分析1)任务1: 标识分析类①标识实体类②标识边界类③标识控制类2)任务2: 描述分析(类)对象之间的交互(3)活动3: 类的分析1)任务1: 标识责任2)任务2: 标识属性①关于实体类属性的标识②关于边界类属性的标识③关于控制类属性的标识3)任务3: 标识关联和聚合①关于关联的标识②关于聚合的标识③关于泛化的标识(4)活动4: 包的分析4.小结(1)关于分析模型1)分析包2)分析类3)用况细化(2)关于分析模型视角下的体系结构描述(3)用况模型和分析模型比较(4)分析模型对以后工作的影响1)对设计中子系统的影响2)对设计类的影响3)对用况细化[设计]的影响5.2.3 设计1.设计层的术语(1)设计类(Design Class)(2)用况细化[设计](3)设计子系统(4)接口(Interface)2.设计模型、部署模型以及相关视角下的体系结构描述(1)设计模型及其视角下的体系结构描述1)子系统结构2)对体系结构有意义的设计类3)对体系结构有意义的用况细化[设计](2)部署模型及该模型视角下的体系结构描述3设计的主要活动(1)活动1: 体系结构的设计1)任务1: 标识节点和它们的网络配置2)任务2: 标识子系统和它们的接口①标识应用子系统②标识中间件和系统软件子系统③定义子系统依赖④标识子系统接口3)任务3: 标识在体系结构方面有意义的设计类和它们的接口4)任务4: 标识一般性的设计机制①标识处理透明对象分布的设计机制②标识事务管理的设计机制(2)活动2: 用况的设计1)标识参与用况细化的设计类2)标识参与用况细化的子系统和接口(3)活动3: 类的设计1)任务1: 概括描述设计类2)任务2: 标识操作3)任务3: 标识属性4)任务4: 标识关联和聚合5)任务5: 标识泛化6)任务6: 描述方法7)任务7: 描述状态(4)活动4: 子系统的设计1)任务1: 维护子系统依赖2)任务2: 维护子系统所提供的接口3)任务3: 维护子系统内容4.RUP设计小结1)RUP设计的突出特点2)关于RUP的设计方法①给出用于表达设计模型中基本成分的4个术语, 包括子系统, 设计类, 接口, 用况细化[设计]②规约了设计模型的语法, 指导模型的表达③给出了创建设计模型的过程以及相应的指导3)RUP的设计模型①设计子系统和服务子系统②设计类(其中包括一些主动类), 以及他们具有的操作、属性、关系及其实现需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
——软件开发工程化! ——软件开发工程化! 软件开发工程化
2011-10-20
§1-2 软件工程
什么是软件工程 软件工程的基本原理 软件工程方法学
2011-10-20
一、软件工程
什么是软件工程?
软件工程是指导计算机软件开发和维护的 软件工程是 工程学科。 软件工程是以系统的、工程的概念、原理、 软件工程是 技术和方法开发和维护软件,把先进的管 理技术和开发技术相结合,经济地开发出 高质量的软件并有效地维护它。 软件工程是1968年NATO在计算机科学家 国际会议上首次提出来。
2011-10-20
问题出在哪里? 问题出在哪里?
项目没有被很好地理解;计划不周,最 终导致进度拖延; 文档资料不充分,使人与人的交流变得 比写程序困难得多; 缺少度量软件可靠性(reliability) 的标准, 质量无法保证; 软件难以维护(maintainability) , 不易升 级(evolvability);
2011-10-20
软件本身是复杂的 实际问题的复杂性 程序逻辑结构的复杂性 Windows95程序超过1000万行 程序超过1000 例1 Windows95程序超过1000万行 军事和控制系统项目, 3500多人花费 例2 军事和控制系统项目, 3500多人花费 了几年时间,交付后相继发现了100 100个错 了几年时间,交付后相继发现了100个错 误,最后以失败告终。 最后以失败告终。
2011-10-20
三、产生危机的原因
1. 软件需求巨增! 软件需求巨增! 2. 软件通用性不强 3. 软件难于度量
2011-10-20
产生危机的原因
4. 用户与软件开发者之间难以沟通 5. 软件难以维护: 没有适当的文档资料; 软件的维护是修改原来的设计; 6. 软件开发受硬件的限制 7. 软件是定做而不是组装; 8. 没有工程化的管理和方法。
2011-10-20
软件的投入费用越来越高
2011-10-20
三、软件的发展过程
50至60年代 程序设计阶段 — 50至60年代 60至70年 程序系统阶段 — 60至70年 70年代以后 软件工程阶段 — 70年代以后
2011-10-20
计算机50年的发展
早期 第二代 第三代 第四代
•面向批处理 •多用户 面向批处理 多用户 •有限的分布 •实时 有限的分布 实时 术 •自定义软件 •数据库 自定义软件 数据库 •软件产品 软件产品 •分布式系统 •桌面系统 分布式系统 桌面系统 •嵌入“智能” 嵌入“ •面向对象技 嵌入 智能” 面向对象技 •低成本硬件 •专家系 低成本硬件 专家系统 专家系 •消费者的影响 •人工神经网络 消费者的影响 人工神经网络 •并行计算 并行计算 •网络计算机 网络计算机 1980 1990 2000
费 用
T
人的生命周期
贡献 费用
效 益
软件生命周 期
T
2011-10-20
小结: 小结:
什么是软件危机?解决软件危机的途径? 软件危机是指在计算机软件的开发和维护过 程中所遇到的一系列严重的问题; 程中所遇到的一系列严重的问题 软件工程化 软件生命周期都有几部分组成? 软件定义、 软件定义、软件开发和软件维护 几个重要的概念: 几个重要的概念: 软件工程、软件危机、 软件工程、软件危机、软件生命周期
为什么要研究软件生命周期?
!生命周期的全过程决定了软件工程的任务。 生命周期的全过程决定了软件工程的任务。 生命周期的三个组成部分:软件定义、软件 开发、软件运行与维护。 生命周期的六个步骤:制定计划、需求分析、 设计、程序编码、测试及运行维护。
2011-10-20
为什么称为软件生命周期? 为什么称为软件生命周期?
2011-10-20
必须意识到: 必须意识到: 软件
≠ 编程
2011-10-20
软件系统的开发与建造高楼大厦、 软件系统的开发与建造高楼大厦、制造 飞机导弹同理,需要工程化方法和工具。 飞机导弹同理,需要工程化方法和工具。
2011-10-20
二、软件危机的主要特征
对软件开发的成本和进度估计常常不准确; 用户对“已完成的” 软件系统不满意; 软件质量不可靠; 软件系统常常不可维护; 软件没有适当的文档资料; 软件成本在计算机系统总成本不断上升; 软件生产率的提高速度既比不上硬件的发展, 也跟不上计算机应用迅速普及深入的趋势。
一个好的工业,应该有一 一个好的工业, 套良好的标准来配套。 套良好的标准来配套。
工具 过程
软件的工业化生产过程应具备的特点: 软件的工业化生产过程应具备的特点: 明确的工作步骤 详细具体的规范化文档 明确的质量评价标准
2011-10-20
软件工程层次图: 软件工程层次图:
管理:支持软件工程的根 管理: 基在于对质量的关注。 过程: 过程:过程将技术层结合 在一起,使计算机软件 合理并及时开发出来。 方法: 方法:涵盖一系列的任务: 分析、设计、编程、测 试和维护。 工具: 工具:对过程、方法提供 自动或半自动的支持。 例:CASE软件工程环境。
2011-10-20
共 43 页
第13页
中国软件产业面临挑战与机遇
外国软件渗透 软件开发投资力度不足 软件侵权行为 软件人才结构不合理,缺乏高级系统 程序员和项目负责人。 软件人员缺乏软件工程化的概念。
2011-10-20
共 43 页
第14页
!
软件已经从特定的问题 解决和信息分析工具演化为 一门独立的产业! 需要解决的新问题:er的定义:软件工程是为了经 Bauer的定义:软件工程是 济地获得可靠的并能高效运行的软件, 而建立和使用的完善的工程化原则。 IEEE的定义:软件工程是 IEEE的定义:软件工程是开发、运行、 维护和修复软件的系统方法。 将系统化的、规范的、可度量的方法应 用于软件的开发、运行和维护的过程。
2011-10-20
项目负责人F. Brooks事后总结了他 项目负责人F. D. Brooks事后总结了他 在组织开发过程中的沉痛教训时说: 在组织开发过程中的沉痛教训时说:“... 正像一只逃亡的野兽落到泥潭中做垂死的 挣扎,越是挣扎,陷得越深, 挣扎,越是挣扎,陷得越深,最后无法逃 脱灭顶的灾难。...程序设计工作正像这 脱灭顶的灾难。...程序设计工作正像这 样一个泥潭,...一批批程序员被迫在泥 样一个泥潭,...一批批程序员被迫在泥 潭中拼命挣扎,...谁也没有料到问题竟 潭中拼命挣扎,...谁也没有料到问题竟 会陷入这样的困境... IBM360操作系统 ...”。 会陷入这样的困境... 。IBM360操作系统 的历史教训成为软件开发项目的典型事例 为人们所记取。 为人们所记取。
2011-10-20
软件工程方法学的分类
传统方法学 生命周期方法学(结构化范型) 采用结构化技术完成软件开发的各项任务 面向对象方法学 面向对象方法=对象+类+继承+用消息通信
2011-10-20
软件生命周期( 软件生命周期( life cycle )
什么是软件生命周期?
——软件孕育、诞生、成长、成熟、 软件孕育、诞生、成长、成熟、 软件孕育 衰亡的生存过程。 衰亡的生存过程。
软件为什么要工程化? 软件为什么要工程化? 软件产品如何工程化? 软件产品如何工程化?
2011-10-20
第一章 软件工程概述
软件危机 软件工程
2011-10-20
软件及其特点
什么是软件 软件的特点 软件的发展
2011-10-20
一、什么是软件
软件 是计算机系统中与硬件相互依存的另 一部分,它是包括程序, 一部分,它是包括程序,数据及其相关文 档的完整集合。 档的完整集合。 程序 是按事先设计的功能和性能要求执行 的指令序列。 的指令序列。 数据 是使程序能正常操纵信息的数据结构 是与程序开发、 文档 是与程序开发、维护和使用有关的图 文材料。 文材料。
2011-10-20
改正一个问题需付出的代价
2000 的 估 计 费 用 题 个 问 200 20 需 0.5 量 题 作 一 工 问 正 计 个 改 1000 5.0 2.5 的 估 一 正 改
0.05 (人/天)
2011-10-20
共 43 页
第25页
如何维护已有的软件? 如何维护已有的软件?如何使软件的 开发速度适应越来越大的软件需求? 开发速度适应越来越大的软件需求? 解决问题的途径
2011-10-20
计算机辅助软件工程。 集成了软件、硬件和 一个软件工程数据库 (仓库),形成了软 件工程环境。
工具( 工具(CASE) ) 方法(任务) 方法(任务) 过程(构建框架) 过程(构建框架) 质量管理(基础) 质量管理(基础)
软件工程的一般视图: 软件工程的一般视图:
软件工程完成对技术实体(计算机软 件)的分析、设计、建造、验证和管理。 软件工程必须回答的问题: 要解决的问题是什么? 实体有哪些特点? 如何实现? 如何建造? 如何及时发现错误? 如何维护?
2011-10-20
故
故障率曲线
率 故 障 率 时间 故障率曲线 故 障 率
障
理想曲线
时间 故障率曲线
实际曲线
时间 故障率曲线
2011-10-20
软件是自定义的。 软件是自定义的。他不能通过已有的构件 组装而来。 组装而来。 软件对计算机系统有一定的依赖性。 软件对计算机系统有一定的依赖性。其开 发和运行常受到计算机系统的限制。 发和运行常受到计算机系统的限制。 软件成本昂贵
2011-10-20
二、软件工程基本原理
Boehm提出了软件工程的7条基本原理: 用分阶段的生命周期计划严格管理; 坚持进行阶段评审; 实行严格的产品控制; 采用现代程序设计技术; 结果应能清楚地审查; 开发人员应该少而精; 承认不断改进软件工程实践的必要性