第11章+软件工程..
- 格式:pdf
- 大小:604.50 KB
- 文档页数:63
红岩第11章主要内容在软件工程中,软件是指计算机程序和相关数据的集合。
它是通过对问题进行建模和分析,设计解决方案并实施的过程中产生的。
软件工程是一门跨学科的学科,涉及计算机科学、数学、工程学和管理学等多个领域。
软件工程的目标是开发高质量、可靠、易维护和可扩展的软件系统。
为了实现这些目标,软件工程采用了一系列有效的方法和技术,并遵循一定的开发过程。
软件工程的主要任务包括需求分析、系统设计、编码、测试和维护等。
需求分析是软件工程的第一步,它的目标是明确用户的需求和期望。
在这个阶段,软件工程师与用户进行沟通,收集并分析用户的需求,制定软件的功能和性能要求。
需求分析的结果是需求规格说明书,它描述了软件系统的功能和性能要求。
系统设计是软件工程的第二步,它的目标是将需求规格转化为软件系统的结构和组织。
在这个阶段,软件工程师设计软件系统的架构,确定模块和组件的接口,定义数据结构和算法。
系统设计的结果是设计文档,它描述了软件系统的结构和组织。
编码是软件工程的第三步,它的目标是将系统设计转化为可执行的程序代码。
在这个阶段,软件工程师根据设计文档编写程序代码,并进行测试和调试。
编码的结果是可执行的程序代码,它实现了软件系统的功能和性能要求。
测试是软件工程的第四步,它的目标是验证软件系统是否符合需求规格。
在这个阶段,软件工程师设计测试用例,并运行这些测试用例来检查软件系统的功能和性能。
测试的结果是测试报告,它描述了软件系统的缺陷和问题。
维护是软件工程的最后一步,它的目标是修复软件系统中的缺陷和问题,并进行改进和优化。
在这个阶段,软件工程师对软件系统进行故障排除,并进行性能调优和功能扩展。
维护的结果是修复和改进后的软件系统,它能够满足用户的需求和期望。
除了上述的主要任务,软件工程还涉及项目管理、质量保证、配置管理和文档管理等方面。
项目管理是为了确保软件工程的进度和质量,质量保证是为了确保软件系统的质量和可靠性,配置管理是为了控制软件系统的变更,文档管理是为了记录和传播软件工程的知识和经验。
判断题:第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章第2章第11章软件工程学概述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 软件工程方法学软件工程包括技术和管理两方面的内容。
软件工程第11章软件重用在软件工程的领域中,软件重用是一项具有重要意义和价值的理念与实践。
它就像是在建筑领域中重复使用标准化的建筑材料和设计模块,能够极大地提高软件开发的效率、质量和可维护性。
软件重用,简单来说,就是在新的软件开发项目中,重复使用已有的软件元素,这些元素可以是代码、设计、文档,甚至是测试用例等。
想象一下,如果每次盖房子都要从烧制砖头开始,那得多麻烦和低效。
同样的道理,在软件开发中,如果每次都要从头开始编写所有的代码,那不仅费时费力,还容易出错。
那么,软件重用到底有哪些好处呢?首先,它能显著提高开发效率。
当我们可以直接使用已经经过验证和优化的软件组件时,就不必再花费大量时间去重新开发类似的功能,从而大大缩短了开发周期。
其次,软件重用有助于提高软件的质量。
因为被重用的软件元素通常已经在之前的项目中经过了充分的测试和验证,其稳定性和可靠性相对较高。
再者,它能够降低开发成本。
减少了重复的开发工作,也就降低了人力、时间和资源的投入。
最后,软件重用还能增强软件的可维护性。
由于重用的部分具有一致性和标准化的特点,维护起来会更加容易。
然而,要实现软件重用,并不是一件简单的事情。
它需要我们在软件开发的整个过程中,建立起一套有效的管理和技术体系。
在需求分析阶段,我们就需要考虑是否有可以重用的软件组件能够满足当前项目的需求。
这就要求开发人员对已有的软件资源有充分的了解和掌握。
同时,还需要对新的需求进行准确的分析和评估,以确定哪些部分可以通过重用现有组件来实现,哪些部分需要进行新的开发。
在设计阶段,我们要设计出具有良好可重用性的软件架构。
这意味着架构应该具有清晰的层次结构、简洁的接口和高度的模块化。
这样的架构能够方便地将不同的软件组件组合在一起,同时也便于对单个组件进行替换和升级。
在编码阶段,开发人员需要遵循一定的规范和标准,以确保编写的代码具有良好的可读性、可维护性和可重用性。
代码的注释、命名规则、代码结构等方面都需要精心设计,以便其他开发人员能够轻松理解和使用。
第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.23.软件的设计按照软件工程的方法,各个阶段必须有相应文档记录,比如可行性分析报告,需求分析报告,详细设计要有流程图,编码有源代码(改进前后的)。
4.软件维护修改过程中,必须有文档记录修改原因.改进前后优缺点等内容。
5.软件不要求十分商业化,要求基本运行正确.无重大错误。
6.作业提交方式:最好设计完成后采用安装程序打包,可以发行。
将设计好的软件(运行版本或安装版本)、要求的设计文档报告和源程序(各阶段分目录保存)保存在软盘或刻成光盘或装订好文档提交,以供老师考查评分。
南京航空航天大学♦软件工程-实践者的研究方法(英文版第四版)Roger S. Pressman机械工业出版社南京航空航天大学12、了解:软件生存周期及软件开发的各种模型学习要点:•软件、软件工程、软件生存周期和软件开发模型学习内容:11.1 计算机软件概念11.2 软件工程概念11.3 软件开发模型•软件实践者的成功经验和失败教训的总结。
•本章主要介绍软件概念:定义、特点和分类、软件的发展、软件危机,软件生存周期、软件开发模型。
南京航空航天大学南京航空航天大学11.1.2 软件的特征11.1.3 软件的分类南京航空航天大学11.1.1 载体信息通信的基础,也是创建和控制其它程序的基础。
☆软件是计算机系统中与硬件相互依存的另一部分,它是能指示(指挥)计算机完成特定任务的、以电子格式存储的程序,数据及其相关文档的完整集合。
–程序是按事先设计的功能和性能要求执行的指令集。
–数据是使程序能够正确运行的数据结构。
–文档是描述程序研制过程、方法所用的有关的图文材料。
南京航空航天大学••产品,在它的开发过程中没有硬件明显的制造过程。
•在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题南京航空航天大学•的•软件的开发至今尚未完全摆脱手工艺的开发方式。
•软件的开发成本相当昂贵,开发费用越来越高。
•软件本身是复杂的的过程。
–实际问题的复杂性–程序逻辑结构的复杂性11.1.3 软件的分类1.基于软件的功能划分:系统、支撑、应用。
•系统软件用来有效地运行计算机系统、给应用软件开发与运行提供支持、为用户管理与使用计算机提供方便的一类软件。
如:操作系统:•数据库管理系统•设备驱动程序、•通信处理程序等主要特征:•与具体的应用领域无关,而与计算机硬件系统有很强的交互性,要对硬件共享资源进行调度管理。
•在任何计算机系统中,系统软件必不可少。
南京航空航天大学•文本编辑程序–文件格式化程序–磁盘向磁带进行数据传输的程序–程序库系统–支持需求分析、设计、实现、测试和支持管理的软件南京航空航天大学•应–工程与科学计算软件(Matlab )–计算机辅助设计/制造软件(CAD/CAM )–系统仿真软件(SIMULINK)–智能产品嵌入软件(LABVIEW)–医疗、制药软件(HIS)–事务管理、办公自动化软件(OFFICE)–计算机辅助教学软件(CAI)–商业数据处理软件(如财务软件)南京航空航天大学南京航空航天大学2. ••分时软件:轮流处理多个作业•交互式软件:良好的用户接口•批处理软件:作业处理的高吞吐量南京航空航天大学3.类•微•小型11~6月1k ~2k数值计算或数据处理,通常没有与其它程序的接口。
需要按一定的标准化技术、正规的资料书写以及定期的系统审查。
只是没有大题目那样严格。
•中型2~51~2年5k ~50k软件人员之间、与用户之间的联系、协调的配合关系。
因而计划、资料书写以及技术审查需要比较严格地进行。
应用程序和系统程序。
系统的软件工程方法是完全必要的。
南京航空航天大学大型•编译小组,统一的甚大型100~1000 4~5年1M(=1000k)•若干个子项目,每一个子项目都是一个大型软件。
子项目之间具有复杂的接口。
如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常都有这样的规模。
很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。
极大型2000~5000 5~10年1M ~10M •军事指挥、弹道导弹防御系统、航天工程。
只是对软件工程技术依赖的程度不同而已。
南京航空航天大学4.••一般可靠性软件5.基于软件服务对象的范围划分•分为定制(项目)软件•产品软件南京航空航天大学1.程序设2.程序系统阶段(60年代中期-70年代末期)软件=程序+说明(提出软件的概念)典型技术:多用户、实时、数据库、软件产品3.软件工程阶段(70年代中期并跨越近十年)典型技术:分布式系统、嵌入“智能”、低成本硬件、消费者的影响。
4.第四阶段(90年代-至今)典型技术:强大的桌面系统、面向对象技术、专家系统、人工神经网络、并行计算、网络计算机南京航空航天大学11.2.2 软件工程的研究内容南京航空航天大学•花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。
......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。
......Software Crisis !1.南京航空航天大学系列1、2、南京航空航天大学••客观需要。
•软件产品的质量差。
•对软件开发成本和进度的估计常常不准确。
•软件的可维护性差。
•软件文档资料通常既不完整也不合格。
•软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。
南京航空航天大学•一些–大间,大型项目平均超出计划交付时间20%到50%,90%以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高–美国政府审计局:只有不到2%的合同定购软件在发布时具有可用性——98%以上的项目都失败了南京航空航天大学••软件规模庞大,有技术问题,也有管理方法问题。
•开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需求。
•软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。
•在软件的开发和维护问题上存在错误的概念。
•软件项目超出费用和进度表目标普遍存在的原因是:目标本身完全是错误的。
南京航空航天大学•生命周期南京航空航天大学结构分析及结构设计技术。
软件工程的七条基本原理:•用分阶段的生命周期计划进行严格管理•坚持进行阶段评审•实行严格的产品控制•采用现代程序设计技术•结果应能清楚地审查•开发小组的人员应该少而精•承认不断改进软件工程实践的必要性南京航空航天大学•规范等软件工程学软件开发技术软件工程管理软件开发方法学软件工具软件工程环境软件管理学软件经济学软件度量学南京航空航天大学A B 式提出了规范化的要求和标准。
C 、软件开发工具是“帮助开发软件的软件”。
方法与工具相结合,再加上配套的软硬件支持,就形成了软件工程环境。
D 、软件工程管理的目的,是为了按照进度和预算完成软件计划,实现预期的经济和社会效益。
包括:计划管理、成本管理、质量管理、组织管理。
南京航空航天大学•软件工具与环境、软件工程标准与规范、软件开发技术与管理技术的相关理论。
*软件工程的原则为了开发出低成本高质量的软件产品,软件工程学应遵守下述基本原则:1.分解2.独立性3.一致性4.确定性南京航空航天大学•程即为计算机软件的生存期。
•软件生存周期的定义:是指从软件项目的提出,包括研制、运行、使用和维护,直到退役的整个时期。
南京航空航天大学••可行性研究•需求分析•设计(概要设计、详细设计)•编码•测试•运行与维护计划时期开发时期运行时期南京航空航天大学南京航空航天大学••开发时期:·需求分析--弄清系统具体“做什么?”·软件设计:概要设计--建立软件的总体结构详细设计--确定模块的内部过程、结构及算法·编码--选定语言,编写源程序·测试--查出并改正程序的错误•运行时期:·纠正错误·扩充、完善功能南京航空航天大学南京航空航天大学南京航空航天大学11.3.1 瀑布模型11.3.2 快速原型模型11.3.3 螺旋模型(简)n 的一个合理的框架。
南京航空航天大学•☆☆螺旋模型构建组装模型演化模型喷泉模型智能模型混合模型南京航空航天大学••核心思想:按工序将问题化简,将实现与设计分开,便于分工协作。
瀑布模型规定了软件生存周期的各个阶段如同瀑布流水,逐级下落,自上而下、相互衔接的固定次序。
瀑布模型南京航空航天大学––•弄清“用户需要计算机解决什么问题”•系统目标与范围的说明–(2) 可行性研究•可行性调研和论证•可行性研究报告和项目开发计划南京航空航天大学–需求分析–概要设计–详细设计–编码–测试系统设计系统实现南京航空航天大学•确说明并给出详细的定义。
•需求规格说明书。
☆说明:编写软件需求说明书或系统功能说明书及初步的系统用户手册。
提交管理机构评审。
* 设计•总体设计—系统“怎样做?”☆–包括系统功能设计和系统结构设计–概要设计说明书•说明:–可以列出多种解决方案进行比较–把各项需求转换成软件的体系结构。
结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应•详细设计☆–确定每一个模块的算法和数据结构–详细设计说明书•说明:–对每个模块要完成的工作进行具体的描述,为源程序编写打下基础南京航空航天大学说明:•把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”•写出的程序应当是结构良好、清晰易读的,且与设计相一致的•形南京航空航天大学说明:•单元测试,查找各模块在功能和结构上存在的问题并加以纠正•组装测试,将已测试过的模块按一定顺序组装起来•按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用•查•南京航空航天大学说明:•改正性维护运行中发现了软件中的错误需要修正。
•适应性维护为了适应变化了的软件工作环境,需做适当变更。
•完善性维护为了增强软件的功能需做变更。
•预防性维护为了给未来的软件改进奠定更好的基础。
特点:(1)阶段间的顺序性和依赖性①只有前一才能开始②前一阶段(2)推迟实现物理实现推迟到软件开发的后期进行,这就大大降低了软件的风险。
(3)质量保证的观点①每一阶段都要完成规定的文档。
②每一阶段都要对已完成的文档进行复审。