第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.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)质量保证的观点①每一阶段都要完成规定的文档。
②每一阶段都要对已完成的文档进行复审。