版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程概述及学习要求内容课程的时代背景软件定义一切的时代当前软件系统的特点课程特点和要求课程特点和学习要求教学目标和授课内容课程的考核方式课程考核要求和方法课程教学的支撑平台1.1软件不可或缺信息系统组成微电子芯片、计算机硬件与体系结构、计算机网络与通讯计算(速度)、存储(容量)、传输(带宽和速率)计算机软件处理数据、实现功能、提供服务软件所扮演的角色不可或缺、核心和关键的要素没有软件的手机和PC会怎样?如果你的计算机、手机和Pad上没有软件会怎样?软件的关键性和重要性软件对一个国家的全球竞争力、创新和国家安全至关重要世界运行在软件之上,软件是国家的关键基础设施软件赋能能力创新软件是安全攸关系统的脊梁软件是生态系统重要组成部分软件定义一切时代的特点地位:无处不在的软件形态:人机物三元融合的软件复杂:大规模、持续演化的软件开发数量越来越多交付速度越来越快质量要求越来越高运维能力越来越强渗透到社会经济文化生活各行各业,从工业生产到国防科技,从衣食住行到娱乐软件渗透到了哪些领域?是否有领域没有软件?软件的持续创新和积累至今人们已经开发出了数量庞大的软件系统操作系统Linux、Ubuntu、麒麟、鸿蒙、OpenEuler等数据库系统MySQL、PostgreSQL、MongoDB、Redis等开发平台Eclipse、Junit、SonarQube、Kubernetes等人工智能Tensorflow、Opencv、Caffe、Deeplearning4j等网络安全Nmap、curityOnion、Suricata、Bro等开源50年积累的代码总量约100TB,而人类5000年文字藏书总量约23TB软件是一种创新形式和赋能工具社会交流软件推动了各个行业的变革和发展,改变了世界软件体现了基于数字化技术解决问题的方式支付方式火车购票软件带来的深刻影响交通出行12306、携程等代替排队等候资料查询G和B代替调研在线教育MOOC和腾讯会议代替课堂教学网上购物淘宝、京东代替逛商场办公方式Word和PPT代替手写和幻灯片支付手段微信、支付宝代替纸币和支票软件给你的学习、生活和娱乐等带来什么样的影响?没有软件你会怎样?软件是军事装备和信息系统的核心信息化武器装备中的嵌入式软件业务信息支援系统中的软件各类参战人员作战部队指挥控制系统中的软件大型复杂软件系统部署在各类平台和终端提供多样化功能和服务连接装备和人员形成体系和能力成为关键基础设施越来越多的软件表现为人-机-物共生的一类复杂系统示例:机器人是一类由软件驱动的物理系统机器人是由软件驱动、由软件来定义的软件密集型信息物理系统负责底层管理和控制、高层规划和决策、全局适应和优化等软件是整个系统的核心和关键高层任务软件系统物理和社会环境决策产生决策产生规划和行为作用与影响感知与反馈闭环自主机器人系统控制运行物理设备示例:软件在武器装备中的地位和作用80%的装备功能由软件来实现软件密集型系统的数量不断增长计算机软件在美军装备中的比例以及军用软件的规模DavidF.Rico,PMP,ACP,CSM,Lean&AgileSoftwareMethods,2012.由软件实现的装备功能软件的规模(百万代码行)思考和讨论个人计算机你的设备安装了哪些软件?它们提供哪些功能和服务?手机iPad哪些行业和领域需要软件?它们提供哪些功能和服务?1.2软件形态变化不是单一孤立的系统,而是系统之系统诸多系统联盟和组合而成不是纯粹技术系统,而是社会技术系统社会、信息、物理等要素共存不是同构系统,而是异构多样系统联盟要素异构,客观存在,也是必然不是封闭系统,而是动态适应和持续演化系统要素、关系、联盟等持续变化,边界不明确IanSommerville,etc.,Large-ScaleComplexITSystem,CommunicationofACM,2012.1.3软件的规模和复杂性日趋增长社会保障信息系统金融系统智能交通控制指挥控制系统智能电力系统大规模协作系统功能数据实体代码量接入人员连接设备运行进程……示例:软件规模的快速增长1960sF-117飞机程序10万行1970sP-3C飞机程序50万行1980sB-1B飞机程序100万行E-3A飞机程序100万行空间站发射程序约8000万行现代化作战飞机约2500万行宙斯盾驱逐舰约需5000万行现代汽车中有数亿行的软件越来越多的设备由软件加以定义,如软件定义的汽车软件变得越来越复杂软件环境的复杂性软件表现为人机物三元融合复杂系统软件需要与物理环境、社会环境等进行持续交互软件所在的环境开放、动态、不确定和不可预测软件规模带来的复杂性大量的软件实体、数据、交互、进程等带来的复杂性软件需求的复杂性软件需求不可知、不确定和动态变化软件运维的复杂性软件需要在使用的同时持续演化12306软件、智能交通控制软件等就是一类复杂软件系统,具有上述复杂性特征大规模和复杂软件带来的挑战?用户方、学术界、产业界共同面临的问题和挑战!软件复杂性表现在哪些方面?如何来开发复杂的软件系统?需要哪些方面的知识和技能?1.4美国对软件及软件工程的认识从软件到软件工程超大规模软件未来软件挑战,CMU,2006软件定义战争,CSIS,
2022构筑未来软件工程CMU,2021软件现代化战略DoD,2022认识到软件变得越来越重要、越来越复杂和难控,需要寻求有效的软件工程美国政府对软件的认识美国总统信息技术顾问委员会软件是最迫切的需求,因为:对软件的需求:超出了我们现有的开发能力;现有软件是脆弱、不可靠,且很难进行设计、测试、维护和升级所以:软件是当前社会核心产品与核心问题应绝对优先发展超大规模软件未来软件挑战,CMU,2006美国军方对软件的认识美国军方向软件工程学术和产业界提出的问题我们的士兵依赖软件并且将越来越多的依赖软件军队的成功依赖于软件以及软件企业我们需要更好的工具来满足未来的挑战,我们的政府和企业并没有致力于如何让事情做的快速和廉价如果我们不能解决今天的问题,我们如何能可靠地构建未来可能具有十亿行代码的系统面临具有十亿行代码规模的软件,这样的系统今天的技术力所不能及超大规模软件未来软件挑战,CMU,2006国际上软件工程研究重要机构-CMUSEI软件工程领域的著名研究机构软件生产线、体系结构、管理等美军软件工程方面的智囊军方资助,解决美军提出的问题为军方提供战略性和前瞻性的解决方案许多著名的研究成果E.g.,软件生产线E.g.,能力成熟度模型CMM应该引起我们的高度关注已有成果、关注问题、前瞻研究URL:CMUSEI开展的工作关注CMU的研究与实践学术界对计算机软件的认识计算机软件是一种逻辑产品,有其特殊性不同于硬件,非常复杂、成本高、风险大、维护困难与很多的内在规律和逻辑尚不清楚缺乏相关的理论,基于统计分析的结果软件开发是一项由多人参与、基于智力的协同活动多人、智力、协同采用工程化的方法和途径似乎是有效的不能采用硬件开发的方法不能采用手工、作坊式的方法过程和步骤、工具、产品、评审和检查、质量、进度…工业界对计算机软件的认识计算机软件的开发效率、速度、质量远远无法满足用户日益增长的需求需求多变性、易变性、不明确性成本难以估算、质量达不到要求、进度无法按期推进也称“软件危机”在不断摸索中进行总结、在持续实践中发现规律实践是检验真理的唯一标准实践先于理论,寻求最佳实践不同的企业有不同的手段和实践1.4成功的软件项目和产品比尔盖茨的Microsoft系列产品
从Windows到Office系列,从VisualStudio到CopilotXInstagram(abbr.Instanttelegram)软件:基于移动设备的照片和视频共享、在线服务软件成立于2010年10月,2012年被Facebook以10亿美元收购社交软件微信、TikTok、QQ、Facebook、Twitter等失败的软件项目失败软件项目的特点没能按时交付成本超出预算软件缺陷太多,无法按照当初的设计正常运行产品没有得到市场认可,没有人使用失败软件项目的案例美国银行规划研发信托软件系统,项目预算2千万美元,开发时长9个月;进度超出2年,投入6千万美元,仍然未能投入使用英国银行软件系统的建设,投入大量的经费,最终软件项目失败,导致整个银行倒闭,成为软件开发的“烂尾楼”思考和讨论现代软件有何复杂性和形态特点?如何理解人机物三元融合系统?如何来开发软件系统?软件开发难在哪里?软件工程课程就是要回答这些问题!内容课程的时代背景软件渗透性和复杂性当前软件系统的特点课程学习要求课程特点和学习要求教学目标和授课内容课程考核要求课程考核要求和方法课程教学的支撑平台*2.1软件工程是一门特殊课程一门课程一个专业一个学科“软件工程”这门课程有其特殊性!(1970s)(1980s)(2011)软件工程既是一门课程,也是一项专业,还是一个学科被赋予更多内涵和知识的课程具有“工程”性质和要求课程“实践性要求”非常高的课程面向“复杂问题求解”的课程适合多种能力和素质培养课程不同于“离散数学”、“编译原理”、“操作系统”等课程软件工程课程的特点内容“虚”和“广”思想性和抽象教学内容广域和交叉的课程知识发展“快”和“新”产业界开发实践进步快多维度、全方位的发展要求“实”和“高”能用工程方法开发软件解决工程开发复杂问题计算机科学、管理学、数学等多学科知识实践经验的总结软件开发的实践教学是课程教学的关键实践要体现工程化的要求和水平各种新技术、新方法、新工具不断出现如DevOps、智能化开发、Copilot等软件工程课程教学的难点难讲透(教)知识点内容抽象难以讲清和讲明教学成效难保证,课程教学需要适应课程特点,解决教学难点难学好(学)理解知识点不易知其所以然困难做更难(做)开展软件开发难达成工程要求难不仅要知其然,更要知其所以然不仅要讲授是什么(What),更要诠释为什么(Why),如何做(How)不仅要做的出,更要做的好(质量)软件工程课程学习的重点“工程”意味着要开展实践,并且要采用”工程化”方法系统化、规范化和可量化“工程”意味着要实践对象要有规模,要关注质量等因素上规模、一定复杂度、高质量“实践教学”是课程教学的重点,也是上好这门课的关键教学不能停留于知识讲授,不能纸上谈兵学好课程的关键在于做好课程实践2.2软件工程课程教学的目标和定位理解软件开发问题,软件工程思想、原则和方法运用运用软件工程过程、方法和工具来开发分析分解、组合、建模、设计和验证软件评价评估评价软件质量、评估方法等创新运用软件工具来解决实际问题BLOOM模型培养学生多方面的能力和素质达成高阶的教学目标如何学好这门课:课堂要认真听讲交流与讨论内容基于教材但不局限于教材内容组织不完全对应于教材认真听讲勤于思考参与讨论经常提问如何学好这门课:做好课程实践是关键讲授分析实践讲评讲授分析实践讲评讲授分析实践讲评讲授分析实践讲评讲授-老师实践-学生实践、实践、再实践!课程实践将贯穿于课程学习的全过程如何学好这门课:持续投入、独立解决和不断总结利用课内和课后时间,持续实践投入开发、讨论、演示、总结、汇报、撰写参加和贡献务必自己动手去做务必独立解决问题务必开展交流合作务必做到精益求精务必要不断的总结要收获必须要投入如何学好这门课:追求卓越持续改进讲评考评持续改进、提升质量精益求精、追求卓越汇报和讲评根据老师的讲评不断改进你的实践成果,提升实践的质量如何学好这门课:不断进行总结、交流和讨论在知士荟上进行提问、回答、评论、分享和总结/#/spaces/146要求每周1篇技术博客,要在学习社区进行交流和分享看看往届学生的学习心得、体会、感受和成果2.3对学生提出的基本要求课上要听懂知其然且知其所以然下课做的了运用所学知识来开展软件开发实践课后有交流问题、回答、评论、经验投入有保障投入足够的时间,迎难而上,勇气和信心目标要远大工程能力:规范、文档、设计、质量、……职业素养:严谨、专业、交流、讨论、……2.4本课程将让你学到…认识软件系统及复杂性特点理解软件系统开发面临挑战领会软件工程的思想和方法掌握软件开发的技术和工具基于团队来组织和开发软件独立解决软件开发中的问题获得和积累软件开发的经验……2.5课程教学目标深入理解和认识“软件”概念及其特点系统掌握软件工程的原则、方法和思想熟练运用各种技术、工具以及管理手段持续开展软件开发实践以积累相关经验深刻认识软件工程方法及开发存在问题不断培养多方面的能力和软件工程素养2.6课程教学组织与实践安排软件工程(48学时)软件体系结构与设计(48学时)春季学期秋季学期贯穿二个学期和二门课程的综合实践课程教学内容程序及质量保证方法软件及其特点软件工程概述软件过程模型敏捷软件开发方法群体化软件开发方法需求分析基础获取软件需求面向对象软件需求分析软件设计基础软件体系结构设计用户界面设计软件详细设计编写程序代码软件测试软件部署软件维护与演化软件项目管理完成二项课程综合实践阅读、分析和维护开源软件(10000行代码)2人组成一个实践团队秋季学期《软件工程》课程开发上规模、有创意和高质量的软件(10000行代码)4人组成一个实践团队春季学期《软件体系结构与设计》课程课程综合实践1:阅读、分析和维护开源软件学习对象:高质量开源软件学习内容:高质量代码,高水平设计、开发技能和经验学习方式:阅读、标注、分析、模仿和应用以维护软件学习开源代码,要求学以致用!阅读标注分析维护设计模型代码标注质量报告高质量代码高质量开源代码往届学生的实践情况
每个结对平均最多最少每周课外投入(小时/周)10204编写代码量(行)5001000200复用开源代码(行)120020000添加注释量(行)8002000200Git提交次数(次)142153131小米便签开源代码代码总量:8887LOC;文件数:39注释总数:5627LOC;
注释行数:
2706;
注释率:30.4%问题数量:
1654LOC涵盖从需求分析、软件设计、编码实现、软件测试等方面的实践内容及要求课程综合实践2:软件开发实践任务开发有创意、上规模和高质量软件要求创意、规模、质量、综合、系统结果模型文档代码演示等创意性问题、需求、解决方法系统性集成物理系统、遗留系统、开源软件规模性>15000行程序代码综合性运用多种技术、语言、工具和平台高质量模型、文档和代码等实践成果质量高实践教学是关键,要为“软件工程”这把牛刀准备相适应的“实践内容”往届学生的实践示例(1/3)创意性:问题及基于机器人的解决方法集成性:机器人、APP及4个开源软件系统综合性:3种语言及多种技术与平台规模性:66000(开源50000+)LOC分布性:部署在手机、机器人、服务器等高质量:模型、代码和文档质量优SE+PL+Robotics+网络传输+模式识别等
往届学生的实践示例(2/3)开发技术机器人操作系统ROS、AndroidAPP开发、网络编程程序语言Java、Python、C开发工具AndroidStudio、SonarQube、Junit开源社区CSDN、GitHub、StackOverflow、OSChina开源软件Roconremocon科大讯飞智能语音包OpenNILinphone软件文档UML模型程序代码宣传彩页演示视频总结PPT技术博客创意构思+知识学习+开发实践+解决问题+成果展示+语言/文字表达
iCAN国际创新创业大赛总决赛一等奖中国高校计算机大赛全国总决赛一等奖泛珠三角计算机作品赛总决赛金银奖网络技术挑战总决赛一等二等奖珠三角计算机作品赛总决赛最佳实用奖计算机作品赛湖南省赛区特等和一等奖长沙市创新创业比赛二等奖……开发许多有创意的课程实践作品,近5年获30项竞赛奖项往届学生的实践示例(3/3)内容课程时代背景软件渗透性和复杂性当前软件系统的特点课程学习要求课程特点和学习要求教学目标和授课内容课程考核要求课程考核要求和方法课程教学的支撑平台*3.1课程考核形式考核组成成绩比例考核方式课程考试50%开卷考试,个人综合实践40%团队+个人技术博客5%个人交流讨论5%个人课程试卷开题设计原则不考“死记硬背”的内容(what)概念是什么,方法是什么如软件有何特点要考对知识点的理解、认识和运用为什么(Why)、如何(How)需要建立在课程实践的基础之上课程实践考评原则课程实践的质量(文档、模型和代码)课程实践的规模(如功能点、代码量)课程实践的创意(如新增功能的创意)泛读代码代码标注质量代码开源维护10%20%30%40%平时成绩考评原则每周提交技术博客的质量(5%)在知士荟平台上参与交流和讨论情况(5%)3.2课后实践要求知士荟平台:交流和讨论/#/spaces/146,交流、讨论、分享等每周一篇技术博客,加入到本班级的学习群组EduCoder平台:实训和实践/paths/1944,线上实训,相关内容讲完后头歌上实践课堂及作业,创建和关联项目、协同开发、提交作业课程学习的教学资源
课件、视频、试卷、案例等内容往届学生对课程的评价学习过程很艰难,学完之后成果超预期,学到了许多超出书本、真正有用的东西,受益匪浅、收获很大,有成就感大学学习期间收获最大的一门课程,我们本科阶段最有挑战性最有收获的课程软工这门课真正意义上激发了我作为一个计算机专业学生的专业思维。这门课对我来说意义匪浅,不仅让我自己有机会证明自己的能力,同时开拓了我的视野,拓展了我的知识域,让我更加有一名计算机专业学生的样子了。这门课程是切实值得认真学习的一门课程,绝不是简单的代码编写,更多的是提供了一种工程化的思维,我认为这种思维对于指导实践是非常有价值的。这门课程我收获很大,提高了实践能力,锻炼了敢于解决困难的精神。这一年地软件工程课程学习收获还是很大吧,可以说是最精彩的一门课。访问/#/spaces/146/resources,了解往届学生学习心得和收获学生的认识(1/3)软件工程重在“工程”而非“软件”,这就决定了它的本质要求是实践。只有动手实践,即自己写代码、写博客、查资料、读源码,才能把别人的东西转化为自己的理解与经验,真正学进去并为自己所用不能过于害怕实践,一定要放心大胆地去做这一年的磨练全方面、大幅度提高个人的能力水平,这是让一门真正体会到“大学”二字的课程团队协作与按时完成非常重要学生的认识(2/3)学习了这门课我渐渐的改变了自己的编程习惯,按照编程规范写代码,写注释,检测代码质量,我认为这是我从了解编程转变为开始懂编程这门课教会了很多东西,不管是技术上,管理上,还是精神上,我相信在这门课中的学习实践会影响我之后的学习在上课之前就有学长跟我说,在科大学的最有用的一门课就是毛新军教员的软件工程,现在想想确实如此不论遇到多大的困难,都要尽自己最大的努力去克服,只有坚
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年自动化测试工程师社会招聘专业试卷及答案
- 2026年中医耳鼻喉科脾虚湿盛型鼻渊辨证测试卷及答案
- 室上性心动过速基层诊疗指南解读
- 钢结构井架安装技术研究与实践
- 自带动力设备安全操作规程培训
- 人工挖孔桩钢筋安装安全技术交底培训
- 脚手架工程(承重脚手架)主要安全卡控措施培训
- (2026年)有关学期教学工作总结
- 2025年河南省西峡县四下数学期末学业水平测试模拟试题含答案解析
- 2025年河南省开封市杞县四年级数学第二学期期末质量检测模拟试题(含答案解析)
- 2026年江苏省徐州市中考英语真题(含答案)
- 浙江省G12名校协作体2026-2027学年高三上学期开学考试生物+答案
- T/CAPE 11005-2023光伏电站光伏组件清洗技术规范
- 美术治疗方案
- (高清版)DB62∕T 4759-2023 灌区玉米覆膜节水栽培技术规程
- 浙教版小学劳动四年级上册教学计划、教学设计及教学总结
- 律师事务所廉政风险点及防控措施
- 全国职业院校技能大赛高职组(研学旅行赛项)备赛试题及答案
- (高清版)DB52∕T 1723-2023 城市道路占道作业交通组织与安全设施设置要求
- 沪科版八年级数学上册全册教案教学设计(含教学反思)
- 零星工程维修 投标方案(技术方案)
评论
0/150
提交评论