软件工程导论
软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
《软件工程导论》课程教学大纲(5篇)

《软件工程导论》课程教学大纲(5篇)第一篇:《软件工程导论》课程教学大纲《软件工程导论》课程教学大纲课程编号:课程中文名称:软件工程导论课程英文名称:Introduction of Software Engineering 总学分:2 总学时: 36 讲课学时:36习题课学时:0 实验学时:0 上机学时:0 授课对象:软件工程专业本科先修课程:程序设计课程要求:必修课课程分类:专业基础课一、课程教学目的随着计算机技术的发展,软件的规模越来越大,软件的结构越来越复杂,软件开发与维护的难度也越来越高,软件的质量难以保证,软件开发与维护的进度和成本难以控制,这就要求有一种科学的方法指导软件的开发与维护工作。
软件工程就是这样一种指导软件开发和维护的工程学科。
通过本课程的学习,使学生了解软件工程的概念、原理和技术,初步掌握软件开发的基本方法和常用工具,建立软件开发和维护的工程化意识,培养独立思考的能力和团队合作的精神,为后续相关课程的学习以及从事软件开发与维护的实际工作打下良好的基础。
二、教学内容及基本要求教学内容:1.课程内容简介(1学时)本课内容简介,基本要求和目标,教学方法,学习方法,教材(英1 文原版)的主要内容及使用,中文参考教材简介2.软件工程的基本概念(4学时)软件工程的基本概念,软件危机产生的原因,软件危机面临的问题及解决方法,什么是好的软件以及软件的质量的概念,实施软件工程的人员,软件工程的系统方法,软件工程的工程方法,软件工程的发展3.过程建模与生命周期(4学时)过程的概念,软件过程模型,软件生命周期,各种常用的软件过程模型,过程建模的工具和技术 4.软件项目计划与管理(4学时)软件项目进展跟踪,软件项目的人员,工作量的估算,风险管理,项目计划,项目管理 5.需求获取(4学时)需求过程,需求的类型,需求的特征,需求的表示方法,原型需求法,需求文档,需求过程的参加人员,需求确认,需求度量,需求表示方法的选择,表示需求的工具。
《软件工程导论》课程教学大纲

《软件工程导论》课程教学大纲软件工程导论课程教学大纲一、课程介绍软件工程导论课程致力于介绍软件工程的基本概念、原理和技术,帮助学生了解软件开发的整体流程以及相关的管理和质量控制方法。
通过本课程的学习,学生将掌握软件工程的基本理论和实践技能,为日后的软件项目开发奠定坚实的基础。
二、教学目标1. 让学生了解软件工程的发展历程和重要性,并理解软件工程在实际应用中的作用。
2. 掌握软件工程的基本概念和核心原理,包括需求分析、设计、编码、测试和运维等方面。
3. 学会运用常见的软件工程方法和工具,提高软件开发的效率和质量。
4. 培养学生的团队合作能力和项目管理能力,使其能够适应未来的软件开发工作。
三、教学内容1. 软件工程导论1.1 软件工程的定义和背景1.2 软件工程的发展历程1.3 软件工程的重要性和挑战2. 软件生命周期2.1 软件生命周期模型2.2 软件需求与分析2.3 软件设计与体系结构2.4 软件编码与测试2.5 软件维护与升级3. 需求工程3.1 需求获取与分析3.2 需求规格说明3.3 需求验证与验证4. 软件设计4.1 结构化设计原理4.2 面向对象设计原理4.3 软件设计工具和方法5. 软件测试5.1 测试的基本概念和原理5.2 测试用例设计和执行5.3 软件缺陷的管理和修复6. 软件项目管理6.1 软件项目计划与组织6.2 软件项目进度控制与风险管理6.3 软件质量管理和配置管理四、教学方法1. 理论讲授:通过课堂讲解,介绍软件工程的基本概念、原理和方法。
2. 实践操作:引导学生使用常见的软件工程方法和工具进行实践,加深对软件开发流程的理解。
3. 项目实践:组织学生进行小型软件项目开发,培养团队合作和项目管理能力。
4. 讨论与互动:鼓励学生在课堂上提问和讨论,促进知识的深入理解和应用。
五、评价方式1. 平时表现:包括课堂参与、作业完成情况、实践操作等。
2. 课程项目:对学生参与的实际软件开发项目进行评估。
软件工程导论

软件工程导论软件工程导论是计算机科学与技术专业的一门基础课程,旨在介绍软件工程的基本概念、原理和方法,培养学生系统地了解和运用软件工程知识的能力。
本文将从软件工程的定义、发展历程、重要性以及学习软件工程导论的意义等方面进行论述。
一、软件工程的定义与发展历程软件工程是一门将系统化、可量化、规范化的方法应用于软件的开发、运行和维护的学科。
它涉及到一系列工程原则、方法和工具,旨在实现高质量、高效率和可靠性的软件系统。
软件工程的发展可以追溯到20世纪60年代,当时人们开始意识到软件开发和维护的问题,并提出了软件工程的概念。
二、软件工程的重要性1. 促进软件开发过程的规范化和标准化。
软件工程通过制定规范和标准,使开发过程更加规范化,提高开发效率和质量。
2. 提高软件系统的可维护性和可靠性。
软件工程注重系统设计和模块化,使得软件系统易于维护和扩展,同时保证系统的可靠性和稳定性。
3. 降低软件开发的成本和风险。
软件工程强调项目管理和风险管理,有效地控制开发进度和成本,并降低开发过程中的风险。
4. 提升团队协作能力和沟通效率。
软件工程强调团队合作和沟通,在项目开发过程中促进团队成员之间的合作,提高开发效率和质量。
三、学习软件工程导论的意义学习软件工程导论对计算机科学与技术专业的学生具有重要的意义。
1. 增强对软件工程的整体认识。
软件工程导论课程通过介绍软件工程的基本概念和原理,使学生了解软件工程的全貌,帮助他们建立起对软件工程的整体认识,为后续的学习和实践打下基础。
2. 掌握软件开发的基本方法和技术。
软件工程导论课程涉及到软件开发的基本方法和技术,如需求分析、系统设计、编码与测试等,学生通过学习这些内容,能够掌握软件开发的基本流程和技能。
3. 培养系统思维和工程意识。
软件工程导论课程强调系统思维和工程意识的培养,学生通过学习软件工程导论,能够培养出综合性思维和解决问题的能力,提高工程实践能力。
4. 增强团队协作和沟通能力。
(完整word版)软件工程导论(第6版)

第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。
2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。
5.软件通常没有适当的文档材料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。
软件配置:程序、文档和数据。
软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。
软件:是程序、数据及相关文档的集合。
程序:是能够完成预定功能和性能的可执行的指令序列。
数据:是使程序能够适当地处理信息的数据结构。
文档:是开发、使用和维护程序所需要的图文资料。
软件工程:指导计算机软件开发和维护的一门工程学科。
软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审。
3.实行严格的产品控制4.采用现代程序设计技术。
5.结构应能清楚的审查。
6.开发小组的人员应该少而精。
7.承认不断改进软件工程实践的必要性。
软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。
《软件工程导论》课件

定义
软件维护是指在软件运行过程中,为了改 正错误、满足新的需求或改进性能等目的 ,对软件进行的修改和调整。
预防性维护
为了提高软件的可维护性和可靠性而进行 的维护活动。
改正性维护
为了纠正软件中存在的错误而进行的维护 活动。
完善性维护
为了扩充和增强软件功能而进行的维护活 动。
适应性维护
为了使软件适应外部环境的变化而进行的 维护活动。
介绍如何评估软件架构的合理性 、可扩展性和可维护性,以及如 何根据业务需求和系统规模选择 合适的架构。
架构设计原则
强调架构设计时应遵循的几个重 要原则,如模块化、开放-封闭原 则、单一职责原则等。
数据设计
数据模型
介绍常见的数据模型,如关系模型、面向对象模型、键-值存储模型等,以及它们的应 用场景和优缺点。
02
03
界面设计原则
交互设计
强调界面设计时应遵循的几个重 要原则,如用户友好、一致性、 可用性等。
介绍常见的交互方式,如按钮、 菜单、对话框等,以及如何通过 良好的交互设计提高用户体验。
05
CHAPTER
软件测试
单元测试
总结词
单元测试是对软件中的最小可测试单元进行检查和验 证,通常以函数或方法为单位进行测试。
详细描述
单元测试主要关注软件中的细节问题,检查单个函数 或方法的正确性、性能和边界条件等。通过单元测试 ,可以尽早发现代码中的错误和缺陷,提高软件质量 。
集成测试
总结词
集成测试是在单元测试的基础上,将多个模块或组件 组合在一起进行测试,以验证它们之间的集成是否正 常工作。
详细描述
集成测试的主要目的是检查模块之间的接口和通信是否 正常,以及是否存在潜在的缺陷或问题。通过集成测试 ,可以确保软件在组合时能够正常工作,满足设计要求 。
软件工程导论教案

软件工程导论教案一、教学目标1. 熟悉软件工程的基本概念、原理和方法;2. 掌握软件工程的过程模型和相关的管理工具;3. 了解软件工程中的项目管理、需求分析、软件设计、编码和测试等基本知识;4. 培养学生的软件工程思维、分析和解决问题的能力。
二、教学内容1. 软件工程导论概述1.1 软件工程的定义和发展历程1.2 软件工程的基本概念1.3 软件开发的生命周期模型2. 软件开发过程2.1 瀑布模型2.2 增量模型2.3 螺旋模型2.4 敏捷开发3. 软件项目管理 3.1 项目计划3.2 项目组织3.3 项目进度管理3.4 项目风险管理4. 软件需求分析 4.1 需求获取4.2 需求分析4.3 需求规格说明5. 软件设计5.1 结构化设计 5.2 面向对象设计5.3 设计原则与模式6. 软件编码和测试6.1 编码规范6.2 软件测试基本概念6.3 软件测试方法三、教学方法本课程的教学方法主要采用理论教学相结合的方式,注重理论知识与实践应用的结合。
教师将通过讲解理论知识、解析案例、讨论问题等方式,引导学生理解和掌握软件工程的基本概念、原理和方法。
同时,教师还会组织一些实践活动,如小组讨论、项目实践等,让学生能够亲身体验软件工程的实际应用。
四、教学评价1. 平时成绩:包括出勤情况、参与讨论和实验、作业完成情况等;2. 期中考试:主要测试学生对软件工程基本概念、原理和方法的理解程度;3. 期末考试:主要测试学生对软件工程的整体掌握情况,包括过程模型、项目管理、需求分析、软件设计和测试等方面的知识。
五、教学参考书1. 《软件工程导论》(第5版)邹欣李晓霞高山等著2. 《Software Engineering: A Practitioner's Approach》(第9版)Roger S. Pressman 著3. 《软件工程导论与实践》(第3版)邹欣曹文渊温晓华著六、教学进度安排1. 第1周:软件工程导论概述2. 第2周:软件开发过程-瀑布模型3. 第3周:软件开发过程-增量模型4. 第4周:软件开发过程-螺旋模型5. 第5周:软件开发过程-敏捷开发6. 第6周:软件项目管理7. 第7周:软件需求分析8. 第8周:软件设计9. 第9周:软件编码和测试10. 第10周:复习11. 第11周:期中考试12. 第12周:课堂讨论13. 第13周:小组项目实践14. 第14周:总结复习15. 第15周:期末考试注:以上教学进度安排仅供参考,实际教学进度可根据学生的学习情况进行调整。
软件工程导论重点内容

第一章软件工程概述重点掌握的内容:软件和软件工程的基本概念一.什么是软件1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;软件的特点:软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性;软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工的开发方式软件的开发费用越来越高,成本相当昂贵;二.软件危机以及产生软件危机的原因1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势;软件产品“供不应求”;2.软件成本在计算机系统总成本中所占的比例逐年上升;3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生;4.软件产品的质量不容易保证;5.软件产品常常是不可维护的;6.软件产品的重用性差,同样的软件多次重复开发;7.软件通常没有适当的文档资料;产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术;三、软件危机1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题;2、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;3、软件危机的典型表现:1对软件开发成本和进度的估计常常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;软件工程1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程;软件工程准则可以概括为7条基本原则:用分阶段的生命周期计划严格管理;坚持进行阶段评审实行严格的产品控制采用现代程序设计技术应能清楚地审查结果合理安排软件开发小组的人员承认不断改进软件工程实践的必要性3、软件工程方法学,三要素:方法、工具和过程4、软件生命周期概念、三时期,八阶段软件生命周期由软件定义、软件开发和运行维护也称为软件维护3个时期组成;软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析;软件开发时期分为4阶段:总体设计、详细设计、编码和单元测试、综合测试五、软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护实施的全部工作和任务的结构框架;1瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开;特点阶段的顺序性和依赖性规范化推迟实现的观点系统化质量保证阶段评审存在问题不适合需求模糊的系统需求的迷糊性和不确定性适用于操作系统、编译系统、数据库管理系统等系统软件的开发快速原型模型:所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌3增量模型:是瀑布模型的顺序特征与快速原型法德迭代特征相结合的产物;这种模型把软件看成一系列相互联系的增量,在看法过程的各次迭代中,每次完成其中的一个增量;4喷泉模型5微软过程六、思考:你认为“软件就是程序”这一个观点正确吗如果不正确,请批驳之;1.请从以下几个方面结合自己的经验实例加以论述;软件就是程序的观点是不正确的,因为软件等于程序加文档加数据;1文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用;2在软件开发的每一个阶段都应有相应的文档;它是开发人员与用户以及开发人员与项目管理人员之间交流的媒介3文档是软件在不同阶段的表现形式;4程序与文档必须一致,文档才有价值;5文档质量直接决定软件质量的高低;6文档也是软件测试和维护的依据;在没有文档或文档不全的情况下对大型软件进行测试与维护是不可思议的事情;7文档是软件可重用的依据;2、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大;对否请解释你的回答;答:对,第二章可行性研究重点掌握的内容:可行性研究的系统流程图一般内容:可行性研究的任务和步骤,成本效益分析一、可行使研究:1、可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决;一般来说,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性可行性研究的目的:在明确了所要研究问题定义之后,分析员应该在明确目标系统所有限制和约束的前提下,去确定该问题是否值得去解决;或就是用最小代价在尽可能短的时间内确定问题是否能够解决;2、可行性研究过程:1)复查系统规模和目标2)研究目前正在使用的系统3)导出新系统的高层逻辑模型4)进一步定义问题5)导出和评价供选择的解法6)推荐行动方针7)草拟开发计划8)书写文档提交审查3、系统流程图的定义和作用:可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直观简洁;系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件程序、文件、数据库、表格、人工过程等;系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程;在可行性研究过程中,利用系统流程图来描述所建议系统的物理模型;4、数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性;抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况;概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体5、数据流程图的组成元素数据流图可以用来抽象地表示系统或软件;它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节;因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型;6、数据流程图的组成:外部实体外部实体是指系统之外的人或单位,它们和本系统有信息传递关系数据流,处理、数据存储;如何绘制数据流程图1识别系统的输入和输出,画出顶层图2画系统内部的数据流、加工与文件,画出一级细化图3加工的进一步分解,画出二级细化图4其它注意事项7、数据流程图的注意点1每个处理都必须有流入的数据流和流出的数据流,如果没有,是错误的;数据守恒2每个数据存储应该有流入的数据流和流出的数据流,如果缺了一种,是Warning的;缺两种就错了;3、数据流只能在处理与处理、数据存储或者外部实体之间流动;、数据存储到数据存储、外部实提到外部实体、外部实提到数据存储之间的数据流都是错误的;4、一个处理可以细分成多个子处理,分成若干个层次均匀分解5、良好命名系统流程图与数据流程图有什么区别答:1系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具;2系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况;3数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况;三、数据流图:1、组成符号:4中基本图形符号正方形、圆角矩形、开口矩形2、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”;3、一套分层的的数据流图由顶层、底层、和中间层组成;4、画分层数据流图基本原则与注意事项:a.自外向内,自顶向下,逐层细化,完善求精;b.保持父图与子图的平衡;也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和名字上相同;c.保持数据守恒;也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据;d.加工细节隐藏;根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节;e.简化加工间关系;在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目;f.均匀分解;应该使一个数据流中的各个加工分解层次大致相同;g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字;h.忽略枝节;应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题;i.表现的是数据流而不是控制流;j.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读;小结:一个软件系统,其数据流图往往有多层;如果父图有N个加工Process,则父图允许有0~N张子图,但是每张子图只能对应一张父图;在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同;DFD信息流大致可分为两类:交换流和事务流;9、数据字典1.数据字典是在数据流程图的基础上,对数据流程图中的各个元素进行详细的定义与描述,起到对数据流程图进行补充说明的作用;2.数据字典的内容包括:数据流、数据流分量即数据元素、数据存贮、处理逻辑和外部实体;3.数据字典的作用是什么对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型;数据字典的实现:P4910、成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资与这项开发工程的决定;几种度量效益的方法:货币的时间价值、投资回收期、纯收入第三章需求分析一、重点掌握的内容那:需求分析的方法和面向数据流的分析方法二、一般掌握的内容:需求分析的任务和原则三知识点:1、为什么要做需求分析可行性分析研究阶段已经粗略的描述了用户的需求,甚至还提出了一些可行的方案,但是,许多细节被忽略了,在最终目标系统中是不能忽略、遗漏任何一个微小细节的,所以,可行性研究不能代替需求分析;2、需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型;3、需求分析的任务:它的基本任务是准确地回答“系统必须做什么”这个问题;需求分析所要做的工作是深入描述软件的共能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求;需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求;其实现步骤如下图所示:一般说来需求分析阶段的任务包括下述几方面:1)确定对系统的综合需求对系统的综合需求主要有:系统功能需求、系统性能需求、可靠性和可用性需求、错处理需求、接口需求、约束、逆向需求、将来可能提出的需求:2)分析系统的数据需求就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型;具体做法:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图一般为数据流图及对象图进行调整;最后有外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型;通常用数据流图、数字字典和主要的处理算法描述这个逻辑模型;3)导出系统的逻辑模型4)修正系统开发计划在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确地估计,在此基础上应该对开发计划进行修正;5开发原型系统:使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出他们的要求;4、需求分析的步骤:1调查研究2分析与综合3书写文档4需求分析评审5、需求分析的原则:1、必须能够表达和理解问题的数据域和功能域2、按自顶向下、逐层分解问题3、要给出系统的逻辑视图和物理视图6、软件需求的验证:需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求;为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性;一般说来,应该从下述4个方面进行验证:1一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾;2完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能;3现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的;对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性;4有效性必须证明需求是正确有效的,确实能解决用户面对的问题;7、状态转换图:指明了作为外部事件结果的系统行为;为此,状态转换图描绘了系统的各种行为模式称为“状态”和在不同状态间转换的方式;状态转换图是行为建模的基础;思考:利用DFD图进行需求分析:在结构化分析方法中,用以表达系统内数据的运动情况的工具有A;供选择的答案:A.数据流图B.数据词典C.结构化英语D.判定表与判定树在结构化分析方法中用状态―迁移图表达系统或对象的行为;在状态―迁移图中,由一个状态和一个事件所决定的下一状态可能会有A个;供选择的答案:多个D.不确定五、总体设计概要设计重点掌握的内容:概要设计的过程和方法一般掌握的内容:概要设计的文档和评审考核知识点:一、总体设计:1、总体设计的目的:总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计;1、面向结构设计SD2、面向对象设计OOD2、总体设计的任务:1系统分析员审查软件计划、软件需求分析提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家沈顶峰,审定后进入设计2去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块;确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略;3编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具;选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等3、总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;4、典型的总体设计过程包括下述9个步骤:1、设想功选择的方案2、选取合理的方案3、推荐最佳方案4、功能分解5、设计软件6、设计数据库7制定测试计划8、书写文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果;9、审查和复审二、设计原理分析模块化,在模块化程序设计中,按功能划分模块的原则是,模块化和软件成本关系:模块具有输入和输出参数传递、功能、内部数据结构局部变量和程序代码四个特性1、模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.2、模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了. 模块化和软件成本关系:根据总成本曲线,每个程序都相应地有一个最适当的模块数目M,,使得系统的开发成本最小.3、模块设计的准则:1改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合;2模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中;3软件结构图的深度、宽度、扇入和扇出要适当;一般模块的调用个数不要超过5个;4尽量降低模块接口的复杂程度;5设计单入口、单出口的模块;6模块的作用域应在控制域之内;4、抽象的概念:抽出事务的本质特性而暂时不考虑它们的细节.5、信息隐蔽:模块中所包括的信息不允许其它不需这些信息的模块调用信息局部化:是把一些关系密切的软件元素物理地放得彼此靠近6、什么是模块独立性答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准;7、模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中的其它的模块接口是简单的;模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果;8、为什么模块的独立性很重要答:1有效的模块化的软件比较容易开发出来2独立的模块比较容易测试和维护;总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节;9、衡量模块独立的两个标准是什么它们各表示什么含义10、答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性;1耦合性;也称块间联系;指软件系统结构中各模块间相互联系紧密程度的一种度量;模块之间联系越紧密,其耦合性就越强,模块的独立性则越差;模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息;2内聚性;又称块内联系;指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量;若一个模块内各元素语句之间、程序段之间联系得越紧密,则它的内聚性就越高;耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础;模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则;10、启发规则:1)改进软件结构提高模块独立性2)模块规模应该适中3)深度、宽度、扇出、、和扇入都应适当深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度;宽度是软件结构内同一个层次上的模块总数的最大值;一般来说,宽度越大系统越复杂;对宽度影响最大的因素是模块的扇出;一个模块的扇入是指直接调用该模块的上级模块的个数;一个模块的扇出是指该模块直接调用的下级模块的个数;设计原则:低扇出、高扇入;4)模块的作用域应该在控制域内5)力争降低模块接口的复杂程度6)设计单入口和单出口的模块7)模块功能应该可以预测三、概要设计的方法:1、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法;面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构;2、数据流图的类型:交换型结构和事务型结构交换型结构:由3部分组成,传入路径,变换中心,输出路径系统的传入流经过变换中心的处理,变换为系统的传出流;事务型结构:有至少一条接受路径,一个事务中心与若干条动作路径组成;当外部信息沿着接受路径进入系统后,经过事务中心获得某个特定值,就能据此启动某一条动作路径的操作;四、结构化设计1、结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构域接口;2、结构化方法的步骤:1复审DFD图,必要时刻再次进行修改或细化:2鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型;3按照SD方法规定的一组规则,吧DFD图转换为初始的SC图;变换型DFD图初始SC图事务型DFD图初始SC图3、结构设计的优化规则:1对模块分割、合并和变动调用关系的指导规则:以提高模块独立性为首要标准,除此之外,适当考虑模块的大小;2保持高扇/入低扇出原则3作用域/控制域规则:作用域不要超出控制域的范围;软件系统的判定,其位置离受它控制的模块越近越好;六、详细设计重点掌握的内容:详细设计的任务和方法一般掌握的内容:详细设计的原则和详细设计的规格与评审。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件的特点
§0.软件概论
❖ 软件是一种逻辑实体,而不是具体的物理 实体。因而它具有抽象性
❖ 软件的生产与硬件不同,在它的开发过程 中没有明显的制造过程
❖ 在软件的运行和使用期间,没有硬件那样 的机械磨损,老化问题
13
§0.软件概论
14
§0.软件概论
软件的开发和运行常受到计算机系统的限制, 对计算机系统有着不同程度的依赖性
2
教材
软件工程导论(第四版)
张海藩 清华大学出版社(2003)
软件工程
3
参考书目
实用软件工程 (第二版)
郑人杰 殷人昆 陶永雷 清华大学出版社(1996)
软件工程
软件工程 -实践者的研究方法 (英译版 第五版)
Roger S. Pressman 机械工业出版社
4
软件工程
课程评分方法
大作业 30% + 期末考试 70% = 总评 100%
19
按软件规模进行划分:
§0.软件概论
类别 参加人员数 研制期限 源程序行数
微型 1
1~4周
0.5k
小型 1
1~6月 1k~2k
数值计算或数据处理. 通常没有与其它程序的 接口。需要按一定的标准化技术、正规的资料书写
以及定期的系统审查。只是没有大题目那样严格。
中型 2~5
1~2年 5k~50k
应用程序和系统程序。软件人员之间、与用户
软件的开发至今尚未完全摆脱手工艺的开发 方式
软件本身是复杂的 实际问题的复杂性
程序逻辑结构的复杂性 软件成本相当昂贵 相当多的软件工作涉及到社会因素
15
§0.软件概论
16
软件的分类
§0.软件概论
❖ 按软件的功能进行划分:
系统软件
使计算机系统各个部件、相关软件和数据协调、 高效地工作的软件
1
《软件工程》
近二十年来计算机软件已经成为现代科学 研究和解决工程问题的基础,以及管理部门、 生产部门、服务行业中的关键因素,渗透到了 各个领域,成为当今世界不可缺少的一部分。
展望二十一世纪,软件仍将成为驱动任何事 情, 从基础教育到遗传工程取得新进展的动力。
学习研究工程化的软件开发方法,使开发 过程更加规范,是我们学习的目标和动力。
极大型 2000~5000 5~10年 1M~10M
军事指挥、弹道导弹防御系统。
21
只是对软件工程技术依赖的程度不同而已。
§1.软件危机 (Software Crisis)
在60年代中期以前:
个体化软件开发方法. 用户 程序员(编写者=使用者),无文档 资料
学会与他人合作,培养团队精神,单干 户将得不到成绩。
分组:班长组织
每组6-8人,选一个组长。
组长负责:组织、分工、安排进度、作业提交等。
作业提交: 每组一个, 但必须注明分工.
10
第一章 软件工程学概述
§0. 软件概论
▪ 什么是软件
▪ 软件的分类
▪ 软件的发展
§1. 软件危机
▪ 软件危机的表现
▪ 软件危机的原因
《软件工程》
软件业是决定21世纪国际竞争地位的战略 性产业,是信息时代的朝阳产业。
1.软件产业是信息产业的核心,是国际竞 争的焦点和战略制高点。
2. 软件关系到国家政治、经济和社会的安 全及民族文化的发扬光大。
3. 发展软件产业对优化我国产业结构、提 高经济运行质量具有极其重要的作用。
4.软件是国民经济建设中诸多关键技术的 基础。
§2. 软件工程
▪软件工程
▪软件工程的目的和要求
11
§0. 软件概论
❖ 软件是计算机系统中与硬件相互依存的另 一部分,它是包括程序,数据及其相关文 档的完整集合
❖ 程序是按事先设计的功能和性能要求执行 的指令序列
❖ 数据是使程序能正常操纵信息的数据结构 ❖ 文档是与程序开发,维护和使用有关的图
文材料
之间的联系、协调的配合关系。因而计划、资料书
写以及技术审查需要比较严格地进行。系统的软件
工程方法是完全必要的。
20
大型 5~20
2~3年 50k~§01.软00件k概论
编译程序、小型分时系统、实时控制系统等。二
级管理,若干小组,每组5人以下。人员调整往往不可
避免,新手的培训。采用统一的标准,实行严格的审查
及修改。
学生贷款管理(录入、删除及修改。查询) 学生保险管理(录入、删除及修改。查询) 学生就业管理(录入、删除及修改。查询) 学生勤工助学管理(录入、删除及修改。查询) 学生各种信息的多关键字检索查询。
7
能够对需要的统计结果提供打印输出。
能够提供一定的安全机制,提供数据信息 授权访问,防止随意删改,同时提供信息 备份的服务。
是绝对必要的。
甚大型 100~1000 4~5年 1M(=1024k)
若干个子项目,每一个子项目都是一个大型软件。
子项目之间具有复杂的接口。如远程通信系统、多任务
系统、大型操作系统、大型数据库管理系统、军事指挥
系统通常现有这样的规模。很显然,这类问题没有软件
工程方法的支持,它的开发工作是不可想象的。。
• 操作系统 • 数据库管理系统 • 设备驱动程序 • 通信处理程序等
17
§0.软件概论
支撑软件
协助用户开发软件的工具软件
• 文本编辑程序 • 文件格式化程序 • 磁盘向磁带进行数据传输的程序 • 程序库系统 • 支持需求分析、设计、实现、测试和支
持管理的软件 18
应用软件
§0.软件概论
• 商业数据处理软件 • 工程与科学计算软件 • 计算机辅助设计/制造软件 • 系统仿真软件 • 智能产品嵌入软件 • 医疗、制药软件 • 事务管理、办公自动化软件 • 计算机辅助教学软件
其它作业仅供参考。可通过email递交
考勤仅供参考,若抽查3次缺勤, 总成绩不及格
5
《学生管理系统》
StudentMis
大作业
❖ 《学生管理系统》针对的用户是学校学生 管理部门。相应的需求有:
能够存储一定数量的学生信息,并方便有 效的进行相应的学生数据操作和管理,主 要包括:
6
学籍管理
学生基本信息的导入、录入、删除及修改。 学生辅助信息(综合测评、奖励、处分等)的录入、删除
❖ 可选题目:
- 商业管理系统的分析、设计与实现
- 教务管理系统的分析、设计与实现
- 订票管理系统的分析、设计与实现
❖ 可以自选题目,但需要教师认可
8
应提交的文档
软件需求规格说明书 软件设计规格说明书
用户安装及使用手册 系统测试计划 演示程序 其它
9
目的
软件工程
体验软件工程各阶段的主要工作,特别 注意吸取教训;