软件开发方法与实践 课件 第一章 软件开发概述_第1页
软件开发方法与实践 课件 第一章 软件开发概述_第2页
软件开发方法与实践 课件 第一章 软件开发概述_第3页
软件开发方法与实践 课件 第一章 软件开发概述_第4页
软件开发方法与实践 课件 第一章 软件开发概述_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

第一章软件开发概述学习目标2026构建软件工程系统认知,掌握核心理论与实践方法,夯实专业学习根基。SOFTWAREENGINEERINGCOURSE了解软件工程的产生原因和发展过程,准确掌握软件工程的定义;掌握软件的定义、软件的特点、软件生命周期等概念,掌握软件过程;掌握软件开发方法,掌握软件云开发的概念及过程,熟练应用华为云软件开发平台CodeArts进行软件开发及管理。本章内容导图软件工程基础从行业发展的痛点出发,剖析软件危机的核心成因与典型表现,理解软件工程学科诞生的时代背景。在此基础上掌握软件工程的严谨定义,明确其以系统性、规范化方法解决软件复杂性问题的本质,建立对本学科的基础认知框架。软件核心概念系统梳理软件的定义、关键特征与分类体系;完整解析软件生命周期的阶段划分与核心活动流程;深度理解软件过程的内涵与价值,掌握过程模型在软件开发全周期中对质量、效率和可控性的指导作用,夯实理论基础。软件开发方法对比学习结构化与面向对象这两种经典开发范式的差异;系统掌握RUP、敏捷开发、构件式开发等主流方法论的核心思想与实施步骤;同时了解软件生产线的工业化开发理念,学会根据项目特性进行开发方法的科学选型与灵活应用。现代开发模式紧跟技术演进趋势,洞察云原生时代软件云开发的全新模式与优势;以华为云CodeArts平台为典型案例,深入了解一站式智能开发平台的核心服务与能力体系,体会云端协同研发如何打破传统壁垒,实现开发效率与交付质量的双重跃升。学习路径指引:从理论框架到工程落地本章内容遵循“认知建立-理论深化-方法掌握-实践拓展”的逻辑展开。我们将首先通过软件工程基础理解行业背景,再通过核心概念构建理论认知,接着系统掌握各类开发方法的技术内核,最后延伸至现代云开发的前沿实践。这条由浅入深的学习路径,不仅帮助大家掌握核心知识点,更旨在培养工程化的思维方式,让大家能够理解不同开发模式背后的逻辑,从而在实际工程中选择合适的技术方案,为后续复杂软件系统的开发与管理打下坚实基础。第一节软件工程的产生与发展什么是软件危机?1968SOFTWARECRISIS这是计算机发展史上的一次重要转折点。随着软件规模呈指数级膨胀,传统的个人化开发手段彻底失效,大量项目面临失败风险。这一危机直接催生了“软件工程”学科的诞生,推动行业迈向标准化、工程化的科学开发模式。由NATO于1968年首次提出,指落后的软件生产方式无法满足迅速增长的计算机软件需求,进而在软件开发与维护过程中引发的一系列严重问题。20世纪60年代中期,计算机应用范围迅速扩大,软件系统的规模和复杂度急剧增加,传统的“私人作坊式”开发模式已无法适应技术发展的需求。项目进度失控、成本大幅超支、产品功能与需求不符、软件质量低下、后期维护困难,同时还普遍存在关键开发文档缺失的问题。核心定义时代背景典型表现用户自身需求描述不精准且易中途变更,开发者也常忽视软件是程序、数据与文档的完整集合,仅聚焦代码编写,导致开发方向与目标脱节。引入软件工程思想,用工程化的理念、技术、管理与工具,重塑软件开发全流程,从根本上解决危机。需求模糊与认知偏差工程化、规范化、可度量,让软件开发从“个人艺术”走向“工业制造”。技术缺失与规模瓶颈0102软件危机的原因与解决原则破局之道软件危机的原因与解决原则(1)用户需求不明确(2)缺乏正确的理论指导(3)软件开发规模越来越大(4)软件开发复杂度越来越高(1)摒弃“软件即程序”的片面认识。(2)采用并持续探索更优的开发技术和方法。(3)强调组织、管理与协作,认清软件开发是系统化、协作化的工程实践。(4)开发和使用高效软件工具,以“放大”智力、提升生产率。软件危机的原因软件危机的解决原则软件工程的定义核心思想:工程化的软件生产范式将软件视为标准化的工业产品,摒弃“个人技艺式”的开发模式,转而采用工程化的原理和方法对其全生命周期(开发、运行、维护)进行科学管理。其根本目标在于突破传统软件开发的效率瓶颈,有效控制成本投入,并最终交付高可靠性、高可维护性的高质量软件系统,从而解决软件危机带来的一系列挑战。FriedrichL.Bauer(1968)提出了软件工程的早期核心定义:即“系统化、规范化、可量化的软件开发方法”。这一观点首次将工程科学的方法论引入软件开发领域,标志着软件工程学科理念的正式萌芽,为后续学科发展奠定了理论基调。IEEE软件工程标准(1993)从过程视角给出了严谨定义:“将系统的、规范的、可量化的方法应用于软件开发、运行和维护的全过程”。强调了方法的普适性和全流程覆盖,不仅关注开发阶段,更将运行维护纳入工程化管理范畴,成为行业内公认的标准定义。《计算机科学技术百科全书》从学科交叉角度定义:应用计算机科学、数学及管理科学等多学科原理,以工程化方法指导软件的全生命周期活动。这一定义突出了软件工程的综合性与跨学科属性,将技术实现与科学管理相结合,是对软件工程学科内涵的全面概括。核心共识:尽管不同时期、不同机构的定义侧重点各异,但均共同确立了软件工程的本质——以系统、规范、可量化的工程手段,替代传统的个体经验开发模式,从而在提高软件生产率的同时,确保软件产品的高质量与可维护性,实现软件产业的工业化升级。第二节软件与软件过程软件的定义软件的定义是:由计算机程序、过程、相关文档及数据组成的集合,能够实现特定功能或满足明确需求。其中,程序是为了解决某个特定问题而用程序设计语言进行描述且适合计算机处理的语句序列;过程定义了软件开发和维护的一组有序活动集合;数据指的是软件开发及运行过程中需要的数据,不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,另外还包括软件企业积累的项目工程数据和项目管理数据中记录的大量决策原始数据;而文档则记录的是软件开发活动,主要供人们阅读,既可用于专业人员与用户之间的通信和交流,也可以用于软件开发过程中的管理和运行阶段的维护。由此可知,软件并非仅仅是程序。01区分软件的类型是掌握计算机应用的基础,系统与应用的分工让技术服务更精准地落地业务场景。SOFTWAREFUNDAMENTALS软件的分类

01按照计算机角度划分系统软件:管理控制维护、计算机及外设、用户界面、操作系统、编译系统、数据库管理系统、网络软件应用软件:解决领域问题、财会软件、通信软件、计算机辅助教学(CAI)02按照计算机软件用途划分服务类软件:面向用户、提供服务、开发工具、库函数、集成化环境维护类软件:面向维护、错误诊断、检测测试、调试工具操作管理类软件:面向操作管理、操作系统、网络通信、管理软件逻辑产品脑力密集无形的逻辑实体智力驱动的生产无磨损维护持久的迭代优化复杂昂贵资源密集型工程具有抽象性,无物理实体,只能通过运行来了解其功能和质量,是看不见的逻辑产物。尚未完全摆脱手工开发模式,生产效率较低,高度依赖开发人员的专业智力和技术水平。不会像硬件一样老化磨损,但需持续修复缺陷与技术更新,修改过程也可能引入新错误。属于人类最复杂的工业产品之一,研制需投入大量人力物力,开发与维护成本均十分昂贵。01020304软件的特点软件生命周期(SLC)软件生命周期(SLC)指软件从产生到报废的全过程,是软件工程的重要概念。它将开发划分为若干阶段,每阶段有明确任务并产生文档,作为下阶段依据。软件开发强调全过程而非仅编码,阶段间必须以前一阶段正确结果为前提,通过“活动-结果-审核-再活动”的循环确保质量。软件过程ISO9000把软件过程定义为:将输入转化为输出的一组彼此相关的资源和活动。根据GB/T8566-2022《系统与软件工程软件生存周期过程》,软件过程可概括为三类:基本过程类、支持过程类和组织过程类。软件过程根据ISO/IEC15504软件过程评估标准,软件过程分为5个过程:工程过程、支持过程、管理过程、组织过程和客户-供应商过程,其中的基础是组织过程,核心是工程过程,关键是管理过程。软件过程第三节软件开发方法010203面向对象方法模拟人类思维方式,以对象为核心,通过封装、继承与多态特性,让问题空间与解空间结构高度一致,提升系统复用性。统一建模语言UML面向对象的标准建模语言,为软件系统提供可视化蓝图,实现系统设计的清晰详述与规范化文档化,是行业通用工具。结构化方法遵循软件生命周期,以自顶向下、逐步求精为核心,通过抽象与功能分解,将复杂系统拆解为可执行的功能模块。CORESOFTWAREENGINEERING软件开发方法论是指导工程师构建高质量软件的核心思想体系。从早期的结构化方法到现代主流的面向对象方法,再到标准化的UML建模工具,每一种范式都承载着不同的设计哲学,帮助开发者在复杂的业务需求与技术实现之间找到科学的解决方案,支撑软件系统从概念到落地的全流程建设。软件开发核心方法RUP是一个用例驱动、以架构为核心、迭代和增量式的软件过程框架。它将软件开发活动结构化,通过固定的阶段划分与核心工作流的有机结合,为大型复杂软件项目提供了一套成熟、可预测且可控制的实施方法论。统一软件开发过程(RUP)RUP核心框架敏捷软件开发方法总体目标尽早且持续交付有价值的软件,确保客户满意度,并允许后期灵活变更需求。路线:测试驱动开发:先编写单元测试用例,再开发功能代码。持续集成:成员每日多次集成工作,通过自动化构建及早发现错误。重构:贯穿全程,小步优化内部结构,用单元测试保证不改变外部行为。结对编程:两人一机,一人编码一人审查,角色互换,兼顾战术与战略。站立会议:站姿开会,提升沟通效率,消除阻碍。小版本发布:以周或月为周期频繁发布,获取客户反馈。较少文档:以测试代码为主要文档,避免文档与代码脱节。以合作为中心:代码团队共有,成员可随时修改重构,无需原作者同意。客户参与:客户与团队共同工作,快速反馈。自动化测试:所有测试(单元、功能、集成)自动化,减少重复劳动。适应性规划:迭代开发,根据反馈随时调整,而非严格按阶段推进。敏捷开发的特点注重人的因素,发挥一线开发人员的自主性与创造力,使软件更具生命力与质量优势。测试驱动而非文档驱动,单元测试与持续集成贯穿全过程,及早暴露并解决问题,避免后期调试困难。敏捷开发强调适应性而非预设性,通过缩短交付周期、加强三方交流、降低重构成本来实现对变化的快速响应。项目的敏捷开发方法软件构件式开发方法01“购买而不是重新构造”——通过复用已有构件组装系统,降低开发成本与维护负担。核心思想接口:独立于语言,封装内部实现,构件互操作的基础构件框架:支持构件“即插即用”,通过组合构成复杂系统关键技术缩短开发周期,降低费用减轻升级维护负担推动软件走向工业化、协作化生产优势构件开发者:领域专家,精雕细琢构件构件集成者:查询、选型、组装系统开发角色可执行单元,独立开发/购买,符合标准接口,可替换广义:需求、架构、文档、测试用例等;狭义:程序模块依赖中间件技术,是软件复用的核心构件02030405软件生产线思想一组共享公共特征集的软件密集系统基于核心资产,通过系统化复用(战略级重用)产生多种产品软件产品线01支持产品线实践的开发环境;集成工具、构件、服务与协同机制,覆盖全生命周期;多种类型:基于构件、面向服务、异构集成、支持监控等软件生产线02一站式云端平台,打通需求→代码→构建→测试→部署→运维支持跨地域协作、多项目并行、环境一致、快速迭代典型平台03通过建模工具自动生成系统,提升效率、降低成本实现软件规范化、标准化、工业化生产核心价值04第四节现代开发模式软件云开发云开发是一种快速构建应用和服务的新型开发方式,分为专业程序员平台与附加商业价值平台两类。它提供云端编程环境,实现高效部署与稳定运行。相比传统前后端开发,云开发弥补了效率低、依赖后台等不足,可节省约50%人力成本,交付效率提升70%,并完整提供数据库、存储、函数等后端云服务,无需管理基础架构。华为云开发CodeArts功能与优势定位:集华为研发实践、前沿理念与工具于一体的软件研发云平台,提供一站式DevOps服务。核心功能模块:项目管理:敏捷迭代、看板协作、自定制仪表盘、社交化Wiki、文档管理代码托管:基于Git的在线托管,支持仓库/权限/成员管理、分支保护、合并请求、安全管控、在线操作与统计流水线:可视化编排工作流,支持串/并行、多种触发方式、质量门禁、参数传递、嵌套审批、第三方扩展代码检查:多语言静态检查,提供典型/定制规则集、指导修复、分级处理、多维度报表编译构建:云端并发构建,支持多种语言/标准/软件包,构建状态实时查看云测:一站式测试管理,含接口测试、性能测试,支持需求关联、自动化测试、质量报告移动应用测试:联合TestBird,覆盖TOP机型,无需脚本,生成详尽兼容性报告部署:可视化一键部署,支持脚本/容器/模板部署,主机管理、任务编排、Shell/Ansible部署发布:软件仓库与私有依赖库管理,支持发布门禁开源镜像站:提供主流编程语言、操作系统、DevOps工具镜像及组件搜索华为云开发项目开发优势针对研发痛点(需求变动、环境复杂、多分支维护等)提供解决方案推动向DevOps

温馨提示

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

评论

0/150

提交评论