第一章 软件危机与软件工程

合集下载

1软件危机

1软件危机



2020/1/7
15
软件工程基本原理


软 3.实行严格的产品质量控制

在现实中由于外部原因要求对需
危 求等进行修改是难免的。但必须有严
机 格的管理制度和措施,其中主要是实
的 行基准配置管理。


2020/1/7
16
软件工程基本原理


软 4.采用现代程序设计技术和软件工程技术

如结构化程序分析(Structured Analysis)
完整的体现用户的需求。
30
生命周期各阶段的任务
2020/1/7
4.总体设计
本阶段 确定目标系统的主要功能如何完 成。采用流程图或其他工具描述出每种可能 的系统,推荐出一个最佳的方案,并制定出 实现该系统的详细计划。
本阶段的另一个主要任务是设计软件的 结构,确定软件应由哪些模块构成,以及模 块之间的关系。

硬件只是提供了计算的可能性


必须有支持和管理计算机的软件,系统才能
实现计算
2020/1/7
3
软件的三层含义
软 件 个体含义:指计算机中的程序及其文 档。
开 发

整体含义:指在特定计算机系统中所有上述
个体含义下的软件的总称,即计算机系统中硬件
过 除外的所有成分。
程 学科含义:指在研究、开发、维护以及使用
还应考虑系统的开发和应用环境,如计 算机系统的配置,计算机网络等。
31
生命周期各阶段的任务
5.详细设计
详细设计阶段的任务就是把问题 的求解具体化,设计出程序的详细规 格说明。
通常用HIPO图(层次图/输入/处理 /输出)或PDL语言(过程设计语言)描 述详细设计的结果。

第一讲.软件危机与软件工程

第一讲.软件危机与软件工程

第一讲.软件危机与软件工程第一讲软件危机与软件工程在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。

从智能手机上的各种应用程序,到企业的管理系统,再到国家的关键基础设施,软件的身影无处不在。

然而,在软件的发展历程中,并非一帆风顺,而是经历了诸多挑战和困难,其中最为突出的就是软件危机。

那么,什么是软件危机呢?简单来说,软件危机指的是在软件开发和维护过程中所遇到的一系列严重问题。

这些问题包括但不限于软件开发成本和进度的失控、软件质量的低下、软件的维护困难等等。

在过去,软件开发常常被视为一种个体化的艺术创作,缺乏规范的方法和流程。

开发人员往往凭借个人的经验和直觉来进行开发,这导致了软件开发的效率低下和质量不稳定。

而且,由于对软件需求的理解不够准确和全面,很多软件在开发完成后并不能满足用户的实际需求,需要进行大量的修改和返工,这不仅浪费了时间和资源,还严重影响了软件的交付进度。

此外,软件的规模和复杂度也在不断增加。

过去,一个简单的程序可能只有几百行代码,而现在,一些大型的软件系统可能拥有数百万甚至数千万行代码。

这种规模的增长使得软件开发和维护变得异常困难。

代码的复杂性导致了理解和修改的难度加大,容易引入新的错误,而且软件的测试和调试也变得更加耗时和费力。

软件危机给软件开发带来了巨大的困扰,严重制约了软件行业的发展。

为了解决这些问题,软件工程应运而生。

软件工程是一门致力于研究软件开发和维护的方法、技术和管理的学科。

它的目标是提高软件开发的效率和质量,降低开发成本,增强软件的可维护性和可扩展性。

软件工程强调采用规范化、系统化的方法来进行软件开发。

在软件开发的早期阶段,就需要对软件的需求进行详细的分析和定义,确保开发出来的软件能够真正满足用户的需求。

同时,软件工程还引入了一系列的开发模型,如瀑布模型、迭代模型、敏捷开发模型等,以适应不同类型和规模的软件项目。

在软件设计阶段,软件工程注重软件的架构设计和模块划分,通过合理的设计来提高软件的可维护性和可扩展性。

软件工程作业第一章

软件工程作业第一章

1-1什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。

典型表现:软件总是超出预算、落后于进度表,而且产品质量不可靠、维护困难等。

危机原因:1、软件受其自身特点的影响,生产过程不象硬件那样规范,受人的因素和外界影响很大,在软件生产的各阶段都会引入不同程度的错误,造成不能预期完成任务,致使成本上升,甚至导致软件失败。

2、主客观不相适应。

●客观上:软件规模增大、功能要求越来越复杂,需求不断变化等;●主观上:传统的个体化开发观念和方法的影响,无开发过程指导,无开发过程管理;由于主客观矛盾,必然产生软件质量差、开发超期、超预算、维护困难等现象。

1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?►基本思想:是强调在软件开发过程中应用工程化原则,解决软件的整体质量较低、最后期限和费用没有保证等问题。

►软件工程定义:是指导计算机软件开发和维护的一门工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它.►软件工程的根本在于提高软件的质量与生产率,最终实现软件的工业化生产。

本质特性:P6消除软件危机:软件工程基本原理7条。

1-6 什么是软件过程?它与软件工程方法学有何关系?►软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

►过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。

关系:是软件工程方法学包含3个要素(方法、工具和过程)之一。

1-7 什么是软件生命周期模型?试比较瀑布模型、(快速)原型模型、增量模型和螺旋模型、喷泉模型的优缺点,说明每种模型的适用范围。

生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。

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

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

第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 软件工程措施学软件工程包括技术和管理两方面旳内容。

第一讲 软件工程概述(软件危机)

第一讲 软件工程概述(软件危机)

第一讲软件工程概述(软件危机)软件工程概述(软件危机)1·软件工程的定义软件工程是一门工程学科,旨在应用系统性、可量化的方法来开发和维护软件。

它涉及软件开发的各个方面,包括软件需求分析、设计、编码、测试和维护等。

2·软件发展的历史2·1 软件危机的出现在20世纪60年代末和70年代初,随着计算机应用的快速发展,软件开发面临了一系列的问题,被称为软件危机。

这些问题包括项目延期、成本超支、质量低下等。

2·2 软件危机的原因软件危机的主要原因包括:2·2·1 需求不明确在软件开发过程中,需求的变化和需求不明确是导致软件危机的主要原因之一。

客户往往无法准确地描述他们的需求,而开发人员也往往无法准确地理解需求。

2·2·2 缺乏有效的管理方法软件开发过程往往缺乏有效的管理方法,导致项目进展缓慢、进度不可控、团队合作不顺畅等问题。

2·2·3 技术限制和约束过去的软件开发技术受到硬件性能和软件工具的限制,导致开发效率低下和质量不可靠。

3·软件工程的基本原理和方法3·1 需求工程需求工程是软件工程的关键环节,旨在通过系统的方法来理解、分析和定义软件系统的需求。

3·2 结构化设计结构化设计是一种将软件系统划分为各个模块,并定义它们之间的关系的方法。

3·3 面向对象设计面向对象设计是一种将软件系统设计为一组相互协作的对象的方法。

它包括类的定义、继承和多态等概念。

3·4 软件测试软件测试是验证和验证软件系统是否满足要求的过程。

它包括单元测试、集成测试、系统测试等不同层次的测试。

3·5 软件维护软件维护是指对已发布的软件进行修改、优化和错误修复的过程。

4·软件工程的发展趋势4·1 敏捷开发敏捷开发是一种以迭代、增量和协作为核心的开发方法。

它强调灵活性、快速反馈和适应性。

软件危机与软件工程

软件危机与软件工程

软件危机与软件工程软件危机与软件工程概述软件危机是指软件开发过程中出现的一连串问题和挑战,导致项目延期、超出预算或质量不佳的情况。

而软件工程则致力于解决软件开发过程中的各种挑战和问题,并提供一种可靠且高效的方法来开发高质量的软件。

软件危机的原因软件危机的原因有多方面的因素,主要包括以下几点:1. 需求不明确:在软件开发初期,客户对软件的需求往往模糊不清或者发生变化,导致软件开发团队无法准确理解客户的需求,从而难以开发出满足客户期望的软件。

2. 技术挑战:软件开发涉及多种技术和复杂的编程环境,开发人员需要不断学习和适应新的技术,但往往时间紧迫,导致技术跟不上进展,造成软件质量不佳。

3. 人员管理:软件开发涉及多个团队成员的合作,如果人员之间无法有效沟通和协作,就会影响软件的开发进度和质量。

4. 项目管理:项目管理对软件开发至关重要,如果项目管理不善,容易导致进度延误、资源浪费等问题。

软件工程的解决方案软件工程是一种以工程化的方式来开发软件的方法,并提供了解决软件开发挑战的一系列技术和方法。

以下是软件工程在解决软件危机中的一些解决方案:1. 需求工程:通过系统化的需求搜集和分析方法,帮助开发团队更全面地理解客户需求,避免需求不明确的问题。

2. 软件架构设计:通过良好的软件架构设计,可以确保软件的可扩展性和可维护性,降低软件开发过程中的技术难题。

3. 项目管理:采用敏捷的项目管理方法可以更好地应对需求变化和项目进度控制,保证软件开发的高效进行。

4. 质量保证:软件是软件工程中的重要环节,通过各种方法如单元、集成和系统等,可以确保软件质量。

软件危机背后的挑战虽然软件工程提供了一套解决软件危机的方法和技术,但在实践中仍然面临一些挑战:1. 技术进步:软件开发领域的技术在不断进步,开发团队需要不断学习和适应新的技术,才能跟上潮流并提供高质量的软件。

2. 项目规模:随着软件项目规模和复杂度增加,开发团队需要更多的资源和时间来完成项目,项目管理和资源分配成为挑战。

软件工程电子教案--第1章

山西大学商务学院教案2010—2011学年第二学期
课程名称软件工程
授课对象08计科GB3、GB4、DB10
授课教师刘忠宝
教材版本软件工程张海藩等著
第 3 页
第 4 页
2、面向对象方法学
概括地说,面向对象方法具有下述四个要点:
·对象:把对象(Object)作为融合了数据及在数据上的操作行为的统一的软件
构件。

面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比
较简单的对象组合而成。

·类:把所有对象都划分成类(Class)。

每个类都定义了一组数据和一组操作,
类是对具有相同数据和相同操作的一组相似对象的定义。

数据用于表示对象的静
态属性,是对象的状态信息,而施加于数据之上的操作用于实现对象的动态行为。

·继承按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类
组成一个层次结构的系统(也称为类等级)。

·联系对象彼此之间仅能通过发送消息互相联系。

对象的所有私有信息都被封
装在该对象内,不能从外界直接访问,这就是通常所说的封装性。

面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使
开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使
描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构
上尽可能一致。

第 5 页
第 6 页
第7 页
第8 页
第9 页
第10 页
第11 页。

第一讲 软件工程概述(软件危机)

第一讲软件工程概述(软件危机)第一讲软件工程概述(软件危机)软件工程是一门综合性学科,旨在研究如何以科学的方法,规范的过程和工程化的方式开发、维护和管理软件系统。

软件工程的发展离不开软件危机的触发和推动。

本文将详细介绍软件工程概述以及软件危机的背景和原因。

1.软件工程的定义和范畴1.1 软件工程的定义1.2 软件工程的发展历程1.3 软件工程的目标和原则1.4 软件工程的生命周期2.软件危机的背景和原因2.1 软件危机的概念2.2 软件危机的背景2.3 软件危机的原因2.4 软件危机的影响和后果3.软件危机的解决方案3.1 软件过程改进3.2 软件工程方法学3.3 软件工程工具和环境3.4 软件工程的标准和认证4.软件工程的未来趋势4.1 敏捷开发和DevOps4.2 和机器学习在软件工程中的应用4.3 云原生和微服务架构4.4 软件工程与其他学科的交叉融合附录:________本文档涉及附件:________法律名词及注释:________1.版权法:________指规范作品著作权及相应权利的法律法规。

2.专利法:________指规范发明、实用新型和外观设计专利权的法律法规。

3.商标法:________指规范商标注册、商标权利保护和商标侵权行为处罚的法律法规。

4.反不正当竞争法:________指规范商业主体之间竞争行为的合法性和合规性的法律法规。

附件:________法律名词及注释:________1.版权法:________指规范作品著作权及相应权利的法律法规。

2.专利法:________指规范发明、实用新型和外观设计专利权的法律法规。

3.商标法:________指规范商标注册、商标权利保护和商标侵权行为处罚的法律法规。

4.反不正当竞争法:________指规范商业主体之间竞争行为的合法性和合规性的法律法规。

软件危机与软件工程

软件危机与软件工程第一章引言软件危机是指在软件开发过程中出现的一系列问题,如超出预算、延期交付、功能缺失等。

该问题的根本原因在于软件开发过程缺乏规范和有效管理。

为了解决软件危机问题,软件工程作为一门学科应运而生。

第二章软件工程的定义与范围软件工程是一门将工程原理、方法和工具应用于软件开发的学科。

它涵盖了软件开发的整个生命周期,包括需求分析、设计、编码、测试和维护等阶段。

第三章软件危机的原因1.需求不清晰:需求不明确或不完整导致软件项目后期出现功能缺失和修改需求的情况。

2.规模估算不准确:对软件项目的规模估算不准确会导致资源分配不合理,进而引发预算超支和进度延误。

3.项目管理不善:软件项目缺乏有效的管理方法和工具,导致资源分配不均衡,任务分配不明确,人员合作不协调。

4.技术选型不当:选择不合适或技术过时的开发工具和平台会导致开发效率低下和后期维护困难。

5.缺乏测试与质量保证:软件开发过程中忽视测试环节和质量保证措施,导致系统稳定性和可靠性问题。

第四章软件工程的方法与实践1.需求分析:通过对用户需求进行深入调研和分析,建立准确的需求文档,为后续设计与开发提供准确的参考。

2.结构化设计:采用模块化开发的方式,将系统划分为多个独立可测试的模块,提高开发和维护的效率。

3.敏捷开发:采用敏捷开发方法,将开发过程划分为多个迭代周期,每个周期交付可用的软件产品,持续优化和改进。

4.质量管理:通过严格的测试和质量保证流程,确保软件系统的稳定性、可靠性和安全性。

5.风险管理:通过风险分析和风险控制策略,预测和应对潜在的开发风险,减少项目失败的风险。

第五章软件工程的工具与框架1.需求管理工具:如JIRA、TFS等,用于管理和追踪需求的变更和进度。

2.设计工具:如Axure、Visio等,用于绘制系统架构图和界面设计。

3.编码工具:如IDE、代码管理工具等,用于编写、管理和调试代码。

4.测试工具:如Selenium、Junit等,用于进行自动化测试和质量监控。

第一讲 软件工程概述(软件危机)

第一讲软件工程概述(软件危机)软件危机在计算机科学发展的早期,软件开发的过程中出现了一系列严重的问题,被称为软件危机。

软件危机主要表现在以下几个方面:1. 项目延期和超预算软件开发项目常常会因为技术、人员或者需求变更等原因导致延期和超预算。

这让开发者和客户都感到沮丧,并对软件开发过程的可行性和有效性产生质疑。

2. 软件质量低下由于软件开发的复杂性,很容易出现缺陷和错误。

软件质量低下会导致系统不稳定、易于崩溃、功能不完备等问题。

3. 缺乏可维护性和可重用性由于缺乏系统化的工程方法和设计规范,很多软件很难进行维护和重用。

这不仅增加了开发者的工作量,也浪费了大量的时间和资源。

4. 项目管理困难软件开发涉及多个工作环节和不同的团队成员,项目管理的难度非常大。

缺乏有效的管理方法和工具,往往导致项目进度难以掌控,人员协调困难等问题。

软件工程的出现为了解决软件危机所带来的问题,软件工程这一概念应运而生。

软件工程旨在通过系统化的方法和工程化的思维来开发和维护软件。

1. 系统化的方法软件工程提供了一套系统化的方法,包括需求分析、系统设计、编码、测试等环节,以确保软件开发过程的可控和可靠性。

2. 工程化的思维软件工程借鉴了工程学科的思维方式,将软件开发过程看作是一个工程项目,强调规划、设计、组织和管理等方面。

3. 软件开发生命周期软件工程将软件开发过程划分为不同的阶段,形成了软件开发生命周期的概念,包括需求分析、设计、编码、测试、发布等阶段。

每个阶段都有不同的任务和目标,确保软件开发的高质量和高效率。

4. 软件工程的原则和方法软件工程提出了一系列原则和方法,如模块化、结构化、面向对象、迭代开发、敏捷开发等,用来指导和规范软件开发过程。

软件工程是解决软件危机的一种有效途径。

通过系统化的方法和工程化的思维,可以提高软件开发的质量和效率,降低项目风险和成本。

软件工程对于现代社会的发展具有重要的意义,对于软件开发者和项目管理者来说,也是必不可少的知识和技能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件危机与软件工程
3、产生软件危机的原因
(1)软件是计算机的逻辑部件而不是物理部件。软件问 题是在开发时期引入的而在测试阶段没能测出来的故障, 修改软件故障要修改软件原来的设计。 (2)软件不同于一般程序,它的特点是规模庞大,软件 开发工作量随软件规模增大非线性增长; (3)与早期软件开发个体化特点有关:认为软件开发就 是写程序并设法使之运行,轻视需求分析和软件维护。 返回
软件危机与软件工程
2、坚持进行阶段性评审 软件的质量保证工作不能等到编码结束以后进行: 软件的质量保证工作不能等到编码结束以后进行: (1)大部分错误是在编码之前造成的,占63%; (2)错误发现与改正得越晚,所需付出的代价也越高.
返回
软件危机与软件工程
3、实行严格的产品控制 产品控制: (1) 产品控制:指在软件生产过程中保持软件各 个配置(文档或程序代码)的一致性,即不能随意修改 软件。 (2)基线配置:是经过阶段评审后的软件配置成 基线配置: 分。对基线配置的修改都要按照严格的规程进行评审。
返回
软件危机与软件工程
7、综合测试
(1)关键问题是:通过各种类型的测试和调试使软件达到预期的 要求。 (2)参与人员:专门的测试人员、用户; (3)主要工作:集成测试:根据设计的软件结构,把经过单元测 试检验的模块按某种选定的策略装配起来,在装配过程中对程序 进行必要的测试。验收测试:按照规格说明书的规定(通常在需 求分析阶段确定),由用户(或在用户积极参加下)对目标系统 进行验收。平行运行:新旧系统同时运行,在保障系统安全的前 提下使新系统接爱实战演练,同时对用户进行培训。 (4)完成的任务:综合测试方案和结果,完整一致的软件配置。
软件危机与软件工程
2、软件危机的表现
(5)软件通常没有适当的文档资料; 文档资料的作用是:管理和评价软件开发过程的 进展情况,开发者与用户和开发者之间通信的工具,维 护工具。往往危机是指在计算机软件的开发和维护过程 中所遇到的一系列严重问题。 (6)软件成本在计算机系统总成本中所占的比例逐年 上升;(1985年美国软件成本占计算机系统总成本的比 例为90%) (7)软件开发生产率提高的速度赶不上计算机普及的 速度。 返回
返回
软件危机与软件工程
2、可行性研究
(1)回答的关键问题是:“对上阶段所确定的问题有行得通的解 决办法吗?”; (2)参与人员:系统分析员; (3)工件过程:一个大简化了的系统分析和设计过程; (4)完成的任务:提出系统的高级逻辑模型,即数据流图、数据 字典,确定系统的目标和规模,系统的成本/效益分析。
软件危机与软件工程
3、软件的分类:
(1)按功能分类 a、系统软件:支持计算机系统各个部件、相关的 软件和数据协调、高效地工作的软件。如:OS、DBMS、 DRIVER、COMMUNICATION-SYSTEM。 b、支撑软件:协助用户开发软件的工具性软件, 文本编辑软件。如:PSL/PSA(问题描述语言、问题描 述分析器)、图形软件包、预编译程序、静态分析程序。 c、应用软件:在特定的领域不特定的目的服务的 一类软件。如:数值计算、CAD/CDM、人工智能、CAI、 MIS。 返回
软件危机与软件工程
4、解决软件危机的途径பைடு நூலகம்
(1)借助各种工程项目开发所积累的经验(原理、概念、 技术和方法);
(2)总结软件开发成功的技术和方法;
(3)应用软件开发辅助工具。 返回
软件危机与软件工程
4、解决软件危机的途径
关键办法: 关键办法: (1)抓住两个环节:开发技术和方法; 良好的组织管理措施。 (2)澄清三个错误认识: a、软件就是程序; b、软件开发就是编程;(编程仅占工作量的10%20%) c、将错误留到编程后的测试和维护时再改。(相 同的错误在后期引入软件更改比早期引入软件更改所需 的代价高出2-3个数量级。 返回
1.2.2 软件工程的传统途径
软件工程的传统途径:生命周期法。 软件工程的传统途径:生命周期法。 生命周期方法学:从时间角度对软件开发和维护的复杂问 题分解为若干阶段,每个阶段都有相对独立的任务,然后逐步 完成每个阶段的任务。 (1)前一阶段完成,后一阶段才能开始;前一阶段是后一 阶段的基础,后一阶段是前一阶段的细化。 (2)每一个阶段都有开始和结束的标准,前一阶段结束的 标准就是后一阶段开始的标准;每一个阶段结束后都要提交一 个完整的高质量的文档资料(软件配件文件)。 (3)每一个阶段结束之前都要进行正式严格的技术审查和 管理复审;
Boehm:“软件是程序以及开发、使用和维护程序所需的所有文档。”
程序:按事先设计的功能和性能要求执行的指令序列; 数据:使程序能正常操纵信息的数据结构; 文档:是与程序开发、维护和使用有关的图文资料。 返回
软件危机与软件工程
2、软件的特点:
(1)软件是一种逻辑实体; (2)软件可以低成本地复制; (3)软件的使用不存在老化的问题;(软件因需求变 化和故障需不断维护,并不断失去价值) (4)软件开发是高强度的脑力劳动,自动化程度不高, 因而软件成本相当昂贵; (5)相当多的软件开发涉及到社会因素。 返回
(1)回答的关键问题是:“概括地说,应该如何解决这个问 题?”; (2)参与人员:系统分析员; (3)主要工作:提出几种可供选择的解决方案(是人工完成还是 计算机完成,是批处理还是人机交互,信息存储是采用文件系统 还是数据库?),方案的级别有:低、中、高等级,每种方案都 用系统流程图或其它工具加以描述。推荐一种方案。最后确定一 种方案。 (4)完成的任务:可能的解法(每种方解法的系统流程图和成本 效益分析),推荐的系统结构(层次图或结构图)。
软件危机与软件工程
1.1 软件危机
1、什么叫软件危机?
软件危机是指在计算机软件的开发和维护过程中所 遇到的一系列严重问题。 1968年北大西洋公约组织在联邦德国召开的国际会 议上提出来的。 返回
软件危机与软件工程
2、软件危机的表现
(1)对软件开发的成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常 发生; (3)软件质量往往靠不住:软件质量保证技术(审查、 复审和测试)没有坚持不懈地应用到软件开发全过程中; (4)软件常常不可维护:错误难改,难适应新的硬件 环境,难适应用户要求增加的新的功能需求,软件的复 用性不高; 返回
返回
软件危机与软件工程
1.2.1 软件工程的基本原理
1、用分阶段的生命周期计划严格管理 2、坚持进行阶段性评审 3、实行严格的产品控制 4、采用现代程序设计技术 5、结果应能清楚地审查 6、开发小组的人员应该少而精 7、承认不断改进软件工程实践的必要性 返回
软件危机与软件工程
1、用分阶段的生命周期计划严格管理 生命周期:问题定义、需求分析、可行性研究、总 生命周期: 体设计、详细设计、编码和单元测试、综合测试、软件 维护。 在软件的整个生命周期中应该严格执行六类计划: 在软件的整个生命周期中应该严格执行六类计划: 项目概要计划、里程碑计划、项目控制计划、产品控制 计划、验证计划、运行维护计划。(Boehm) 返回
返回
软件危机与软件工程 (3)软件工程阶段:70年代以后。 软件产品: 软件产品:程序、数据、文档; 语言: 语言:软件语言(需求定义语言、软件功能语言、 软件设计语言、程序设计语言); 主要工作: 主要工作:软件生存周期各个阶段; 组织: 组织:大中型软件开发机构; 需求者: 需求者:面向市场,面向用户; 开发技术和手段: 开发技术和手段:工程化开发方法,开发工具及开 发环境起重要作用; 质量因素: 质量因素:管理水平。 返回
返回
软件危机与软件工程
(4)按功能软件服务对象分类 a、项目软件:受特定客户委托由一个或多个软件 开发机构在合同的约束下开发出来的软件。 b、产品软件:提供给市场的商品。 (5)按使频度分类: (6)按软件失效的影响分类。
返回
软件危机与软件工程
4、软件的发展:
(1)程序设计阶段:约50—60年代。 软件产品:程序; 软件产品: 语言: 语言:汇编语言及机器语言; 主要工作: 主要工作:编写程序; 组织: 组织:个人; 质量因素: 质量因素:编程技术(技巧)。 (2)程序系统阶段:约60—70年代。 软件产品: 软件产品:程序及说明书; 语言: 语言:高级程序设计语言; 主要工作: 主要工作:设计程序及测试; 组织: 组织:开发小组; 开发技术: 开发技术:结构化程序设计方法。
返回
软件危机与软件工程
1.2.3 生命周期各阶段的基本任务
1、问题定义 2、可行性研究 3、需求分析 4、总体设计
5、详细设计 6、编码和单元测试 7、综合测试 8、软件维护 返回
软件危机与软件工程
1、问题定义
(1)回答的关键问题是:“要解决的问题是什么?”; (2)参与人员:系统分析员; (3)工作过程:分析员将自己对问题的理解提交由用户和开发方 共同参加的会议讨论。 (4)完成的任务:提交关于问题性质、工程的目标和规模的书面 报告。
软件危机与软件工程
6、开发小组的人员应该少而精 (1)精: (2)少:为了提高软件开发过程的可见性,更好 地进行管理,应该根据软件开发项目的总目标及完成期 限,规定开发组织的责任和产品标准,从而使所得到的 结果能够清楚地审查。
返回
软件危机与软件工程
7、承认不断改进软件工程实践的必要性
返回
软件危机与软件工程
返回
软件危机与软件工程
5、详细设计
(1)回答的关键问题是:“应该如何具体地实现这个系统?”; (2)参与人员:系统分析员和程序员; (3)主要工作:设计程序详细的规格说明,用图形工具或伪码描 述模块的实现。但还不是编程,它类似于其它工程上的图纸。 (4)完成的任务:编码规格说明书,用HIPO图或PDL描述的详细 设计的结果。
返回
软件危机与软件工程
4、采用现代程序设计技术 采用先进的程序设计技术可以提高软件的生产效率。 采用先进的程序设计技术可以提高软件的生产效率。 SA(structure analyse):结构分析; SD(structure design):结构设计。
相关文档
最新文档