1-第一章 软件工程概述.doc_第1页
1-第一章 软件工程概述.doc_第2页
1-第一章 软件工程概述.doc_第3页
1-第一章 软件工程概述.doc_第4页
1-第一章 软件工程概述.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 软件工程概论1 软件的概念、特点与发展一.软件1. 软件的内容:程序、数据和文档.其中程序和数据是软件的可执行部分,与程序有关的文档资料是软件的不可执行部分.2. 开发一个软件项目的最终产品由如下几部分构成:(1) 应用程序:直接面向用户的特定项目而编写的程序和相关数据;(2) 系统程序:应用程序赖以运行的环境,主要面向计算机硬件,如:OS、DBMS、通信系统及图形软件包、编辑程序等;(3) 面向用户的文档资料:包括系统的使用与维护等;(4) 面向开发者的文档资料:包括可行性研究报告、项目开发计划、需求规格、设计说明等.二.软件的特点1. 软件是抽象的逻辑实体,是思维的产物,不具备实体性;2. 软件运行中不会磨损与老化,但投入运行需要维护;3. 工程软件研制花费大,因此一般价格昂贵;4. 软件求解的问题及其程序逻辑结构一般比较复杂;5. 早期软件开发受计算机系统及其开发方式的局限,因此效率低,产品质量很难满意。三. 软件的发展 软件的发展经历了几个主要阶段:1. 程序设计阶段:根据具体的问题编写出程序,以个体方式为主;2. 程序系统阶段:计算机系统从单用户向多用户应用发展,软件规模扩大, 软件开发方式已由个体方式转向”作坊式生产方式”,此阶段由于系统复杂性及其维护的困难,已经出现了早期的” 软件危机”;3. 软件工程阶段:随着软件规模越来越大,复杂程度越来越高,原有的软件开发方式已远远不能适应软件生产的需要,出现了”软件危机”,为了摆脱”软件危机”,逐渐发展起当今日趋成熟的软件工程.下图”硬件/软件成本变换趋势”说明随着计算机系统的发展,软件开发成本越来越大,“软件危机”的加剧越来越深。代价(占总成本%) 100 80 硬件 60 40 软件 20 早期 中期 后期 变化时期 软件产业危机的增长 软件复杂度 需求增长 技术进步 时间各个时期的发展情况和特点见下表(教材P2表1-1)。阶 段程序设计(程序)程序系统(软件)软件工程(软件产品)软件产品程序程序及说明书产品软件主要程序设计语言汇编语言及机器语言高级语言高级语言系统软件工作范围程序编写程序设计与测试软件生存期需求对象程序设计者本人少数用户市场用户软件开发组织个人开发小组开发小组、软件工厂软件规模小型中小型大中型决定软件质量的因素个人编程技术小组技术水平管理水平开发技术和手段子程序、程序库结构化程序设计数据库、开发工具与开发环境、工程化开发方法、标准和规范。维护责任者程序设计者开发小组专职维护人员硬件特征价高、存储容量小、可靠性差。降价、速度、容量及可靠性明显提高。向超高速、大容量及微型化发展。软件特征不被重视软件技术的发展不能满足需要,出现软件微机。开发技术进步,尚未获突破性进展,价高,软件危机未完全摆脱。四.软件危机的主要表现 软件危机:计算机软件开发和维护过程中遇到的一系列问题。主要表现在如下方面:1. 软件成本与开发进度难以估计;2. 用户对开发出的软件很难满意;3. 软件产品的质量往往靠不住;4. 软件常常很难维护;5. 软件生产效率低;6. 软件成本越来越大;7. 软件技术的发展远远满足不了计算机应用的普及与深入的需要.五.解决软件危机的途径1. 吸收其它工程项目中积累的丰富经验、科学原理、技术与方法,在开发软件的过程中应有良好的组织,严格的管理,相互的友好协作;2. 不断总结经验,探索软件开发中应遵循的原理、过程、技术和方法;3. 根据不同的应用领域,使用用户常用的自然语言,描述问题,由计算机自动完成推理和运算,从而解决用户提出的问题,即软件开发工程化的方法。2 软件生存周期及其软件开发的方法和技术一软件工程 软件工程:采用工程的概念、原理、技术和方法来开发软件的方法。它是将管理技术与当前最好的技术方法相结合的一门学科。它强调使用生存周期方法学和各种先进的分析与设计技术。近几十年来,人们围绕着实现软件优质高产这个目标,从技术到管理做了大量的努力,逐渐形成了”软件工程学”这一新的学科.软件工程学所包含的内容: 软件开发方法学 软件开发技术 软件工具 软件工程环境软件工程学软件管理学软件工程管理软件经济学1.软件开发方法学的形成 无统一方法,为个人的活动采用结构化的方法编写程序“结构分析”与”结构化设计”等软件开发技术(将软件开发分为若干阶段:需求分析软件设计编码)及从不同基点出发的其它软件开发方法,如Jackson方法、LCP方法等。各种方法的具体内容虽然各有不同,但它们都遵循某些共同或类似的原则,都对软件开发步骤和文档格式提出了规范化的要求.软件生产进入了有章可寻的、向结构化和标准化迈进的“工程化”阶段。2.软件工具:帮助开发软件的软件. 如编译阶段中的编译程序、编辑程序、连结程序、操作系统都属于软件工具。在分析阶段、设计阶段和测试阶段相对应的“工具箱”或“集成工具”等。3.软件工程环境:方法与工具的结合,加上配套的软、硬件支持称为软件工程环境。如UNIX环境、Ada环境以及各种工作站。4.软件工程管理:按照进度及预算完成软件计划,实现预期的经济和社会效益。软件管理可以借助计算机来实现。一个理想的软件工程环境,应该具备支持开发和支持管理两个方面的工具。二. 软件生存周期1. 软件生存周期:从软件定义、开发、使用、维护到淘汰的全过程。在软件开发过程中要回答一系列的问题:(1) 提出问题?(2) 有无解决问题的办法?(3) 达到的标准?(4) 问题如何解决?(5) 解决问题的具体方法?(6) 如何实现?(7) 产品的检验?(8) 产品的使用和维护等。2. 划分软件生存周期阶段的原则:(1) 每一个阶段的任务尽可能独立;(2) 同一阶段内的任务性质尽可能相同;(3) 每一个阶段任务的开始和结束有严格的标准。3. 软件生存周期一般由如下三个阶段组成:(1) 定义阶段:系统分析;(2) 开发阶段:系统的设计与实现;(3) 维护阶段:持续解决用户需求中提出的问题。三. 软件开发的方法和技术1.瀑布型:按照软件生存周期的划分,明确规定每一个阶段的任务。此种方法适用于软件需求比较明确、开发技术比较成熟、工程管理比较严格的情况。它的特点:(1) 各个阶段的顺序性和依赖性;(2) 划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3) 每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。开发阶段划分与开发过程如下图:问题定义可行性研究需求分析总体设计详细设计编 码测 试运行维护 定义阶段 开发阶段 维护阶段2.渐增型:从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。如此反复,直至软件人员和用户对所设计完成的软件系统满意为止。在渐增型开发下的软件是随软件开发的过程而逐渐形成的。渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。多数研究性质的试验软件,一般采用此方法。开发过程如下图:问题描述软件运行和测试软件设计和编码(渐增)软件需求分析(渐增)满意否 NO YES 软件交付使用3.变换型:从软件需求的形式化规格说明出发,经过一系列的程序变换,得到最终的程序系统。该方法必须有严格的数学理论和形式化技术的支持,目前尚处于研究和实验阶段。开发过程如图所示:原型检查软件需求形式化规格说明软件设计形式化规格说明程序变换变换变换3 软件质量的评价和审查一.软件质量的评价1. 软件的设计是否符合要求,能否可靠地运行。2. 软件能否安全地排除非法侵入和意外事件,确保软件系统正常运行。3. 软件结构良好,具有易读性和可理解性,从而方便软件的维护。4. 软件系统具有良好的界面,便于用户使用。5. 软件生存周期中各阶段文档齐全,便于配置管理。二.软件质量的审查 软件质量的审查是保证软件质量的重要措施,它包括

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论