软件工程概述

软件等于数据+程序+文档
软件的特点:
软件是一种逻辑实体而不是具体的物理实体,因而软件具有抽象性
软件的生产与硬件不同,它没有明显的制造过程
软件的运行和使用期间,没有硬件的机械磨损,老化问题
软件的开发和运行受到计算机系统的限制,对计算机系统有不同的依赖性
软件没有完全摆脱手工开发方式
软件本身昂贵,
软件工作涉及到社会因素

软件危机表现:
1.对软件开发的成本和进度估算不正确
2.用户对已完成的软件不满意
3.软件可靠性差
4.软件常常不可维护,可重用性差
5.软件成本在计算机系统总成本中所占的比例上升
7.软件开发生产率提高的速度跟不上计算机应用迅速普及深入的趋势

产生软件危机原因:
客观:软件不同于硬件,软件是逻辑部件
软件运行中发生的错误很可能是开发阶段的错误
软件规模庞大不易于维护
主观:没有重视软件需求分析
软件是完整的配置主要包括程序、文档、数据 ,必须认识到程序只是软件的一部分
轻视维护
软件工程学的一个 重要目标就是提高软件的可维护性,减少软件的代价
解决软件危机途径: 管理、技术
管理:工程项目管理
技术:软件开发技术和方法、软件工具
1.清楚的认识软件是由程序文档和数据组成并且缺一不可,软件应该是一种组织良好管理严密。各类人员协同配合共同完成的工程项目应该推广使用在实践中总结出来的开发软件的成功的技术和方法
什么是软件工程:软件工程是用工程、科学和数学的原则和方法研制、维护计算机软件的有效的管理和技术的方法,把系统的、规范的、可度量的途径用于软件开发、运行和维护过程
软件工程 三要素: 方法、工具、过程
软件工程项目的基本目标: 付出较低的开发成本,功能达到要求、性能尽可能提高
开发的软件易于移植、需要较低的维护费用、可以按时完成开发工作,及时交付使用
软件工程的 原则: 八条(抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性)
信息隐藏:将实现的细节隐藏在模块内部,不让模块的使用者直接访问,使用与实现分离的原则,使用者只能通过模块接口访问模块中封装的数据
软件工程的本质特征(软件工程特点):
1.软件工程关注与大型程序的构造
2.软件工程的中心课题是控制复杂性
3.软件经常变化
4.开发软件的效率非常重要,
5.和谐的合作是软件开发的关键
6.软件必须有效的支持他的用户(功能要求、性能要求),
7.软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(啥都得懂)
软件工程基本原理:(7条)
1.1.用分阶段的生命周期计划严格管理 阶段(软件定义、可行性研究阶段、系统需求分析、系统设计、编码、测试、交付、维护)
2.坚持进行阶段评审(软件中的大部分错误是在设计时期,错误发现越晚所付出的代价越高)
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应该能够有个清楚的度量/评价
6.开发人员应该尽可能的少而精
7.承认不断改进软件工程实践的必要性
软件工程方法学:
通常把软件生命周期全过程中使用一整套技术的集合方法(方法、工具、过程)
两种软件工程方法学: 传统方法学、面向对象方法学(UML)
传统方法学:面向数据流的(结构化的) 顺序、选择、循环逻辑结构
两只程序设计方法:结构化程序设计 程序 = 数据结构+算法
面向对象程序设计 程序=对象+消息
区别: 结构化程序是可以清晰完全分开的
面向对象程序OOA和OOD 无法完全分开
软件生命周期: 问题定义、可行性分析、需求分析、软件设计、编码、测试、软件维护
问题定义: 要解决的是什么
可行性: 经济可行性、技术可行、DFD 上一个阶段所确定的问题有行得通的方法吗
需求分析:系统逻辑模型(DFD+DD)产生需求分析说明书,重要任务是用正式文档准确记录对目标系统的需求,SRS 规格说明书,主要是确定目标系统必须具有哪些功能
总体设计:模块结构图(系统结构图)SC,未来要开发的软件体系结构
软件开发模型:
1.传统开发模型
瀑布模型:
一个接一个, 自上而下,无法回头,但是在一开始用户的需求往往表达不明确
特点:1.阶段剑具有书序性和依赖性:必须等前一个阶段工作完成之后才能进行下一个阶段的工作,
前一个阶段的输出文档后
有点:2.推迟实现(编码和测试)的观点:在编码之前加上了分析和设计逻辑和物理设计,
3.质量保证观点:每个阶段都必须完成规定的文档,并且对文档进行评审
瀑布模型是一个文档驱动模型
快速原型:
1.特点:根据“用户一开始不能清楚表达需求” 快速开发一个原型交付使用,提出一些需求形成用户反馈再到需求分析阶段修改需求分析说明书对原型进行修改后再交付一个可使用的原型,再次提出意见,进行一个循环操作,直到需求分析结束,开始进行设计编码测试实现维护
快速开发,获取需求是个迭代过程,低成本,种类:渐近型(在原型的基础上进行开发)、抛弃型(重新改进行开发抛弃原型)

适合中小型需求模糊的情况


2.演化开发模型
增量摸(渐增模型):使用增量模型的开发软件,本身就是一个软件,功能单一,每个增量都可用,一个一个实现集成,每个都交付给客户使用,一个一个往上加,重点在集成上 ,每个增量都是在前一个增量的基础上开发,不断迭代,每个增量的开发可用瀑布或快速原型模型,
螺旋模型 :
使用原型及其他方法来尽量降低风险,是快速原型的升级版,每个阶段之前都增加了风险分析的快速原型模型,是风险驱动的快速模型
瀑布+快速原型+风险分析
螺旋式周期:
1.确定目标,选择方案,选定完成目标的策略
2.风险角度分析该策略
3.启动一个开发阶段
4.评价前一步的结果,计划下一轮的工作
构建集成模型:在螺旋模型的产品开发阶段采用:查找可用构建,提取构建,不存在就开发一个构建库-进行下一次迭代 软件重用的思想,面向对象思想,基于构建库存,支持软件开发的迭代方法,基于瀑布模型开发
3面向对象开发模型
转换 模型
构建集成模型:
软件高度可重用,
4形式化开发模型:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值