导图社区 813软件工程-软件工程概述
用于813软件工程和期末复习串知识点,软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
编辑于2023-06-14 16:18:31 辽宁用于813软件工程和期末复习串知识点,可行性研究是进行了一次大大简化了的系统分析和设计的过程,也是在较高层次上以较为抽象的方式进行的系统分析和设计的过程。
用于813软件工程和期末复习串知识点,对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
用于813软件工程和期末复习串知识点,软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
社区模板帮助中心,点此进入>>
用于813软件工程和期末复习串知识点,可行性研究是进行了一次大大简化了的系统分析和设计的过程,也是在较高层次上以较为抽象的方式进行的系统分析和设计的过程。
用于813软件工程和期末复习串知识点,对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
用于813软件工程和期末复习串知识点,软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
软件工程学概述
软件危机
软件危机的定义
软件开发和维护过程中所遇到的一系列的严重问题
软件危机产生的原因
1、软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件, 缺乏可见性,修改代价大,管理和控制相当困难,质量难以评价。
2、软件不会因为长时间的使用而用坏,如果使用过程中发现了错误,一定是开发阶段引入,测试阶段没有检测出来的。
3、软件开发人员的糊涂观念,采用了错误的技术和方法,是软件危机的主要原因。
4、软件不同于一般程序,显著特点是规模较大,程序的复杂性随着软件规模的增大而呈指数型上升。
5、对用户的需求没有准确的认识就着手编写程序,是软件危机产生的主要原因之一。
6、必须消除只重视程序而轻视软件配置的观点。
7、越早修改代价越小。
软件危机的典型特征
1、软件的开发进度和成本往往不可估计
2、软件常常不可维护
3、用户对开发出的软件不满意的情况时有发生
4、开发出的软件的质量往往靠不住
5、软件通常没有文档说明
6、软件系统比例占计算机系统中的比例逐年上升
7、计算机软件的速度远远跟不上计算机深入普及的速度
解决软件危机的途径
1、彻底清楚错误的观念,清楚的认识到软件是程序、数据、相关文档的集合
2、应该开发使用更好的工具
3、必须充分认识到软件开发不是一个人的神秘技巧,而是一种组织良好,管理严密,各类人员紧密配合,必须吸收借鉴人类长期以来从事各类项目开发的经验和行之有效的原理,技术,方法,概念,尤其是计算机硬件的经验。
软件工程的概念
软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
软件工程的本质特征
1、注重大型软件的构造
2、中心课题是控制复杂性
3、高效率非常重要
4、团结合作是关键
5、软件经常变换
6、往往是一种专业背景的人代替另一种专业背景的人创造产品
7、软件要有效的支持他的用户
软件工程方法学(范型)
定义
通常把在软件生命周期中使用的一整套的技术方法的集合称为软件工程方法学,也叫范型
三要素(方,工,过)
方法
工具
过程
分类
传统方法学
以算法为核心,功能分解
定义
传统方法学也叫生命周期方法学、结构化范型,它采用结构化技术来实现软件开发的各项任务,把软件的生命周期划分为若干个阶段,然后顺序的完成每个阶段的任务
评价
1、每个任务相对独立、简单,不同人员分工协作,降低整体开发的难度
2、每个阶段结束之前都从技术、管理两个角度进行严格审查,保证了软件的质量,提高软件的可维护性。
3、能大大提高软件开发的成功率,软件开发生产率也大大提高
面向对象方法学
以对象为核心,对象分解
要点
1、把对象作为融合了数据及在数据上的操作行为的统一的软件构件
2、把所有的对象都划分成类
3、按照父类和子类的关系把若干个相关类组成一个层次结构的系统
4、对象彼此间仅能通过发送消息相互联系(传参)
软件工程的基本原理
1、用分阶段的生命周期严格计划
2、严格进行阶段评审
3、实行严格的产品控制
4、采用现代的程序设计技术
5、结果能清楚的审查
6、开发小组应该少而精
7、承认不断改进软件工程实践的重要性
软件工程的生命周期
软件定义
1、问题定义
要解决的问题是什么?
2、可行性研究
对于上一个阶段所确定的问题是否有行得通的解决办法?
3、需求分析
为了解决这个问题,目标系统应该做什么?
软件开发
系统设计
4、总体设计
概括的说,应该怎样实现目标系统?
5、详细设计
应该怎样具体的实现这个系统?
系统实现
6、编码与单元测试
写出正确的容易理解、容易维护的程序模块
7、综合测试
通过各种类型的测试使软件达到预定的要求
运行维护
8、软件维护
通过各种必要的维护活动使系统持久地满足用户的需求
软件过程
定义
软件过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
模型★★★★★
瀑布模型
适用范围
适用于功能、性能明确、完整、无重大变化的软件系统开发 如:操作系统,数据库管理系统,编译系统
特点
1、顺序性和依赖性
1、必须等前一阶段的工作任务完成之后,才能开始后一阶段的任务
2、前一阶段的输出文档就是后一阶段的输入文档,只有前一阶段的文档正确,后一阶段的工作才能正确结束
2、推迟实现的观点
3、质量保证的观点
评价
优点
1、强迫开发人员使用规范的方法
2、严格规定每个阶段必须要提交的开发文档
3、要求每个交出的 产品都有质量保证小组的仔细验证
4、文档驱动的模型,因为软件更容易维护
缺点
1、软件交付之前,用户只能通过文档了解程序,可能导致不符合用户的需求
2、过于理想化,在软件开发过程中不可能不犯错
3、文档驱动的模型也是它的缺点
4、缺乏灵活性
快速原型模型
适用范围
适用于功能需求不明确的小型或者交互型系统开发,或者是大型系统中的某一部分
原理
第一步快速建立一个能反映用户主要需求的原型模型,先让用户使用,用户提出修改意见,开发人员根基用户的意见快速修改原型系统再请用户使用,如此反复直到系统能够,满足用户的真实需求,开发人员根据这个系统书写规格说明文档,再根据这个文档开发出的系统就能真正满足用户的真实需求。
评价
优点
1、加速软件的开发过程
2、能够获知用户的全部需求
3、软件开发是线性顺序进行的
4、吸引用户,快速占领市场
5、灵活性强
6、克服瀑布模型的缺点,减少由于需求不明确而带来的开发风险
缺点
1、所使用的模型和工具不一定能符合主流的发展。
2、快读建立起来的系统结构加上连续的修改,可能会导致质量的低下。
增量模型
适用范围
适用于技术风险大,用户需求较为稳定的软件系统
原理
将软件产品看作是一系列的增量来设计,编码,集成,测试
评价
优点
1、分批的向用户提交产品,把整个产品分解成多个增量模型构件,开发人员一个接一个向用户提交产品,从第一个构件交付之后就能做一些事情
2、用户有充分的时间进行学习和适应新的产品,从而减少用户直接接收一个全新的产品而带来的冲击
3、模型的灵活性强使其适应需求的变化
缺点
容易退化成边做边改的模型
螺旋模型
适用范围
适用于大型复杂的系统
原理
使用原型及其他的方法来减低风险,可以把它看作在每个阶段之前都增加了一个风险分析的原型系统
评价
优点
1、有利于软件的重用、有助于把软件质量当成软件开发的一个重要目标
2、减少测试不足带来的风险
3、维护只是模型的另一个周期,开发和维护之间没有区别
缺点
1、不能让用户确定这种演化的方法是可控的
2、建设周期长
3、风险评估依赖于个人水平
螺旋模式实际上是快速原型模型和瀑布模型的结合
喷泉模型
适用范围
使用于面向对象的软件系统
定义
在开发的早期阶段定义了一系列的面向问题的对象,并且在整个开发过程中不断充实和扩充这些对象
评价
优点
提高软件效率,节约开发时间
缺点
不利于项目管理