软件与软件工程课件_第1页
软件与软件工程课件_第2页
软件与软件工程课件_第3页
软件与软件工程课件_第4页
软件与软件工程课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

软件与软件工程本章目标2了解软件的概念,特点及主要分类了解软件危机的表现及其产生原因掌握软件工程的概念,以及软件工程的基本原则了解软件开发的方法了解与软件开发项目相关的常用工具了解软件工程人员的职业道德目录3第一节软件第二节

软件危机第三节

软件工程第四节

软件开发方法第五节

软件工程工具第六节

职业道德第一节软件1.1.1软件的概念及特点1.1.2软件的分类1.1 软件

1.1.1软件的概念及特点概念:计算机软件是由专业人员开发并长期维护的软件产品。完整的软件产品包括了在各种不同容量和体系结构计算机上的可执行的程序,运行过程中产生的各种结果,以及以硬复制和电子表格等多种方式存在的软件文档。51.1 软件

特点:1)具有抽象性2)无明显的制造过程3)存在退化问题4)对计算机系统有着不同程度的依赖性5)尚未完全摆脱人工的开发方式6)软件本身是复杂的7)成本相当昂贵8)相当多的软件工作涉及社会因素61.1软件1.1.2软件的分类7第二节软件危机1.2.1软件危机的表现与原因1.2.2软件危机的启示1.2软件危机1.2.1软件危机的表现与原因在软件开发的过程中,会经常出现一些不能按时完成任务、产品质量得不到保证、工作效率低下和开发经费严重超支等现象。计算机软件的开发、维护和应用过程中普遍出现的这一些严重的问题便是软件危机91.2软件危机

主要表现1)产品的功能或特性与需求不符2)相比硬件,软件代价过高3)质量难以保证,难以发挥硬件潜能4)难以准确估计开发、维护的费用和开发周期5)难以控制开发风险,开发速度赶不上市场变化6)软件产品修改、维护困难7)软件文档不完备,存在内容与产品不符的情况101.2软件危机

本质原因:人们对软件产品认识的不足以及对软件开发的内在规律理解的偏差具体原因1)忽视开发前期的需求分析2)开发过程缺乏统一、规范化的方法论指导3)文档资料不齐全或不准确4)忽视与用户之间、开发组成员之间的交流5)忽视测试的重要性6)不重视维护,或维护工作困难7)对产业认识不充分,缺乏经验8)没有完善的质量保证体系111.2软件危机1.2.2软件危机的启示

软件危机给我们的最大启示,是使我们更加深刻的认识到软件的特性以及软件产品开发的内在规律。软件产品是复杂的人造系统,具有复杂性、不可见性和易变性,难以处理。个人或小组在开发小型软件时使用到的非常有效的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用。从本质上讲,软件开发的创造性成分很大、发挥的余地也很大,很接近于艺术。它介于艺术与工程之间的某一点,并逐步向工程一段漂移,但很难发展到完全的工程。121.2软件危机1.2.2软件危机的启示

软件危机给我们的最大启示,是使我们更加深刻的认识到软件的特性以及软件产品开发的内在规律。计算机和软件技术的快速发展,提高了用户对软件的期望,促进了软件产品的演化,对软件产品提出了新的、更多的需求,难以在可接受的开发进度内保证软件的质量。几乎所有的软件项目都是新的,而且是不断变化的。项目需求在开发过程中会发生变化,而且很多原来预想不到的问题会出现,对设计和实现手段进行适当的调整是不可避免的。“人月神话”现象——生产力与人数并不成正比。13第三节软件工程1.3.1软件工程的概念1.3.2软件工程研究的内容1.3.3软件工程目标和原则1.3.4软件工程知识体系1.3软件工程1.3.1软件工程的概念IEEE对软件工程的定义为:1)将系统化、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件2)对1)中所述方法的研究具体说来,软件工程是以借鉴传统工程的原则、方法,以提高质量,降低成本为目的指导计算机软件开发和维护的工程学科。它是一种层次化的技术151.3软件工程161.3软件工程1.3.1软件工程的概念软件工程的根基在于对质量的关注;软件工程的基础是过程层,它定义了一组关键过程区域的框架,使得软件能够被合理和及时地开发;软件工程的方法提供了建造软件在技术上需要“做什么”,它覆盖了一系列的任务,包括需求分析、设计、编程、测试和支持等;软件工程的工具对过程和方法提供了自动的或半自动的支持。而软件工程本身是一个交叉学科,涉及多种学科领域的相关知识,包括工程学、数学、计算机科学、经济学、管理学、心理学等。171.3软件工程1.3.1软件工程的概念软件工程的目标:关注质量软件工程的三要素:过程、方法和工具181.3软件工程1.3.2软件工程研究的内容

软件工程研究的内容主要包括以下两个部分:软件开发技术。主要研究软件开发方法、软件开发过程、软件开发工具和环境。软件开发过程管理。主要研究软件工程经济学和软件管理学。191.3软件工程1.3.3软件工程目标和原则软件工程要达到的基本目标包括:达到要求的软件功能取得较好的软件性能开发出高质量的软件付出较低的开发成本需要较低的维护费用能按时完成开发工作,及时交付使用201.3软件工程1.3.3软件工程目标和原则软件工程的7条基本原则:用分阶段的生命周期计划进行严格的管理坚持进行阶段评审实行严格的版本控制采用现代程序设计技术软件工程结果应能清楚的审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性211.3软件工程1.3.4软件工程知识体系IEEE在2014年发布的《软件工程知识体系指南》中将软件工程知识体系划分为以下15个知识领域。221.软件需求2.软件设计3.软件构建4.软件测试5.软件维护6.软件配置管理7.软件工程管理8.软件工程过程9.软件工程模型和方法10.软件质量11.软件工程职业实践12.软件工程经济学13.计算基础14.数学基础15.工程基础第四节软件开发方法1.4.1基本的软件开发方法1.4.2开源软件开发方法1.4.3群体化软件开发方法1.4软件开发方法1.4.1基本的软件开发方法软件开发方法是一种使用定义好的技术集及符号表示组织软件生产的过程,它的目标是在规定的时间和成本内,开发出符合用户需求的高质量的软件。常见的软件开发方法包括:1)结构化方法2)面向数据结构方法3)面向对象方法4)形式化方法此外,软件开发方法还有问题分析法、可视化开发方法等。241.4软件开发方法1.4.2开源软件开发方法开源软件开发指的是由开源软件项目开发开源软件或类似原件的过程,其中,开源软件的源代码是公开可用的。这些软件产品及其源代码在开源许可下可用,它们常常被用于研究、更改和改进其设计。开源项目可分为以下4类:1)各种各样的软件程序和库2)发行版3)其他开源项目4)书籍或独立文档项目

251.4软件开发方法1.4.2开源软件开发方法开源项目的工作方式:1)意识到项目需求的个人宣布了公开开发项目的意图2)开发人员在代码库上工作,将其作为开源程序的第一个版本发布3)到期项目的源代码向公众发布4)一个完善的开源项目可以由感兴趣的外部用户派生

261.4软件开发方法1.4.3群体化软件开发方法群体化软件开发方法最大的特点是面向公众。核心原则:1)开放2)平等3)共享4)全局行动相关模型:1)代码与证据紧密耦合的可信软件演化模型2)创作与生产紧密耦合的软件开发过程模型3)协同、共享、监控与分析紧密耦合的服务支撑模型

271.4软件开发方法1.4.3群体化软件开发方法群体化软件开发方法将软件开发过程全面开放并快速迭代,不断发布系统原型,吸引互联网大众体验,借助互联网平台开展各种形式的交流、协同和共享,实现群体需求及创意的汇聚。软件开发团队对大众需求创意进行识别审查,借助工业化生产的强组织模式来组织软件开发过程,实现高质量软件产品的输出。群体化软件方法将大众群体的软件创作过程有机融入开发团队的软件产品的输出。群体化软件方法将大众群体的软件创作过程有机融入开发团队的软件生产流程中,能够充分发挥大众群体和开发团队在软件开发过程中各自的优势,有效地支持网络环境下的软件开发。

28第五节软件工程工具1.5软件工程工具软件工程的工具对软件工程中的过程和方法提供自动的或半自动的支持。可以帮助软件开发人员方便、简捷、高效地进行软件的分析、设计、开发、测试、维护和管理等工作。有效地利用工具软件可以提高软件开发的质量,减少成本,缩短工期,方便软件项目的管理。软件工程工具通常有3种分类标准:按照功能划分按照支持的过程划分按照支持的范围划分301.5软件工程工具按照功能划分:功能是对软件进行分类的最常用的标准,按照功能划分,软件工程工具可分为可视化建模工具、程序开发工具、自动化测试工具、文档编辑工具、配置管理工具、项目管理工具等。按照支持的过程划分:根据支持的过程,软件工程工具可分为设计工具、编程工具、维护工具等。311.5软件工程工具按照支持的范围划分:根据支持的范围,软件工程工具可以分为窄支持、较宽支持和一般支持工具。窄支持工具支持软件工程过程中的特定任务,一般将其称之为工具;较宽支持支持特定的过程阶段,一般由多个工具集合而成,称之为工作台;一般支持支持覆盖软件过程的全部或大部分阶段,包含多个不同的工作台,称之为环境。321.5软件工程工具在需求分析与系统设计阶段,常用的CASE(计算机辅助软件工程)工具有面向通用软件设计的MicrosoftVisio、用于面向对象软件设计的RationalRose、用于数据库设计的PowerDesigner,除此之外近几年还出现了更加集成化的工具,如EnterpriseArchitect、RationalSoftwareArchitect和StarUML等。这些工具通过简化UML图的绘制工作,以及强大的模型转换功能(诸如正向工程、反向工程、数据库模型转化等),大大简化了设计以及从设计向编码转化的工作。331.5软件工程工具在编码阶段,集成开发环境(IDE)通过提供代码高亮、补全,内置调试工具等功能,大大提高了效率。IDE主流的实例如表所示。34名称编程语言TurboPascalPascalDevC++C/C++CodeblocksC/C++CLionC/C++/C#VisualStudioC++/VB/C#/JavaScript等VisualStudioCodeC++/VB/C#/JavaScript等GoLandGoRubymineRubyWebstormJavaScriptPHPstormPHPPyCharmPythonEclipseJavaIntelliJIdeaJavaXCodeObjective-C/Swift1.5软件工程工具在测试阶段,通常会使用自动化测试工具进行测试。除单元测试工具外,较为流行的自动化测试工具包括C/S功能测试工具WinRunner,性能测试工具LoadRunner、Jmeter,测试管理工具TestDirector、Jira,Web服务测试工具QTester(简称QT)、SoapUI等。单元测试工具通常与语言及开发框架关联密切,部分实例如表所示。35名称编程语言CUnitCCppUnitC++JUnitJAVANUit.NETPerlTestingPerlMocha/Should.jsNode.js内置unittest模块/pytestPythonPHPUnitPHP内置Test::Unit模块Ruby1.5软件工程工具除了这几个阶段,软件开发过程还包括诸多其他活动,而其中最重要的便是配置管理与项目管理。配置管理通常分为不同模式,每一种模式均有对应的工具,较为著名的有MicrosoftVSS、CVS、SVN等,近年来较常用的为Git。而项目管理领域最普遍使用的为微软公司开发的MicrosoftProject,该软件提供了强大的项目管理功能,基本能够满足企业级项目管理的全部需求。此外,近年来随着敏捷开发的兴起,诸如基于Scrum的PingCode,以及基于看板(Kanban

温馨提示

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

评论

0/150

提交评论