第1章-软件与软件工程介绍_第1页
第1章-软件与软件工程介绍_第2页
第1章-软件与软件工程介绍_第3页
第1章-软件与软件工程介绍_第4页
第1章-软件与软件工程介绍_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章软件和软件工程的概念、软件的概念、特性和分类软件危机和软件工程系统工程的目标软件生命周期模型软件工程知识系统和知识域,1.1软件的概念、特性和分类,软件的作用起到产品和产品生产载体的双重作用。该软件显示了计算机硬件实现的计算功能,并充当了创建、管理、查询、修改、显示或传递各种信息的信息转换。作为产品生产的载体,软件为计算机控制(操作系统)、信息通信(网络)和应用开发与控制提供了基本平台(软件工具和环境)。1.1软件的概念、特性和分类、软件的概念对现代人来说并不陌生,但是很多人对软件的理解并不准确。软件是程序,软件开发是程序.这个错误的观点仍然存在。什么是软件?1.1软件的概念、特征和分类,软件是计算机系统硬件相互依存的另一部分,是包含程序、数据和相关文档的完整集合。程序是根据预先设计的功能和性能要求执行的命令序列。数据是允许程序正常操作信息的数据结构。文档是与程序开发、维护和使用相关的图形材料。1.1软件的概念、特性和分类、软件的特性、(1)形态特性:软件是无形的不可见逻辑实体。测量一般产品的几何尺寸、物理特性和化学成分没有意义。(2)智能功能:软件是复杂的智能产品。其开发凝聚了人们的很多脑力劳动,本身也反映了知识实践经验和人类的智慧。具有一定的智力。可以帮助解决复杂的计算、分析、判断和决策问题。(3)开发功能:有几种工具(也是软件)用于支持软件开发工作,但尚未实现自动化。软件开发仍然包括相当水平的个人劳动,这种大规模的知识库工作充满了个人行为和个人因素。(4)质量特性:目前无法获得完全没有缺陷的软件产品。1.1软件的概念、特性和分类,(5)生产特性:与硬件或现有制造产品的生产完全不同,软件设计和开发,需要提供多个用户时,复制操作非常简单,成本也非常有限。(6)管理功能:由于这几个特性,软件开发管理更加重要和独特。1.1软件的概念、特性和分类,(7)环境特性:软件的开发和执行与相关计算机系统环境(包括支持开发和执行的相关硬件和软件)密不可分。软件在计算机系统的环境中具有不可摆脱的依赖性。(8)维护功能:软件运行后需要维护,但这种维护与现有工业产品的维护概念大不相同。1.1软件的概念、特征和分类,(9)报废功能:与硬件不同,由于“使用不良”,软件不会报废。(10)应用功能:软件应用非常广泛,现在渗透到国家经济和国防的各个领域,现在成为信息产业、先进制造业、现代服务业的核心,占有可替代的地位。1.1软件的概念、特性和分类,1.1软件的概念、特性和分类,软件的分类,通常可以根据软件的作用将软件分类如下:(1)系统软件(2)应用软件(3)支持软件(4)可重用软件,软件危机发生在20世纪60年代末。主要说明软件的发展速度远远落后于硬件的发展速度,不能满足日益增长的社会对软件的要求。软件开发周期长,成本高,质量差,维护困难。1.2软件危机和软件工程,软件危机,典型示例:美国IBM从1963年到1966年开发的IBM360机器的操作系统。该项目的负责人F.D.Brooks后来总结了在组织开发过程中所受到的沉痛教训,说:“逃跑的野兽掉进泥潭里,打着垂死的挣扎,好像越陷越深。最终无法避免毁灭的灾难编程就像这样像泥潭一样一群程序员不得不在泥潭中拼命奋斗没有人预料到会陷入这样的困境1.2软件危机和软件工程,尤其是软件危机,主要是以下典型表现3360的软件开发成本和进度估计错误的情况很多。经常发生用户对“已完成”的软件系统不满意的情况。软件产品的质量往往不可靠。软件经常无法维护。软件通常没有适当的文档资料。软件成本在整个计算机系统成本中所占的比重逐年增加。软件开发生产力的提高既赶不上硬件的发展速度,也赶不上计算机应用程序的快速普及。1.2除了软件危机和软件工程、软件本身的特点外,由于软件开发经验不足和软件开发数据的积累,开发工作计划难以开发的主要原因是软件危机。软件人员和用户之间的通信失败,可能导致所需要求不适当或出现错误。软件开发过程未标准化。例如,在不正确了解用户要求的情况下,开始编写程序。软件规模越大,复杂性就越趋向于指数增长。要由很多人分担合作,不仅是技术问题,更重要的是要有科学、严格的管理。有效的软件评估手段不足,提交用户的软件质量不能完全保证。1.2软件危机和软件工程完全消除了“软件是程序”的错误概念。充分认识到软件开发应该是组织好、管理好、各种各样的人合作进行的工程项目。实际上,推广和使用总结开发软件的成功技术、方法和工具。根据工程原则和方法组织软件开发工作。如何摆脱软件危机?1.2软件危机和软件工程,1.2软件危机和软件工程,软件工程的概念,为了克服软件危机,1968年10月在北大西洋公约组织(NATO)举行的计算机科学会议上,FritzBauer首次提出了将工程方法应用于软件开发的“软件工程”概念。在NATO会议上,FritzBauer将软件工程定义为:“软件工程是建立和使用完整的工程原理,以经济高效地确保可在可靠的实际系统上有效运行的软件。”1993年,IEEE表示:“软件工程将系统、规格、可测量方法应用于软件开发、运行和维护流程,即应用于软件;研究提到的方法。)。1.2软件危机和软件工程,软件工程是指导计算机软件开发和维护的工程领域。软件工程是通过使用工程概念、原理、技术和方法开发和维护软件,将通过时间测试验证的正确管理技术与当前获得的最佳技术相结合,经济地开发和有效地维护高质量的软件。1.2软件危机和软件工程,1.3软件工程的目标,软件工程的目标是使用高级软件开发技术和管理方法提高软件的质量和生产率。也就是说,以更短的周期、更低的成本生产高质量的软件产品,最终实现软件的工业生产。1.3软件工程的目的,软件的质量特性:功能、可靠性、可用性、效率、可维护性和可移植性。功能性实现了软件满足设计规范和满足用户需求的功能。稳定性是指软件在规定的时间和条件下保持正常工作的能力;可用性是指使用软件所需的功能。效率是指用软件实现特定功能所需的计算机资源的有效性。可维护性是指当环境更改或软件操作失败时,努力使其恢复正常运行的程度。可移植性表示软件从一个环境移动到另一个环境时所做的努力程度。,1.3软件工程的目标,质量目标之间的关系,(1)关注大型软件构建的以数字为中心的主题,(2)控制复杂性,(3)软件的持续变化非常重要,(4)软件开发的效率非常重要,(57345)协调合作是软件开发的关键环节,(6) (1)根据软件生命周期逐步制定计划,认真实施;(2)主张阶段审查;(3)坚持严格的产品控制;(4)使用现代软件开发技术的领域;(5)明确的责任;(6)雇用较少但详细的领域;(7)继续开发过程,1.4软件寿命,软件定义期间的主要任务是确定“什么”问题的解决,即项目的总体目标和可行性;导出实现工程目标必须使用的策略和系统必须执行的功能。估计完成项目所需的资源和成本。制定工程日程。一般分为三个阶段:问题定义、可行性研究和需求分析。1.4软件寿命,软件开发期间的主要任务是解决“如何执行”问题,即特定设计和前期定义的软件的实现。包括总结设计、详细设计、编码和测试四个阶段。1.4软件寿命,软件执行维护期限主要任务是使软件不断满足用户的需要。一般来说,有四种类型的修复维护,即诊断和修复在使用过程中发现的软件错误。适应维护,即根据环境变化修改软件;根据用户要求改进或扩展软件,以实现更完整的维护。主动式维护,即针对未来维护活动修改预先准备的软体。1.4软件寿命,开发过程的一般文档软件要求规格指南:介绍了正在开发的软件。项目计划:说明要完成的任务及其顺序,估计所需时间和工作量。软件测试计划:介绍如何测试软件,以实现软件规定的功能并获得所需的性能。软件设计指南:说明软件的结构,包括摘要设计和详细设计。用户指南:说明如何使用软件。1.4软件寿命,定义每个阶段要完成的基本任务问题和可行性研究此阶段要回答的主要问题是:“需要解决哪些问题?在成本和时间的限制下,能否解决问题?值得做吗?(2)需求分析在此阶段要回答的关键问题是:目标系统应该做什么?(3)软件设计设计是软件工程的技术核心。现阶段要回答的关键问题是:如何实现目标系统?1.4软件寿命,每个阶段要执行的基本操作(4)程序编码和单元测试此阶段要解决的问题是“正确实施所执行的设计”,即“如何编写正确且可维护的程序代码?”(5)集成和系统测试测试是控制软件质量的重要手段,此阶段的主要任务是进行集成测试和系统测试。(6)将软件执行和维护提供软件投入正式使用后,进入操作阶段。这个阶段可以持续几年。软件可能由于多种原因运行,需要修改。1.5软件寿命模型,瀑布模型快速原型模型增量模型螺旋模型分数模型集成过程,瀑布模型,是20世纪80年代以前被广泛采用瀑布模型的唯一生命周期模型。传统的瀑布模型如图所示。瀑布模型、瀑布模型的特征阶段之间存在顺序和依赖性。其中包含了双重意义。要等到上一阶段的工作完成后,才能开始下一阶段的工作;上一阶段的输出文件是下一阶段的输入文件。认为瀑布模型、瀑布模型的特征实现延迟,瀑布模型在编码之前建立了系统分析和系统设计的不同阶段,分析和设计阶段的基本工作规定在这两个阶段主要考虑目标系统的逻辑模型,不包括软件的物理实现。明确逻辑设计和物理设计,最大限度地推迟程序的物理实现,是根据瀑布模型开发软件的重要指南。瀑布模型、瀑布模型的特性质量保证的观点每个阶段都要完成规定文件,没有提交合格文件是没有完成该阶段的工作。在每个阶段结束前要审阅完成的文件,尽快找出问题,纠正错误。瀑布模型,实际瀑布模型实际瀑布模型有“反馈环”,如图所示。在图中,实线箭头表示开发过程,虚线箭头表示维护过程。瀑布模型、瀑布模型的优点可能会迫使开发者采用标准化的方法。严格规定了各阶段必须提交的文件。要求每个阶段交付的所有产品都必须经过验证。瀑布模型、瀑布模型的缺点是瀑布模型几乎完全依赖于书面规格说明,因此最终开发软件产品可能无法真正满足用户的需求。如果需求规格说明和用户要求之间存在差异,则会出现这种情况。瀑布模型仅适用于项目开始时确定需求的情况。快速原型模型、快速原型是可以在计算机上运行的快速程序,通常是可以在最终产品中执行的功能的子集。快速原型模型如图所示。快速原型模型,快速原型模型的优点(1)有助于满足用户的实际需要。(2)原型系统通过与用户的交互验证,因此,规范文档准确地说明了用户的要求。(3)软件产品的开发基本上是按线性顺序进行的。(4)由于规范说明文档正确地说明了用户的要求,因此在开发过程的后续阶段,将发现规范说明文档中的错误,不会进行更大的返工。快速原型模型、快速原型模型的优点(5)开发人员通过构建原型系统已经学到了很多,因此在设计和编码阶段出错的可能性也很小。因此,自然地减少了在后续步骤中更正上一步骤中出现的错误的可能性。(6)快速原型的突出特征是“快”。(。开发人员应尽快构建原型系统,加快软件开发过程,降低软件开发成本。原型的用途用于了解用户的真正需求,一旦确定了需求,原型就可以丢弃,当然,也可以根据原型进行开发。增量模型,也称为增量模型,miles等于1980年提出的。使用增量模型开发软件时,将软件产品设计、编码、集成和测试为一系列增量组件。每个元件由多个互动模组组成,您可以完成特定功能。增量模型,增量模型如图所示。增量模型、增量模型的优点(1)可以在短时间内向用户提交一些有用的工作产品。也就是说,用户可以从第一个组件交付之日起执行一些有用的任务。(2)随着产品功能的逐步增加,用户有更多的时间学习和适应新产品,从而减少了全新软件对用户组织的影响。(3)项目失败的风险较低,某些增量组件可能会出现一些问题,但是其他增量组件可以成功地传递给客户。(4)优先级最高的服务首先交付,然后依次合并其他增量组件。因此,最重要的系统服务将接受最多的测试。增量模型、增量构件开发每个增量构件必须实现系统功能,以便使用流模型进行开发,如下所示:采用增量模型、增量模型时需要注意的问题(1)在将每个新的增量组件集成到现有软件体系结构中时,不要破坏最初开发的产品。(2)软件体系结构必须开放。这意味着向现有产品添加新组件的过程应该简单方便。因此,使用增量模型比瀑布模型或快速原型模型需要更细致的设计。螺旋模型,螺旋模型最初是Boehm在1988年提出的。该模型将瀑布模型与快速原型模型相结合,两种模型都添加了省略的风险分析。螺旋模型的基本想法是使用原型和其他方法将风险降至最低。螺旋模型,理解此模型的简单方法是在每个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论