软件工程原理与实践(硕士)课件 1 软件工程本质_第1页
软件工程原理与实践(硕士)课件 1 软件工程本质_第2页
软件工程原理与实践(硕士)课件 1 软件工程本质_第3页
软件工程原理与实践(硕士)课件 1 软件工程本质_第4页
软件工程原理与实践(硕士)课件 1 软件工程本质_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

高级软件工程

SoftwareEngineering软件工程本质“Theestablishmentanduseofsoundengineeringprinciplesinordertoobtaineconomicallysoftwarethatisreliableandworksonrealmachines.”[FritzBauer]“Theapplicationofasystematic,disciplined,quantifiableapproachtothedevelopment,operation,andmaintenanceofsoftware”[IEEE1990]“Softwareengineeringisthatformofengineeringthatappliestheprinciplesofcomputerscienceandmathematicstoachievingcost-effectivesolutionstosoftwareproblems.”[CMU/SEI-90-TR-003]什么是软件工程?202-软件工程的知识域01-软件工程的挑战及应对303-AI时代的软件工程软件工程面临的挑战进度的挑战进度要求很紧:常常需求还没有确定,交付日期却已经定了,进度预估不足是常态质量的挑战功能性能可靠性易用性安全性可扩展性兼容性……4不确定性的挑战易变(Volatile)不确定(Uncertain)复杂(Complex)模糊(Ambiguous)这是一个VUCA的时代应对挑战的方法软件价值工程软件系统工程敏捷过程5软件价值工程软件系统工程敏捷过程软件开发是一门什么学科?是一门艺术?--追求Truth(真)是一门科学?--追求Beauty(美)是一门工程?--追求Benefit(善)6软件价值工程软件系统工程敏捷过程关注价值软件开发如何获得最大价值

?价值

=收入-成本提升销售降低成本需求是关键设计是关键创新的需求解决用户痛点点燃用户嗨点灵活的架构(模块化、抽象)降低软件复杂性、增加复用、易于变更、便于多人协同开发7如何才能持续快速交付价值?质量效率价值速度工程生产力(EngineeringProductivity)8软件系统工程全局思维掌握软件系统内各模块之间的关系,与外部系统交互,以及这些关系背后的运行逻辑综合思维社会和技术的综合(social-tech)工程思维以资源有限、条件不足为前提,去实现“现实世界”的目标抽象思维通过抽象提炼复杂系统的本质,对系统进行建模9软件价值工程软件系统工程敏捷过程具体和抽象需求:具体--产品当项目做所有人-->一群人设计:抽象--项目当产品做项目-->产品-->产品线即时通软件卖给谁?

10软件价值工程软件系统工程敏捷过程敏捷过程通过快速、短迭代式的开发,不断产出和演化可运行软件拥抱变化,迅速适应变化并做出自我调整在保证质量的前提下,尽量减少开发过程中的活动和制品,实现效益最大化1102-软件工程的知识域01-软件工程的挑战及应对1203-AI时代的软件工程软件工程知识体系SWEBOKIEEE软件工程知识体系(SoftwareEngineeringBodyofKnowledge,SWEBOK)当前版本:

V42024网址:国际软件工程师证书:CSDA,针对大学应届生CSDP,针对有经验的工程师13SWEBOKV4知识域SoftwareRequirementsSoftwareArchitectureSoftwareDesignSoftwareConstructionSoftwareTestingSoftwareOperationSoftwareMaintenanceSoftwareConfigurationManagementSoftwareEngineeringManagementSoftwareEngineeringProcessSoftwareEngineeringModelsandMethodsSoftwareQualitySoftwareSecuritySoftwareEngineeringProfessionalPracticeSoftwareEngineeringEconomics14ComputingFoundationsMathematicalFoundations软件工程技术软件工程管理软件工程基础EngineeringFoundations1)软件工程技术需求设计编码测试运营和维护系统工程15系统工程(SystemEngineering)在软件开发之前,必须了解该软件所外的外部“系统”。计算机系统包括计算机硬件、软件、人员、数据库、文档、规程等系统元素。系统工程的任务:系统建模--系统模型系统仿真系统工程的表现形式信息系统,关注企业,业务过程工程--业务模型嵌入式系统,关注产品,产品工程--产品模型多媒体系统,关注内容,内容工程--剧本16需求(Requirement)任务:调研和定义软件的需求需求获取需求分析和建模需求定义需求确认需求管理成果:《需求规约》(经用户和软件人员双方共同认可)功能需求非功能需求,如性能、可靠性、可用性等约束条件重点在What17设计(Design)构件级设计接口设计架构设计数据/类的设计任务:软件人员依据软件需求,建立软件的设计蓝图,是需求到代码的桥梁。成果:《软件架构》文档设计模型重点在How18编程(Coding)任务:依据设计文档为每个模块编写程序编码前准备理解设计,选择编程语言和编程环境,创建单元测试用例编码尽可能简单,代码本身就是文档验证代码走查编译单元测试代码重构19测试(Testing)任务:发现并排除软件中的缺陷执行步骤单元测试(Unittesting)集成测试(Integrationtesting)确认测试(Validationtesting)系统测试(Systemtesting)20部署(Deployment)任务:交付、支持和反馈部署原则:ManagecustomerexpectationsforeachincrementAcompletedeliverypackageshouldbeassembledandtestedAsupportregimeshouldbeestablishedInstructionalmaterialsmustbeprovidedtoend-usersBuggysoftwareshouldbefixedfirst,deliveredlater21运营和维护(OperationandMaintenance)22维护类型纠错性维护(correctivemaintenance)为修复所发现的问题而进行的反应式维护预防性维护(preventivemaintenance)在软件产品中的潜在错误成为实际错误前所进行的预防性修复,例如设计重构和代码优化等适应性维护(adaptivemaintenance)为适应环境的变化而修改软件的维护补充性维护(additivemaintenance)添加新功能或新特性以增强产品使用的维护完善性维护(perfectivemaintenance)为用户提供功能增强、程序文档改进、软件性能和可维护性等质量属性的提升而做的维护。和补充性维护不同的是,它并不增加新功能和新特性,所做的修改较小紧急维护(emergencymaintenance)计划外的应急修改,以暂时保持系统运行,等待后续纠错性维护23DevOpsDevOps(Development&Operations)开发运维一体化(持续交付)快速实现一行代码的变更,到软件交付到用户手中(自动化)从代码提交到最终交付用户只需要按下按钮,自动化每一个工作环节,及时收到用户反馈24DevOps工具集25软件开发方法形式化方法(FormalMethod)结构化方法(StructuredMethod)面向对象方法(ObjectOrientedMethod)面向服务方法(ServiceOrientedMethod)基于构件的软件开发方法(ComponentBasedSoftwareDevelopment)模型驱动的开发方法(Model-DrivenDevelopment)……26面向对象方法是主流需求变化时功能:最易变数据:较易变对象:较稳定稳定性增加272)软件工程管理项目管理的知识体系PMBOK(ProjectManagementBodyofKnowledge)由美国项目管理学会(PMI)提出1996年第1版,目前最新版本为2021年第7版核心内容十二大原则八大绩效域PMI项目管理专业人员资格认证PMPISO以PMBOK为框架制订了ISO10006标准28PMBOK的项目交付十二大原则29人过程商业环境十二大原则管家精神:成为勤勉的,尊重和关怀他人的管理者。团队:创建一个利于协作的项目团队环境。建立有担当和懂尊重的团队文化。干系人:与干系人的参与互动。做好干系人争取工作并充分了解他们的利益和需求。价值:关注价值。系统思考:整体角度了解项目的各个部分如何相互作用以及如何与外部系统交互。领导力:展示领导力行为。激励,影响,指导和学习。裁剪:根据不同的项目环境裁剪项目交付方法以制定出最适合的交付方法。质量:将质量管理监控融入到各个过程与可交付物中去。复杂性:驾驭复杂性。使用知识,经验和不断学习来解决复杂性。风险:应对机遇与威胁。适应性和韧性:将适应性和韧性融入组织和项目团队的方法之中。变革:为实现预期的未来状态而驱动变革。30PMBOK的八大绩效域干系人团队规划项目工作测量交付生命周期与开发方法不确定性31课程后续内容第1章软件工程本质第2章软件过程第3章软件项目规划第4章软件开发方法第5章软件需求工程第6章软件架构设计第7章软件质量管理与测试第8章软件风险管理第9章软件项目团队第10章人的管理第11章软件研发效能度量第12章软件工程新进展干系人团队不确定性规划生命周期开发方法测量项目工作项目工作项目工作02-软件工程的知识域01-软件工程的挑战及应对3303-AI时代的软件工程大模型(LargeLanguageModel,LLM)的崛起DeepMind的代码生成工具AlphaCode采用Transformer模型,用大规模代码语料进行预训练2021年底参加了Codeforces竞赛平台组织的10场实时编程比赛,总体排名位于前54.3%,击败了46%的人类参赛者。微软的AI结对编程助手GitHubCopilot采用OpenAI的Codex模型,一个基于GPT-3的代码预训练模型2022年8月份结束了公测,开始商业化运作

OpenAI的对话式大型语言模型ChatGPT和GPT-4

ChatGPT最擅长的就是回答用户提出的问题。ChatGPT通过了2022年的APcomputerscienceA考试,得分32分,满分36。这门考试的难度等同于大学CS专业课第一学期难度。国内百模争流:华为的盘古、百度的文心一言、科大讯飞的星火、阿里云的通义千、问、清华大学的ChatGLM等等34基于大模型的智能开发助手软件需求

温馨提示

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

评论

0/150

提交评论