软件工程 第一章 概述与开发模型

本文详细探讨了软件定义的四个方面,软件特点的抽象性与依赖性,以及根据功能、规模、工作方式和使用频率的分类。涵盖了软件生存周期、开发模型,如瀑布模型、螺旋模型和原型模型,以及软件工程的目标和原则。

软件定义:
1.与硬件相互依存
2.程序是完成特定功能和满足性能要求的指令序列
3.数据是程序运行的基础和操作对象
4.文档是与程序开发、维护和使用有关的图文材料

软件特点:
1.抽象性
2.无明显的制造过程
3.存在退化问题(跟不上时代)
在这里插入图片描述
4.软件对硬件和环境有着不同程度的依赖性
5.软件的复杂度越来越高

软件的分类
★按软件的功能进行划分:
本系统软件 :能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效工作的软件。是计算机系统必不可少的组成部分。如:操作系统、数据库管理系统、设备驱动程序、通信处理程序等。
支撑软件:是协助用户开发软件的工具性软件。如:文本编辑程序、文件格式化程序、磁盘向磁带做数据传输的程序、程序库系统等支持需求分析、设计、实现、测试和支持管理的软件。
应用软件:是在特定领域内开发,为特定目的服务的一类软件。如:商业数据处理软件、工程与科学计算软件、计算机辅助设计/制造软件(CAD/CAM)、系统仿真软件、智能产品嵌入软件、医疗制药软件、事务管理、办公自动化软件、计算机辅助教学软件(CAI)等。

★按软件的规模进行划分
类别 参加人员数 研制期限 源程序行数
微型 1 1~4周 0.5k(500行)
小型 1 1~6月 1k~2k
中型 2~5 1~2年 5k~50k
大型 5~20 2~3年 50k~100k
甚大型 100~1000 4~5年 1M(=1000k)
极大型 2000~5000 5~10年 1M~10M

★按软件的工作方式进行划分,
实时处理软件:指在事件或数据产生时,立即予以处理,并及时反馈信号,控制需要监测和控制过程的软件。主要包括数据采集、分析、输出三部分。
分时软件:允许多个联机用户同时使用计算机的软件。系统把处理机时间轮流分配给各联机用户,使各用户都感到只是自己在使用计算机。
交互式软件:能实现人机通信的软件。
批处理软件:把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件。

★按软件的服务对象的范围划分:
项目软件:也称定制软件,是受某个特定用户(或少数用户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。
产品软件 :是由软件开发机构开发出来直接提供给市场,或为千百个用户服务的软件。

★按软件的使用频度进行划分:
一次使用软件:也软件开发出来仅供一次使用。
频繁使用软件 :需要每天都及时进行数据处理的软件。

★按软件的失效的影响进行划分!
高可靠性软件(关键软件):一但失效会造成灾难性后果的软件。
一般可靠性软件 :一但失效,对整个系统带来的影响不大的软件。

软件危机
软件产品不符合用户的实际需要。
软件开发生产率的提高速度远不能满足客观需要,软件开发的生产率远低于硬件生产率和计算机应用的增长率。
软件产品质量差。
对软件开发成本和进度的估计通常不准确。
软件的可维护性差。
软件文档资料通常既不完整,也不合格。
软件的价格昂贵,软件成本在计算机系统总成本中所占比例逐年上升。

软件工程定义
是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

软件工程的目标和原则
1.基本目标
付出较低的开发成本。
达到要求的软件功能。
取得较好的软件性能。
开发的软件易于移植。
需要较低的维护费用。
能按时完成开发工作,及时交付使用。
2.说明
在实际开发具体项目中,企图让几个目标都达到理想的程度是很困难的。而且上述目标很可能是互相冲突的。
但有些目标之间存在互补的。
基本目标成为了判断软件开发方法或管理方法优劣的衡量尺度。
在这里插入图片描述
互斥:
如,只顾降低开发成本,同时可能降低了软件可靠性;过于追求软件性能,可能造成开发出的软件对硬件具有较大依赖性,一是可以影响软件可移植性,也可以影响开发成本的提高等。

软件工程的原则
模块化。模块是程序中逻辑上相对独立的成分,通过分解的手段可以将复杂的问题从时间或规模上划分成若干较小的、相对独立的、容易求解的子问题。
抽象和信息隐藏。抽象指的是提取事物最基本的特征和行为。信息隐藏是将模块设计成一个黑盒,将数据和操作的细节隐藏在模块内部并对外界屏蔽。
模块的高内聚和低耦合。模块之间有具松散的耦合,模块内部由较强的内聚。
确定性。所有概念的表达均应是规范的、确定的和无二义性的。
一致性。软件产品设计遵循同意、公认的方法和规范的指导,是开发过程的标准化。
完备性。管理和技术的完备性。

1.3软件生存周期与软件开发模型
1.3.1软件生存周期(Software life cycle)
概念
传统的软件生存周期是指软件产品从形成概念(构思)开始,经过定义、开发、使用和维护,直到最后被废弃的全过程。

软件生存周期三个阶段
(1)软件定义阶段(问题定义、可行性研究、需求分析)
问题定义。确定软件的目标系统、系统的定位(性质)及范围。
可行性研究。包括技术可行性、经济可行性、操作可能性、社会可行性等
需求分析。确定软件系统的功能需求、性能需求和运行环境的约束,并写出软件需求规格说明书、软件系统测试大纲、用户手册概要。

(2)软件开发阶段
软件开发阶段是指软件的设计与实现,可分成概要(总体)设计、详细设计、编码、测试等。
概要设计。概要设计指在软件需求规格说明书的基础上,建立系统的总体结构和模块之间的关系,定义功能模块及各功能模块之间的关系。
详细设计。详细设计对概要设计产生的功能逐步细化,把模块的内部细节转换为可编程的程序过程性描述。详细设计包括算法与数据结构、数据分布、数据组织、模块之间接口信息、用户界面等的设计。设计完成后应写出详细设计报告。
编码。编码又称编程。任务是把详细设计转换为能在计算机上运行的程序。
测试。测试可分为单元测试、集成测试、确认测试、系
统测试等。通常把编码和测试统称为系统的实现。

(3)软件运行和维护阶段
软件运行。把软件产品移交给用户使用。软件投入运行后的主要任务是使软件持久满足用户的需求。
软件维护。对软件产品进行修改或对软件需求变化做出响应的过程,也就是尽可能地延长软件的寿命。
软件生存周期可以分为以下8个阶段:问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、运行和维护。

1.3.2软件开发模型
软件开发模型是软件工程思想的具体化,是实施于过程模型中的软件开发方法和工具,是在软件开发实践中总结出来的软件开发方法和步骤。总体来说,软件开发模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。有:瀑布模型、螺旋模型、原型模型等。

1.瀑布模型(线形顺序模型)
瀑布模型规定了各项软件工程活动,包括制定开发计划、进行需求分析和说明,软件设计,程序编码,测试及运行维护。规定了它们自上向下、互相衔接的固定次序,如同瀑布流水,逐级下落。
如图
在这里插入图片描述
瀑布模型开发软件的特点:
1)阶段间具有顺序性和依赖性
2)推迟实现的观点。(不重要)
3)每个阶段必须完成规定的文档每个阶段结束前完成文档审查及早改正错误。

瀑布模型开发软件的原则
1)承接上一项活动中接收本项活动所需的对象作为输入。
2)利用输入进行本项活动。
3)把本项的活动成果作为输出传送下一项。
4)对本项工作进行评审,若评审正确才能进行下一项工作。

瀑布模型特点
瀑布模型为软件开发和软件维护提供了一种有效的管理图式。
消除非结构化软件、降低软件复杂度、促进软件开发工程化。
缺乏灵活性,无法解决软件需求不明确或不准确的问题
注:特点三最重要,特点也是缺点,无法返回去处理用户需求不明确的问题

2.螺旋模型
开发复杂的大型软件,开发一个原型往往达不到要求。螺旋模型在瀑布模型的基础上加入了风险分析,通常用来指导大型软件项目的开发。
螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动,
即:
制定计划–确定软件目标,选定实施方案,厘清项目开
发的限制条件。
风险分析–分析所选方案,考虑如何识别和消除风险。
实施工程–实施软件开发。
用户评估–评价开发工作,提出修正建议。

注:适用于大型或复杂的软件开发
在这里插入图片描述
螺旋模型的特点

螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。
在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。

3.原型模型
原型模型如图所示,从需求分析开始,软件开发者和用户一起定义软件的总目标及说明需求,并规划出定义的区域,然后快速设计软件中对用户可见部分的表示。快速设计导致了原型的建造,原型由用户评估,并进一步求精待开发软件的需求,逐步调整原型使之满足用户需要,这个过程是迭代的。
在这里插入图片描述
★原型模型的特点
开发人员和用户在"原型"上达成一致。可以减少设计中的错误和开发中的风险,也减少了对用户培训的时间,而提高了系统的实用、正确性以及用户的满意程度。
缩短了开发周期,加快了工程进度。
降低成本。在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。
注:
重点是特点一:开发人员和用户在“原型”上达成一致
适用于普通,一般的软件开发

原型模型的缺点
当告诉用户,还必须重新生产该产品时,用户是很难接受的。这往往给工程继续开展带来不利因素。
开发者为了使一个原型快速运行起来,往往在实现过程中采用折中手段。
不宜利用原型系统作为最终产品。采用原型模型开发系统,用户和开发者必须达成一致:原型被建造仅仅是用户用来定义需求,之后便部分或全部抛弃,最终的软件是要充分考虑了质量和可维护性等方面之后才被开发。
特点二不重要,了解即可

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值