导图社区 软件工程第1章概述
软件工程第1章概述知识总结,包括软件危机、软件工程、软件过程、软件生命周期四部分内容,需要的自取。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
软工概述
软件危机
含义
计算机软件在开发和维护过程中所遇到的一系列问题
典型表现
1对软件开发成本和进度的估计常常很不准确
2用户对“已完成的”的软件系统不满意的现常常发生
3软件产品质量往往靠不住
4软件常常是不可维护的
5软件通常没有适当的文档
6软件成本在计算机系统总成本中所占的比例逐年上升
软件开发生产效率提高的速度,远远赶不上计算机应用迅速普及深入的趋势
原因
客观原因
1软件与硬件不同,软件是开发的,而非制造的,其开发过程难以管理和控制,产品质量也不好把握
二软件不会磨损,但他会不断退化,加大了软件维护的难度,软件无法适应不断变化的运行环境需求
三,软件规模庞大,而软件的复杂性,随着规模的不断扩大呈指数增加
主观原因
一对用户的要求没有完整和准确的认识而匆忙编写程序越早开发代码,编写开发时间越长,急于求成,欲速则不达
二对软件的开发过程的认识不准确,生命周期的每个阶段都有其工作和特点,都是不可逾越的
三对软件的质量重视不够,是造成软件开发成本激增的重要原因,注意软件开发成本过程中错误的“放大效应”
轻视软件维护是一个重大错误,软件开发时期的各个阶段的关键目标都是提高软件的可维护性
消除软件危机的途径
首先,对计算机软件有个正确的认识,彻底清除软件是程序的错误观念
要有良好的组织,严格的管理各类人员,协同配合,共同完成工程项目
应该推广使用,在实践中总结的开发软件成功的技术和方法,并探索更好更有效的技术和方法
应该开发和使用更好的软件工具
软件工程
介绍
软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念原理,技术和方法来开发和维护软件
本质特性
一,软件工程关注于大型程序的构造
2软件工程的中心课题是控制复杂性
三软件经常变化
开发软件的效率非常重要
和谐合作是开发软件的关键
软件必须有效的支持他的用户
在软件工程领域中,通常具有一种文化背景的人替具有另一种文化背景的人创造产品
基本原理/原则
用分阶段的生命周期计划严格管理
坚持进行阶段评审
实行严格的产品控制
采用现代程序编写技术
结果应能清楚的审查
开发小组的人员应该小而精
承认不断改进软件工程实践的必要性
方法学
传统方法学
结构化方法
严格定义需求 划分开发阶段 指定规范文档
面向对象方法学
要素
方法,工具和过程
面向过程软件工程的开发过程
采用结构化分析,结构化设计和结构化实现完成软件开发的各项任务
软件生存周期划分成若干个阶段,然后按顺序完成各个阶段的任务
每个阶段的开始和结束,都有严格的标准,前一阶段的结束,是后一阶段开始的标准
在每一阶段结束之前,必须正式的进行严格的技术审查和管理复审
目的
是在给定成本、给定开发进度的前提下开发出高质量的、面向对象的软件产品
软件过程
软件开发人员在开发和维护软件中进行一系列的任务框架,涉及到工具方法和人的组织和行为
软件生存周期模型
软件生存周期模型极为软件开发模型,是描述软件开发过程中各种活动如何执行的模型是软件过程活动任务的结构框架
瀑布模型
瀑布模型也被称为生命周期模型或或线性顺序范型,将软件生命周期各个活动规定为依线性连接的若干阶段的模型,包括问题的定义,可行性研究,需求分析,概要设计,详细设计,编码测试和维护
特点
阶段间有顺序性和依赖性
推迟实现
质量保证
文档驱动
优点
一能清晰直观的表达软件开发全过程。 二,明确规定要完成的主要活动和任务。 三,用来作为软件项目工作的基础
缺点
一理想的线性开发模式缺乏灵活性。 二无法解决软件需求不明确或不准确的问题
适用范围
适用于于需求很明确的软件项目开发的模型
快速原型模型
原型模型是一个快速开发的过程,首先和用户沟通进行主要功能的需求分析和快速设计,然后建立一个原型,再请用户进行评价和反馈,开发人员根据用户的反馈,进一步细化需求,改进原型系统的设计如此反复,直至用户满意
出品速度快 逐步求精(一旦需求确定,就的模型将被抛弃,新的模型将被建立 用户对系统有了直观认识,开发人员对需求有了准确认识
一用户了解未来目标系统的概貌,可判断哪些功能是符合需要的,哪些方面需要改进。 二反复改进,最终建立完全符合用户需求的新系统 三克服瀑布模型的缺点,减少由于软件需求不明确,带来的开发风险
一开发原型系统使用的语言效率有时会很低,所选用的开发技术和工具不一定符合主流的发展 二,快速建立起来的系统结构,加上连续的修改,可能会导致产品质量降低
适于一些需求可变,模糊不定的软件系统的开发
增量模型
分批次
一有较大的灵活性,能够较短的时间内向用户提交一些有用的工作产品 二开发出一部分向用户展示一部分,可让用户及早看到部分软件,及早发现问题 三系统由构件组成,需求变更只变更部分构件,而不必影响整个系统
各个构件是逐渐入并已有的软件体系结构中的, 所以,加入构建必须不破坏已构造好的系统部分,存在所有构件集成不到一起的风险
适用于需求不明确,设计方案有一定风险的软件项目
螺旋模型
风险驱动
加入了瀑布模型和增量模型都忽略的风险分析,使用原型及其它方法来降低风险
需要有相当丰富的风险评估经验和这方面的专业技术,使该模型的应用受到一定限制
适用于大型复杂的系统
喷泉模型
面向对象
软件生命周期
一个软件从定义,开发和运行维护,直至最终被废弃,需要经历漫长的时期
三个时期
计划时期
问题定义
可行性研究
开发时期
需求分析
总体设计或概要设计
详细设计
编码
测试
运行维护时期
软件维护
软件
完成预定功能、性能,并对相应数据进行加工的程序和描述,数据及其操作的文档的集合
那是一种逻辑产品,而不是具体的物理实体
软件产品主要是开发研制,没有明显的制造过程
软件在使用过程中不存在磨损,消耗,老化等问题
软件的开发方式主要是脑力劳动还未完全摆脱手工的开发方式,大部分是“定做的”,生产效率低
软件成本相当的昂贵,软件费用不断增加,软件的研制需要投入大量的人力,物力和资金开发过程中,还需要对软件的产品进行质量控制,对每件产品进行严格的检验
软件对硬件和环境有不同程度的依赖性,为了减少这种依赖性,在软件开发过程中,提出了软件可移植性的问题
软件是复杂的,是人类有史以来生产的复杂程度最高的工业产品,软件是一个庞大的逻辑系统