




免费预览已结束,剩余50页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湘潭大学,软件工程,教材:软件工程的原理、方法和应用(第3版)作者:石,顾春华,讲师:张灵山,第一章导论,一些新技术的发明创造会给其他看似无关的技术领域、商业企业、公众甚至整个社会文化带来深远而意想不到的影响和影响。这就是所谓的“偶然效应法则”。计算机软件已经成为世界舞台上最重要的科学技术领域,是“偶然效应法则”的最佳体现。当前的软件技术具有产品和产品生产载体的双重功能。作为一种产品,软件展示了计算机硬件所体现的计算能力。软件作为产品生产的载体,为计算机控制(操作系统)、信息通信(网络)和应用开发与控制(软件工具和环境)提供了基础平台。该软件提供了条关于我们这个时代最重要产品的信息。目前,庞大的软件产业已经成为工业经济的主导因素。早期的独立程序员也被许多专业软件开发团队所取代。像过去的独立程序员一样,软件开发人员在开发现代计算机系统时仍然面临同样的问题:为什么软件开发需要这么长时间?为什么开发成本仍然很高?为什么我们不能在向客户交付软件时发现所有的错误?为什么维护现有的程序要花费大量的时间和人力?为什么软件开发和维护的过程很难衡量?1.1软件和软件危机,软件定义软件是一种可执行的计算机程序,它能完成预定的功能和性能,包括程序正常执行所需的数据,以及描述程序操作和使用的相关文件(R.S.Pressman)软件=程序(包括数据)文档程序是一系列适合计算机处理的语句,用编程语言描述,以解决特定问题。数据是一种数据结构,使程序能够正常操作信息。文档是与程序开发、维护和使用相关的图形材料。软件的特点,软件和硬件的不同软件开发不同于硬件设计;软件制造不同于硬件制造。软件维护不同于硬件维护。软件是逻辑的,而不是物理的。软件开发与人密切相关。软件开发成本高;软件生产是一个简单的拷贝;该软件不会磨损和老化。软件受环境影响很大。软件维护容易引起新的问题。-软件危机,其表现在估计软件开发的成本和进度方面非常不准确;用户不满意;质量非常不可靠。没有适当的文件;软件成本的比例上升;供不应求:软件开发的生产率跟不上计算机应用的快速深入趋势。-软件危机,硬件/软件成本趋势,100%,0%,1955,1970,1985-软件危机,软件技术进步滞后于需求增长-软件危机,软件危机的原因是客观的:软件本身的特性-逻辑组件-大规模,高复杂性和主观性:不正确的开发方法-忽略需求分析-个性化的方式:软件开发=编程-轻视软件维护-软件危机,解决方案组织和管理-工程项目管理方法和技术措施-软件开发技术和方法-软件工具促进了软件工程的诞生根据工程原理和方法组织软件开发是解决软件开发问题的主要途径。1.2软件工程的研究范畴,软件工程的研究范畴“软件工程”一词是在1968年由北大西洋公约组织在联邦德国召开的一次会议上提出的。有许多定义。中心思想是将软件视为工业产品。在软件工程研究领域,软件开发方法为软件开发提供了一种“如何做”的技术个性化方法-结构化方法-面向对象方法-软件复用软件工具提供了一种自动或半自动的软件支持环境单一工具-工具箱,集成工具-环境软件工程管理目的:为了按照进度和预算完成软件规划内容:成本估算,进度安排,人员组织,质量保证等。 1.3随着软件工程的发展,三种编程范式过程编程范式由一组被动数据和一组主动过程组成。程序=数据结构算法侧重于程序的过程和基本控制结构。最小粒度的面向对象编程范式数据及其操作封装在对象中。程序=对象消息关注程序中的对象。更大粒度的基于组件的编程范式组件是一种通用的、可重用的标准化对象类程序=组件体系结构侧重于适合整个领域的类对象,具有更大粒度、过程化和面向对象的编程范式、银行存款处理业务,传统的第三代软件工程的软件工程开发过程经历了以下几个阶段:结构分析、结构设计、面向过程的编码、软件测试、面向对象的软件工程开发过程:面向对象分析和对象提取、对象详细设计、面向对象的编码和测试, 基于组件的软件工程开发过程经历了以下几个阶段:领域分析和测试计划定制、领域设计、构建可重用的组件库、发现和集成组件。 1.4软件工程的应用软件工程指导中小型软件工程指导大型软件工程的成就解决软件开发中的一些问题(非必要的)软件生产率的稳步增长软件工程开发的前景随着软件复用,软件开发是为软件复用服务,概述,软件工程已经发展成为一门指导软件生产工程的新学科,涵盖软件开发方法论、软件工程管理、软件工具和环境等。自1968年提出以来的30年里。随着程序设计从结构化程序设计发展到面向对象程序设计,软件工程已经从传统的软件工程发展到面向对象的软件工程,并且正在向新一代的基于组件的软件工程发展。在长期的实践中,软件工程积累了许多行之有效的原则和方法,并被业界广泛接受和应用。第一部分:传统软件工程,第2章软件生命周期与软件过程,第3章结构分析与设计,第2章软件生命周期与软件过程,第2章软件生命周期传统软件过程软件演化模型形式化方法模型统一过程与敏捷过程软件可行性研究,第2.1章软件生命周期,软件生命周期:软件项目是从问题开始,直到软件产品最终退役(废弃)。软件生命周期分为三个阶段:规划、开发和维护。整个软件生命周期被划分为几个相对独立的小阶段,每个阶段都有明确而有限的任务,从而降低了整个软件工程的难度,提高了软件开发的生产率。典型的软件生命周期,软件生命周期的主要活动,需求分析显然需要解决问题(从用户的角度)。建立需求模型:描述功能、性能、约束、接口等。软件的。软件分析以需求模型为基础,从开发人员的角度分析软件。建立与需求模型一致的分析模型:描述软件的逻辑模型。软件设计将分析模型转化为设计模型。软件设计分为两个阶段:总体设计和详细设计。总体设计:确定软件的总体结构和总体设计原则。详细设计:确定每个组件的数据结构和操作。建立软件设计模型:考虑实现技术和平台。作为软件生命周期的主要活动,编码使用编程语言将设计文档翻译成源程序。建立一场软战软件过程模型使用一个合理的框架来描述软件生命周期中软件开发活动的有序过程。软件过程模型是软件过程的抽象表示,它从特定的角度表示开发过程。软件生命周期中的阶段与软件过程中的活动基本相同。2.2传统软件过程,传统过程模型瀑布模型基于软件生命周期的线性开发模型快速原型模型快速原型模型迭代开发模型基于原型,瀑布模型,W.Royce在1970年提出线性开发模型,强调软件文档的每个阶段都必须完成指定的文档。每个阶段都必须检查完成的文档、瀑布模型、特征阶段的顺序和依赖性。质量保证的观点有问题。它不适合具有模糊需求的系统开发的初始阶段。很难完全理解软件需求、快速原型模型、需求、原型开发、最终系统设计、原型评估、最终系统实现、用户反馈、快速原型过程模型、快速原型模型、特征“真实”原型能使用户快速给出反馈。循环回溯和迭代:一个非线性模型。使用快速开发工具。渐进式:补充和修改原型以获得最终系统。废弃类型:原型被废弃。应该防止的偏差不能被放弃,从而影响软件的质量。2.3软件演化模型,演化开发模型:它是一种渐进的开发模型,也称为迭代开发模型,它使软件开发在迭代中逐渐完善。增量模型是瀑布模型的序列特征和原型方法的迭代特征相结合的产物。软件被视为一系列相互关联的增量,每次迭代完成一个增量。以少量增量提供软件。第一个增量通常是软件的核心。功能在先前增量的基础上开发以下增量。每个增量开发都可以通过瀑布或快速原型模型来完成。每个增量开发的顺序与整个迭代相结合。增量模型、螺旋模型、特征瀑布模型(顺序、开发和审查)快速原型(迭代)风险分析-发现和控制风险螺旋循环计划:确定目标、选择方案、选择战略风险分析以完成目标:从风险角度分析战略开发:开始审查开发活动:评估前一步的结果、规划下一轮工作、螺旋模型、组件集成模型、组件集成模型主要适用于面向对象的软件开发。面向对象对象类继承继承继承消息的基本概念面向对象对象类继承消息通信、组件集成模型、组件在某一领域是通用的,可重用软件组件存储可重用组件以形成组件库特征面向对象组件库融合螺旋模型特征支持软件开发迭代方法软件重用。组件集成模型,2.4形式方法模型,形式方法模型:基于程序转换和验证技术的软件开发转换模型(Transformation Model)clean room模型,转换模型,开发过程的第一步:确定形式需求规格说明(使用形式语言)第二步:执行自动程序转换(由转换系统完成,生成形式开发记录)第三步:测试形式开发记录的特征形式软件开发方法基于模型、基于代数、基于顺序逻辑的形式需求规格说明转换技术自动程序生成技术确保正确性,转换模型、转换模型、洁净室模型、洁净室思想消除了软件生产是在“干净”的状态下实现的。增量模型将软件视为一系列增量。每个增量都是一个以正式方式表达的“盒子”。形式化盒结构表示的分析与设计。正确性验证。洁净室模型、需求收集、盒子结构规范、正式设计、统计使用测试、正确性证明、代码生成和检查、测试计划、认证、需求收集、盒子结构规范、正式设计、统计使用测试、正确性证明、代码生成和检查、测试计划、认证、需求收集、盒子结构规范、正式设计、统计使用测试、正确性证明、代码生成和检查、测试计划、认证、增量1、增量2、增量N、洁净室模型、软件过程模型特征概要、 2.5统一过程和敏捷过程,统一过程原理统一过程(RUP)描述了应该做什么、如何做、何时做以及为什么做,并描述了一组按一定顺序完成的活动。 敏捷开发是一种以人为中心的、迭代的、逐步的开发方法。它的软件开发过程被称为“敏捷过程”。RUP,RationalUnifiedProcess将软件开发分为四个阶段:初始阶段(首先开始)定义整个项目的范围;精化(精化)-制定项目计划,描述功能,建立架构框架;构建(Build)-构建软件产品;迁移将软件产品转移给最终用户。每个阶段被分成几个迭代,每个迭代都有一个核心工作流,并将经历需求、分析、设计、实现、测试和其他活动。敏捷过程敏捷开发是一种以人为本、循序渐进的迭代开发方法。敏捷过程是将一个大项目分成几个相互关联的小项目,这些小项目可以独立运行并分别完成。在此过程中,软件始终可用。敏捷开发重视个人,交互比过程和工具更好。可以运行的软件比全面的文档更好。客户合作比合同谈判更好。对变化的反应比遵循计划要好。敏捷开发的12个原则是尽早并持续地提交有价值的软件,以允许需求的变化。利用变更为客户创造优势,并尽快持续提交运营软件。业务人员和开发人员必须每天一起工作,建立一个以积极进取的员工为中心的项目团队,提供环境和支持,并信任他们的工作。注意团队内部面对面的交流。根据操作软件评估项目进度。倡导可持续发展,始终注重技术的卓越和良好的设计。为了提高敏捷性,简单性是最基本和最好的框架、需求和设计。自组织团队应该定期思考如何更有效地工作,然后进行相应的调整和极端编程。极值编程是一种轻量级和敏捷的软件开发方法。它由沟通、简单、反馈和勇气四个价值观组成。这是为了改善和加强沟通。从简单开始,寻求反馈和敢于实践是12个核心实践。它是一个完整的团队,规划对策、测试、简单设计、结对编程、小软件版本、设计改进、持续集成、代码共享、编码标准、系统隐喻和可持续速度。这也是一个2.6软件可行性研究。它的目的是研究这个项目是否可能实现,是否值得回答为什么?研究的内容包括经济可行性、技术可行性、操作可行性、法律可行性、可行性研究的步
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年吉林省长春市朝阳区吉林大学附属中学九年级5月中考模拟预测数学试题(含部分答案)
- 地理●全国甲卷丨2021年普通高等学校招生全国统一考试地理试卷及答案
- 2025标准建筑设计合同范本
- 2025年中国塔扇行业市场前景预测及投资价值评估分析报告
- 甘肃省武威六中2021届高三上学期第三次月考试题(政治)
- 2025家庭居室设计施工合同(示范文本)样本
- 2025船舶出售委托合同范本
- 2025合同范本光伏发电项目购销安装合同模板
- 2025如何订立租赁合同范文
- 2025【合同范本】车辆买卖过户合同
- 民法司法考试题及答案
- 河南省修武县西村乡初中2024-2025学年九下5月语文中考模拟试题(含答案)
- Machine-Cmk-设备能力指数Cmk分析表
- 2025年全国保密教育线上培训考试试题库【完整版】附带答案详解
- 江西省南昌市2025届高三下学期二模生物试题 含解析
- 幼儿园小班科学领域《云朵和雨点》课件
- (二模)青岛市2025年高三年级第二次适应性检测历史试卷(含标准答案)
- 2024年重庆市高考生物试卷(含答案解析)
- 中国历史文化知识题库100道附完整答案(必刷)
- 西安电子科技大学电子信息与通信工程类专业培养方案(本科层次)
- GB/T 42064-2022普通照明用设备闪烁特性光闪烁计测试法
评论
0/150
提交评论