第一章 软件工程概论
2020-09-16 10:19:03 1 举报
AI智能生成
软件工程导论思维导图
作者其他创作
大纲/内容
第一章 软件工程概论
一、软件危机
1-软件危机的简介
1.定义
2.软件危机包含两个方面的问题
3.典型表现
2-产生软件危机的原因
①软件是计算机系统中的逻辑部件而非物理部件,缺乏“可见性”,因此管理和控制软件开发过程相当困难。②软件维护通常意味着改正或修改原来的设计,因此软件较难维护。③软件规模庞大,而程序复杂性将随着程序规模的增加而呈指数上升。
客观原因:①软件工程师存在与软件开发和维护有关的许多错误认识和做法。主要表现:忽视软件需求分析的重要性;认为软件开发就是写程序;轻视软件维护②对用户要求没有完整准确的认识就匆忙着手编写程序。③开发人员只重视程序而忽视软件配置的其余成分(文档和数据等)。④软件开发人员轻视维护
3-消除软件危机的途经:四大条
二、 软件工程
2.1-软件工程的简介
2.目的
3.本质特性
2.2-软件工程的基本原理
2.3-软件工程方法学-定义+三要素
传统方法学
概念:
也叫作,采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或者软件工程环境来支持结构化技术的应用。
特点4条
1-\t把软件生命周期划分为若干个阶段,并且按顺序完成各个阶段的任务2-\t每个阶段的开始和结束都有严格的标准,对于两个相邻阶段而言,前一个阶段的结束是后一个阶段开始的标准3-\t在每个阶段结束之前都要有严格的技术审查和管理复审,复审的重要一条标准是在每个阶段都要要提供“最新式的高质量”的文档资料,从而保证在软件工程开发结束时有一个完成准确的软件配置交付使用4-\t每个阶段结束之前都要对所提交的文档进行严格的审查。检验以及复审
优点:
a.把软件生命周期划分成若干相对独立、简单的阶段,便于不同人员分工协作,降低开发的困难程度。b.开发过程中采用科学的管理技术和良好的技术方法,且在每个阶段结束之前都要对所提交的文档进行严格的审查,保证了软件的质量,提高了软件的可维护性;c.大大提高了软件开发的成功率和生产率。
缺点:
a.不适用于软件规模庞大、或者对软件的需求是模糊的或会随时间变化而变化的情况。b.结构化范型技术把数据和操作人为地分离成两个独立的部分,增加了软件开发与维护的难度
面向对象方法学
概念、四个要点
基本原则、两者之间的对比
优点、缺点
优点:a.降低了软件产品的复杂性;b.提高了软件的可理解性;c.简化了软件的开发和维护工作;d.提高了软件的可重用性。缺点:面向对象性能比面向过程低。
三、生命周期
【注意】考题中常设置选项:在详细设计阶段编写代码。这是错误的,在编码和单元测试阶段才编写代码。
四、软件过程
4-1 瀑布模型
1、3个特点
2、模型解读
3、优点
a.可强迫开发人员采用规范的方法;b.严格地规定了每个阶段必须提交的文档;c.严格规定了每个阶段提交的产品都必须经过质量保证小组的仔细审查、验证;d.对文档的约束,使软件维护变得容易一些,且能降低软件预算。
4、缺点
a.瀑布模型是由文档驱动的,可能导致开发出来的软件产品不能完整准确的满足用户的需求b.缺乏对于需求变更和项目变化的适应性;c.用户只有在生命周期的后期才能看到结果;
5、适用范围
适用于用户需求明确、完整、无重大变化的软件项目开发。
4-2 快速原型模型
1-概念
2-优点:不带反馈环
3-能线性开发的主要原因
优点
a.克服了瀑布模型的缺点,对于需求变更和项目变化具有更好的适应性;b.开发费用低、开发周期短且对用户更友好。
缺点
a.客户与开发者对原型理解不同;b.本质是快速,没有考虑软件的总体质量和可维护性,最终产品质量较差;c.不利于开发人员的创新。
适用范围:
a.对所开发的领域比较熟悉而且有快速的原型开发工具;b.项目招投标时,可以以原型模型作为软件的开发模型;c.进行产品移植或升级时,或对已有产品原型进行客户化工作时。
4-3 增量模型
2-比较
a.能在较短时间内向用户提交可完成部分工作的产品;b.逐步增加产品功能,可以使用户有较充裕的时间学习和适应新产品,从而减少。
a.要求软件体系结构必须是开放的。b.增量模型的灵活性很容易退化为边做边改模型,从而使软件过程的控制失去整体性。c.增量模型本身是自相矛盾的。它一方面要求开发人员把软件看作一个整体,另一方面又要求开发人员把软件看作构件序列,每个构件本质上都独立于另一个构件。
a.进行已有产品升级或新版本开发;b.对完成期限严格要求的产品;c.对所开发的领域比较熟悉而且已有原型系统。
4-4 螺旋模型
1- 基本思想
增加了风险分析的快速原型模型
a.有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;b.减少了过多测试或测试不足所带来的风险;c.在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
a.软件开发人员需要具备丰富的风险评估经验和专门知识,如果未能够及时标识风险,会造成重大损失;b.过多的迭代次数会增加开发成本,延迟提交时间。
适用于内部开发的大规模软件项目。
5- 喷泉模型
1-特点:
a. 图 1-7 所示的喷泉模型,是典型的面向对象的软件过程模型之一。 b.喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。c.体现了面向对象软件开发过程迭代和无缝的特性。
2-为什么说喷泉模型较好地体现了面向对象软件开发过程无缝和迭代的特性?
答:“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。喷泉模型的开发流程图中代表不同阶段的圆圈相互重叠,表示两个活动之间存在交迭;而面向对象方法在概念和表示方法上的一致性,保证了在各项开发活动之间的无缝过渡。在一个阶段内的向下箭头代表该阶段内的迭代(或求精)。
6-Rational 统一过程
1、六条最有效的开发经验“最佳实践”
迭代式开发、管理需求、使用基于构件的软件体系结构、可视化建模、验证软件质量、控制软件变更
2、RUP 软件开发生命周期
纵轴9个,前6个为核心过程工作流程,后3个为核心支持工作流程
横轴代表时间:初试-精化-构建-移交
3、工作阶段:
a.初始阶段。b.精化阶段。c.构建阶段。d.移交阶段。【2019浙江工业大学】
4、特点:
a.采用迭代和渐增的方式开发软件。b.具有多功能性和广泛适用性。
5、优缺点
(1)优点:1-提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量以及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。2-它具有简洁和清晰的过程结构,为开发过程提供了较大的通用性。(2)缺点RUP 只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容。此外,它没有支持多项目的开发结构,在一定程度上降低了在开发组织内大范围实现重用的可能性。
6、适用范围:
答:适用于大型的需求不断变化的复杂软件系统项目。
7-敏捷过程与极限编程
1、敏捷过程
为了使开发团队具有高效工作和快速响应变化的能力,由四个价值观声明组成
适用范围:答:敏捷过程具有对变化和不确定性的更快速、更敏捷的反应特性,而且在快速的同时仍然能够保持可持续的开发速度。因此适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束。
2、极限编程
a.以极限编程为代表的敏捷过程,具有对变化和不确定性的更快速、更敏捷的反应特性;b.在快速的同时仍然能够保持可持续的开发速度。
8-微软过程
1、微软软件生命周期
规划阶段、设计阶段、开发阶段、稳定阶段、发布阶段
2、微软过程模型
微软过程的每一个生命周期发布一个递进的软件版本,各个生命周期持续、快速地迭代循环。
收藏
0 条评论
回复 删除
下一页