软件工程第7章 软件维护与再工程
- 格式:pptx
- 大小:315.77 KB
- 文档页数:37
(一)课程内容第1节软件工程的产生第2节软件工程过程和软件生存周期第3节软件生存周期模型、方法和工具(二)考核知识点与考核要求第1节软件工程的产生1. 软件的特点,要求达到识记层次。
2. 软件生产的发展,要求达到识记层次3. 软件危机的产生、表现、原因,要求达到领会层次。
4. 软件工程的定义、性质、目标、内容、面临的问题,要求达到领会层次。
第2节软件工程过程和软件生存周期1. 软件工程过程概念,要求达到识记层次。
2. 软件生存周期概念,要求达到识记层次。
第3节软件生存周期模型、方法和工具1. 软件生存周期模型1.1 软件生存周期模型的定义、重要性,要求达到识记层次。
1.2 软件生存周期模型的作用、准则,要求达到识记层次。
1.3 瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型、基于知识的模型,要求达到识记层次。
2. 软件开发方法2.1 软件开发目标,要求达到识记层次。
2.2 方法的作用和重要性,要求达到识记层次。
2.3 结构化方法、Jackson方法、维也纳方法、面向对象方法,要求达到识记层次。
3. 软件开发工具3.1 工具的重要性,要求达到识记层次。
3.2 工具箱,要求达到识记层次。
3.3 开发环境,要求达到识记层次。
3.4 计算机辅助软件工程,要求达到识记层次。
第2章软件可行性研究与项目开发计划(一)课程内容第1节可行性研究第2节系统流程图第3节成本--效益分析第4节项目开发计划(二)考核知识点与考核要求第1节可行性研究1.可行性研究的任务,要求达到识记的层次。
2.可行性研究的具体步骤,要求达到领会层次。
第2节系统流程图,要求达到识记层次。
第3节成本--效益分析1.投资回收率达到识记层次。
2.回收期要求达到识记层次。
3.纯收入要求达到识记层次。
第4节项目开发计划,要求达到识记层次第3章软件需求分析(一)课程内容第1节需求分析的任务第2节结构化分析方法第3节数据流图(DFD)第4节数据字典(DD)第5节加工逻辑的描述第6节 IDEF方法第7节结构化分析方法小结(二)考核知识点与考核要求第1节需求分析的任务1.需求分析的概念,要求达到识记层次2.需求分析的基本任务,要求达到领会层次第2节结构化分析方法1.结构化分析方法,要求达到识记层次2.结构化分析步骤,要求达到领会层次第3节数据流图(DFD)1.数据流图,要求达到识记层次2.数据流图中的符号、画数据流图注意的事项,要求达到领会层次。
软件工程师中的软件维护与迭代随着科技的飞速发展,软件工程师的作用愈发突出。
在软件的生命周期中,软件维护与迭代是软件工程师不可或缺的一环。
本文将从软件维护与迭代的概念、目的与流程,以及软件工程师在其中的重要角色等方面进行探讨。
第一章软件维护的概念与目的软件维护是指对现有软件系统的修改、修正、增强和优化等活动。
其目的是确保软件系统能够持续运行并适应不断变化的需求。
1.1 软件维护的分类根据维护对象的不同,软件维护可分为以下几类:纠错性维护、适应性维护、完善性维护和预防性维护。
1.2 软件维护的重要性软件维护是保障软件系统稳定性和可用性的关键环节。
一个良好的软件维护能够提高软件系统的质量、可靠性和安全性。
第二章软件迭代的概念与流程软件迭代是指对软件系统的持续改进与优化。
通过不断迭代,软件系统能够跟上时代发展的步伐,适应用户需求的变化和市场竞争的挑战。
2.1 软件迭代的定义软件迭代是在软件系统中引入新功能、修复缺陷、改进性能等的过程。
它通常按照短期的开发周期来进行,以便及时响应用户的需求。
2.2 软件迭代的流程软件迭代通常包括以下几个关键步骤:需求收集与分析、系统设计、编码与测试、发布与反馈、优化与重构。
每个步骤都需要软件工程师的积极参与与协作。
第三章软件工程师在软件维护与迭代中的角色作为软件维护与迭代的关键参与者,软件工程师扮演着多重角色,发挥着重要作用。
3.1 需求专家软件工程师在软件维护与迭代过程中,负责收集用户反馈,理解用户需求,并将其转化为可行的技术方案。
3.2 架构师软件工程师在软件迭代中,负责设计系统的整体结构和架构,确保软件系统的可扩展性和可维护性。
3.3 开发者软件工程师在软件维护与迭代中,负责编码、调试和测试等具体的开发工作,确保软件系统的质量与稳定性。
3.4 测试人员软件工程师在软件迭代中,承担着软件系统的测试工作,确保新功能的正确性和可靠性。
3.5 故障处理专家软件工程师在软件维护中,负责处理系统故障和缺陷,确保及时修复并提供技术支持。
判断题:第1章概述1。
由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。
(×)2。
由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵.(×)4。
大多数软件产品在其生命周期中不需要增强功能。
(×)5。
大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
(×)第4章需求工程1. 在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。
(√)2. 软件需求规格说明书在软件开发中具有重要的作用,它是软件可行性分析的依据。
(×)第5章面向对象基础1. 模型是对现实的简化,建模是为了更好地理解所开发的系统。
(√)2。
UML语言支持面向对象的主要概念,并与具体的开发过程相关。
(×)第6章面向对象分析1. 面向对象分析的核心在于建立一个描述软件系统的模型。
(×)第7章软件体系结构设计1. 系统体系结构的最佳表示形式是一个可执行的软件原型。
(×)2. 软件体系结构描述是不同项目相关人员之间进行沟通的使能器.(√)3. 良好的分层体系结构有利于系统的扩展与维护。
(√)4。
消除两个包之间出现的循环依赖在技术上是不可行的.(×)5. 设计模式是从大量成功实践中总结出来且被广泛公认的实践和知识。
(√)第8章面向对象设计1。
面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型.(√)2。
系统设计的主要任务是细化分析模型,最终形成系统的设计模型.(×)3。
关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。
(×)4。
用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。
《软件工程》教学教案第一章:软件工程概述1.1 课程介绍解释软件工程的定义和目的强调软件工程的重要性1.2 软件生命周期介绍软件生命周期的各个阶段解释每个阶段的主要活动和任务1.3 软件工程原则介绍软件工程的基本原则解释每个原则的重要性和应用第二章:需求分析2.1 需求分析概述解释需求分析的定义和目的强调需求分析的重要性2.2 需求收集和分析方法介绍需求收集和分析的主要方法解释每个方法的特点和应用2.3 需求规格说明书解释需求规格说明书的定义和作用介绍编写需求规格说明书的方法和技巧第三章:软件设计3.1 软件设计概述解释软件设计的定义和目的强调软件设计的重要性3.2 设计方法和工具介绍常见的设计方法和工具解释每个方法的特点和应用3.3 设计评审解释设计评审的定义和作用介绍设计评审的流程和技巧第四章:编码和实现4.1 编码规范和技巧介绍编码规范的重要性和作用强调编码技巧和最佳实践4.2 编程语言选择解释编程语言选择的重要性介绍常见编程语言的特点和应用场景4.3 代码复查和测试解释代码复查的目的和作用介绍代码测试的方法和技巧第五章:软件维护5.1 软件维护概述解释软件维护的定义和目的强调软件维护的重要性5.2 维护活动和方法介绍软件维护的主要活动和任务解释每个方法的特点和应用5.3 维护策略和计划解释维护策略和计划的重要性介绍制定维护策略和计划的方法和技巧第六章:项目管理6.1 项目管理概述解释项目管理的定义和目的强调项目管理在软件工程中的重要性6.2 项目管理方法和工具介绍常见的项目管理方法和工具解释每个方法的特点和应用6.3 项目计划和监控解释项目计划的重要性介绍项目监控的方法和技巧第七章:软件测试7.1 软件测试概述解释软件测试的定义和目的强调软件测试的重要性7.2 测试方法和策略介绍常见的软件测试方法和策略解释每个方法的特点和应用7.3 自动化测试解释自动化测试的定义和优势介绍自动化测试工具和框架第八章:软件质量保证8.1 软件质量概述解释软件质量的定义和重要性强调软件质量保证的作用8.2 质量标准和模型介绍常见的软件质量标准和模型解释每个标准的特点和应用8.3 质量保证过程和活动解释质量保证的过程和活动介绍实施质量保证的方法和技巧第九章:软件工程伦理和法律9.1 软件工程伦理讨论软件工程师的职业道德和责任强调伦理在软件工程中的重要性9.2 软件法律和知识产权介绍软件法律和知识产权的基本概念解释软件法律保护的重要性9.3 合规性和风险管理解释合规性和风险管理的作用介绍实施合规性和风险管理的方法和技巧第十章:软件工程前沿技术10.1 和机器学习介绍和机器学习在软件工程中的应用强调这些技术对软件工程的影响10.2 云计算和大数据解释云计算和大数据的基本概念介绍这些技术在软件工程中的应用场景10.3 敏捷开发和DevOps解释敏捷开发和DevOps的基本概念强调这些方法对软件工程实践的影响重点和难点解析一、软件工程原则补充说明:软件工程原则是软件工程的基本指导思想,包括模块化、抽象化、逐步求精、局部化、一致性等原则。
软件工程简答题第一章绪论1.什么是软件危机?软件危机有什么表现?软件危机产生的原因是什么?答:所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的先有软件。
表现:(1)对于软件开发的成本和进度的估计很不准确。
(2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。
(3)开发的软件可靠性差。
(4)软件通常没有适当的文档资料。
(5)软件的可维护性差。
(6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
原因:软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,导致了软件危机。
2.简述软件的发展过程。
答:软件生产的发展划分为三个年代:(1)程序设计时代:这一时期,软件的生产主要是个体手工劳动的生产方式。
(2)程序系统时代:由于计算机的应用领域不断扩大,软件的需求也不断增长,软件由于处理的问题域扩大而使程序变得复杂,设计者不得不由个体手工劳动组成小集团合作,形成作坊式生产方式小集团合作生产的程序系统时代。
(3)软件工程时代:软件工程时代的生产方式是采用工程的概念、原理、技术和方法,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。
3.什么叫软件工程?软件工程是如何克服软件危机的?答:软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
为了克服软件危机,人们从其他产业的工程化生产得到启示,采用工程的概念、原理、技术和方法来开发和维护软件。
4.软件工程的目标是什么?软件工程有哪些原则?答:软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。
原则如下:抽象、模块化、信息隐藏、局部化、完整性、一致性和可验证性。
第1章概述(习题和参考答案)[推断题]1. 由于今日个人计算机不断发展壮大,人们不再接受软件团队的开发方式。
(×)2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵。
(×)4. 大多数软件产品在其生命周期中不须要增加功能。
(×)5. 大多数软件系统是不简洁变更的,除非它们在设计时考虑了变更。
(√)6. 一般来说,软件只有在其行为和设计者的目标一样的状况下才能成功。
(×)[选择题]1. ()因素促使计算机系统越来越困难。
(D)A. 计算机内存和存储容量上的巨大增长B. 外部输入/输出选项的更加多样性C. 计算机体系结构方面的深刻变更D. 以上全部选项2. 下面的()不再是现代软件工程师关注的问题。
(A)A. 为什么计算机硬件的成本这么高?B. 为什么软件须要很长时间才能完成?C. 为什么开发一个软件的成本这么高?D. 为什么不能在产品发布前去除软件错误?3. 软件会慢慢退化而不会磨损,其缘由在于()。
(C)A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在运用之后C. 不断的变更使组件接口之间引起错误D. 软件备件很难订购4. 大多数软件照旧是定制开发的,其缘由在于()。
(C)A. 软件组件重用是特别普遍的B. 可重用的组件太昂贵而无法运用C. 软件在不运用其他组件的状况下很简洁构造出来D. 商业组件在许多应用领域中可以得到5. 下面的()说法是正确的。
(C)A. 软件危机在20世纪70年头末期全面爆发B. 当前先进的软件工程方法已经解决了软件危机的问题C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严峻问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的基本目标是()。
(B)A. 消退软件固有的困难性B. 开发高质量的软件C. 努力发挥开发人员的创建性潜能D. 更好地维护正在运用的软件产品7. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
第一章软件工程概述名词解释1、软件危机“软件危机”是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括来说,软件危机包含两方面的问题:一是如何开发软件,以满足不断增长、日趋复杂的需求;二是如何维护规模不断膨胀的软件产品。
2、软件工程软件工程是一门综合性的交叉学科,它涉及哲学、计算机科学、工程科学、管理科学、数学等各学科的知识。
3、软件生命周期软件生命周期是指一个软件从提出开发要求开始,直到该软件报废为止的整个时期,通常分为可行性分析、需求分析、概要设计、详细设计、编码、测试和维护7个阶段。
简答题1、软件生命周期包括哪几个阶段?各阶段的主要任务是什么?软件生命周期包括可行性分析、需求分析、概要设计、详细设计、编码、测试和维护7个阶段。
①可行性分析主要任务:这一步骤必须回答的问题是“将要开发的软件系统是做什么的?在经济、技术和操作上是否可行?”具体来说,需要考虑的问题有:该软件项目的性质是什么,它是数据处理问题还是实时控制问题,它是科学计算问题还是人工智能问题等,以及该问题是否有行得通的解决办法,若有解决问题的办法,则需要多少费用,资源(包括硬件、软件和人员)及时间。
②需求分析主要任务:这一阶段主要解决系统“做什么”的问题。
客户了解他们所面对的问题,知道必须做什么,但是通常不能完整,准确地表达出来,也不知道怎样用计算机解决这些问题。
二软件开发人员虽然知道怎样用软件完成人们提出的各种功能要求,但是对客户的具体业务和需求不完全清楚,这是需求分析阶段的困难所在。
③概要设计主要任务:这一阶段主要解决系统“怎么做”的问题。
具体来说,开发人员要把确定的各项功能需求转换成相应的软件体系结构,在该结构中,每个成分都是意义明确的模块,即每个模块都和某些功能需求相对应。
因此,概要设计的核心内容就是设计软件的结构,弄清该结构由哪些模块构成,每个模块的功能是什么,这些模块之间的层次结构是怎样的。
同事,还要设计该应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样结构吗,它们之间有什么关系等。
软件⼯程习题答案第1章软件⼯程概述参考答案⼀. 选择题1. B2. A3. B4. B5. D6. B7. D8. A9. D⼆. 填空题1. 设计编码测试2. 软件费⽤可靠性可维护性可重⽤性及⽣产率等3. 计算机软件开发和维护4. 分解抽象和信息隐蔽⼀致性确定性5. 软件的总⽬标待开发软件的需求6. ⼆三7. 计划阶段开发阶段维护阶段8. 软件需求明确9. 制定计划风险分析开发实施⽤户评估三. 名词解释1. 软件的定义如下:在运⾏中能提供所希望的功能和性能的指令集,使程序能正确运⾏的数据结构,描述程序研制过程和⽅法所⽤的⽂档。
2. 软件⼯程是指导计算机软件开发和维护的⼀门学科。
3. 软件危机指的是软件开发和维护过程中遇到的⼀系列严重问题。
4. 就是从提出软件产品开始,直到该软件产品被淘汰的全过程。
5. 瀑布模型⼜称⽣存周期模型,由B.M.Boehm提出,是软件⼯程的基础模型。
其核⼼思想是按⼯序将问题化简,将功能的实现与设计分开,便于分⼯协作。
6. 螺旋模型将瀑布模型与演化模型结合起来,并且加⼊两种模型均忽略了的风险分析,弥补了两者的不⾜。
四. 简答题1. 软件既是知识产品,⼜是与汽车,建筑物⼀样的⼯业产品,此外,软件还具有类似艺术,学术那样的知识性创造和特点,软件的特点如下:软件是⼀种逻辑实体,⽽不是具体的物理实体,因⽽它具有抽象性;软件是通过⼈们的智⼒活动,把知识与技术转化成信息的⼀种产品,是在研制、开发中被创造出来的;在软件的运⾏和使⽤期间,没有硬件那样的机械磨损、⽼化问题;软件的开发和运⾏经常受到计算机系统的限制,对计算机系统有着不同程度的依赖关系;软件的开发尚未完全摆脱⼿⼯的开发⽅式;软件的开发费⽤越来越⾼,成本相当昂贵;软件的开发是⼀个复杂的过程,因⽽管理是软件开发过程中必不可少的內容。
2. 软件危机主要表现如下:产品不符合⽤户的实际需要;软件开发⽣产率提⾼的速度远远不能满⾜客观需要,软件的⽣产率远远低于硬件⽣产率和计算机应⽤的增长速度,使⼈们不能充分利⽤现代计算机硬件提供的巨⼤潜⼒;软件产品的质量差;对软件开发成本和进度的估计常常不准确;软件的可维护性差;软件⽂档资料通常既不完整也不合格;软件的价格昂贵,软件成本在计算机系统总成本中所占的⽐例逐年上升。
《软件工程基础》习题集答案 -2第一章概述1.什么是软件危机,它有哪些典型表现?所谓“软件危机”就是,在计算机软件的开辟和维护过程中所遇到的一系列严重的问题,概括起来归纳为:如何开辟软件,以满足日益增长、日益复杂的需要;如何维护数量不断膨胀的已有软件。
软件危机的典型表现主要有: a.开辟成本和进度不能准确估计b.开辟出来的软件不能满足用户的要求c.软件的可维护性差d.软件质量不可靠e.软件成本在系统中的比重逐年上升f.软件开辟生产率的提高速度不够2.简述产生软件危机的原因和解决的思路。
软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开辟、维护的方法不正确有密切关系。
解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
即采用工程化的原则和方法组织软件开辟是摆脱软件危机的一个主要出路。
3.什么是软件工程?它有哪些本质特性?软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开辟和维护的学科。
其实质就是用工程的概念、原理、技术和方法,结合有效的管理方法和先进的开辟技术,开辟与维护软件,以解决软件危机。
4.软件工程是如何用来消除软件危机的?软件工程是从技术和管理两个方面来研究如何更好地开辟和维护计算机软件,从源头上消除软件危机。
6.简述软件的定义。
软件=程序+数据+文档7.软件工程的目的是什么?为高质量的软件开辟提供一个科学的体系框架。
8.什么是软件工程方法学?软件工程是一种什么样的技术?包括哪三大要素?分为哪三个分支?软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开辟技术方法的集合。
目前,使用最广泛的软件工程方法学分别是传统方法学和面向对象方法学。
软件工程作为一种层次化的技术,有方法、工具和过程三大要素,并由于其涉及学科内容的极其广泛,而分为三个分支:软件开辟技术、软件项目管理技术、软件质量管理技术。
9.简述软件工程的基本原理。
软件工程有 7 条基本原理:1.严格按照软件生命周期计划进行管理 2.坚持进行阶段评审 3.实行严格的产品控制4.采用先进的程序设计技术 5.结果应能清晰的审查 6.开辟小组成员应少而精7.承认不断改进软件工程实践的必要性10.软件工程的基本开辟原则有哪些?软件工程的基本开辟原则有: 1.模块化2.抽象和信息隐蔽3.模块的高内聚和低耦合 4.确定性 5.一致性 6.完备性11.构成软件工程的基本元素有哪些?除了前面给出的软件工程三大要素,还应该包括控制和质量保证。