软件工程-理论与实践(附微课视频第3版)-教案_第1页
软件工程-理论与实践(附微课视频第3版)-教案_第2页
软件工程-理论与实践(附微课视频第3版)-教案_第3页
软件工程-理论与实践(附微课视频第3版)-教案_第4页
软件工程-理论与实践(附微课视频第3版)-教案_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

课程名称软件工程基础课程编号授课时间专业及班级修课人数总学时48+16学分3.5课程类型必修课公共基础()专业(学科)基础课(√)专业课()选修课专业限选课()专业任选课()全校任选课()授课方式理论课(√)实践课(√)学时分配课堂讲授48学时;实践环节16学时考核方式考试(√)考查()是否采用多媒体是是否采用双语否使用教材:(名称、作者、出版社及出版时间)吕云翔.软件工程—理论与实践(附微课视频第3版)[M].北京:人民邮电出版社,2024教学参考书:(名称、作者、出版社及出版时间)吕云翔,赵天宇,丛硕.UML与Rose建模实用教程[M].北京:人民邮电出版社,2016教研室审查意见章节名称第1章软件工程概述(1)课次1(总第1次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解此课程的教学安排和考核方式。了解软件的概念、特点。了解软件危机的产生原因及其表现。掌握软件工程的概念,以及软件工程的基本原则。通过案例“青鸟工程1”,进行思政教育。教学重点课程的教学安排和考核方式软件工程的概念教学难点无环节/时间授课内容教学方法课程导入10分钟一、课程的教学安排和考核方式讲授正式授课80分钟课程的教学安排和考核方式(续)二、软件计算机软件是由专业人员开发并长期维护的软件产品。完整的软件产品包括了在各种不同容量和体系结构计算机上的可执行的程序,运行过程中产生的各种结果,以及以硬拷贝和电子表格等多种方式存在的软件文档。三、软件危机软件危机就是指人们在开发软件和维护软件过程中所遇到的一系列的问题。软件危机出现的原因可以概括为以下几点。忽视软件开发前期的需求分析。开发过程缺乏统一的、规范化的方法论的指导。软件开发是一项复杂的工程,人们需要用科学的工程化的思想来组织和指导软件开发的各个阶段。而这种工程学的视角正是很多软件开发人员所没有的,他们往往简单地认为软件开发就是程序设计。文档资料不齐全或不准确。软件文档的重要性没有得到软件开发人员和用户的足够重视。软件文档是软件开发团队成员之间交流和沟通的重要平台,还是软件开发项目管理的重要工具。如果人们不能充分重视软件文档的价值,这样势必会给软件开发带来很多不便。忽视与用户之间、开发组成员之间的交流。忽视测试的重要性。不重视维护或由于上述原因造成维护工作的困难。由于软件的抽象性和复杂性使得软件在运行之前,对开发过程的进展情况很难估计。再加上软件错误的隐蔽性和改正的复杂性,这些都使得软件开发和维护在客观上比较困难。从事软件开发的专业人员对这个产业认识不充分,缺乏经验。软件产业相对于其他工业产业而言,是一个比较年轻,发展不成熟的产业,人们在对它的认识上缺乏深刻性。没有完善的质量保证体系。完善的质量保证体系的建立需要有严格的评审制度,同时还需要有科学的软件测试技术及质量维护技术。软件的质量得不到保证,使得开发出来的软件产品往往不能满足人们的需求,同时人们还可能需要花费大量的时间、资金和精力去修复软件的缺陷,从而导致了软件质量的下降和开发预算超支等后果。四、软件工程1.软件工程的概念软件工程是以借鉴传统工程的原则、方法,以提高质量、降低成本为目的,指导计算机软件开发和维护的工程学科。2.软件工程研究的内容(1)软件开发技术(2)软件开发过程管理3.软件工程目标和原则(1)用分阶段的生命周期计划进行严格的管理(2)坚持进行阶段评审(3)实行严格的版本控制(4)采用现代程序设计技术(5)软件工程结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性五、课程思政:简要介绍案例“青鸟工程1”讲授思考题和作业P21~23习题扩展阅读无章节名称第1章软件工程概述(2)课次1(总第2次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求掌握软件过程的定义和基本活动。熟悉常用的几种软件过程模型。了解软件开发的方法。了解与软件开发项目相关的常用工具。了解软件工程人员的职业道德。通过案例“青鸟工程2”,进行思政教育教学重点软件过程模型软件工程人员的职业道德教学难点软件过程模型环节/时间授课内容教学方法课程导入10分钟一、软件过程概述软件的诞生和生命周期是一个过程,即软件过程。过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。讲授正式授课80分钟二、软件生命周期(1)软件生命周期的概念软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、产品发布、投入是用以及产品版本的不断更新,到最终该产品被淘汰的全过程。(2)传统软件生命周期的各个阶段①可行性研究②需求分析③软件设计④编码⑤软件测试⑥软件维护(3)软件过程模型①瀑布模型:开发人员必须等前一阶段的任务完成后,才能开始后一阶段的工作,并且前一阶段的输出往往是后一阶段的输入(图1-2)②快速原型模型:在初步的需求分析之后,马上向客户展示一个软件产品原型,对客户进行培训,让客户试用,反复循环几次,直到客户确认为止(图1-3)③增量模型:把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。(图1-4)④螺旋模型:用于风险较大的大型软件项目开发,将瀑布模型与快速原型模型结合起来,并且加入了这两种模型忽略了的风险分析(图1-5)⑤喷泉模型:分析模型和设计模型采用相同的符号标示体系,各阶段之间没有明显的界限,而且常常重复、迭代地进行(图1-6)⑥基于组件的开发模型:使用现有的组件以及系统框架进行产品开发(图1-7)⑦统一软件开发过程模型:基于UML的一种面向对象的软件开发模型,采用迭代和增量递进的开发策略,并以用例驱动为特点,集中了多个软件开发模型的优点(图1-8)(4)软件过程实例略三、软件开发方法1.基本的软件开发方法(1)结构化方法:采用自顶向下、逐步求精的指导思想,应用广泛,技术成熟(2)面向数据结构方法:从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,就可得到完整的程序结构图(3)面向对象方法:自底向上和自顶向下相结合,以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包括了所有对象的数据结构。(4)形式化方法2.开源软件开发方法3.群体化软件开发方法四、软件工程工具结合表1-3、表1-4进行讲解五、软件工程人员的职业道德(1)保护客户数据(2)知识产权(3)版权拥有权(4)许可协议(5)道德问题解决方案(6)道德教育六、“小型网上书店系统”案例介绍七、课程思政:简要介绍案例“青鸟工程2”讲授思考题和作业P21~23习题扩展阅读无章节名称第2章敏捷软件开发(1)课次1(总第3次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解“敏捷软件开发宣言”的4个价值观和12条原则理解重要的敏捷软件开发实践,例如Scrum中的Sprint、用户故事、Backlog等通过案例“微信1”,进行思政教育教学重点用户故事Scrum教学难点用户故事Scrum环节/时间授课内容教学方法课程导入

10分钟敏捷软件开发方法(1)4个价值观:个体与交互高于过程和工具、可运行软件高于详尽的文档、与客户协作高于合同(契约)谈判、对变更及时响应高于遵循计划(2)12条原则讲授正式授课80分钟二、Scrum1.概述Scrum用不断迭代的框架方法来管理复杂产品的开发,成为当前十分流行的敏捷管理方法。1)3种角色:产品经理、敏捷专家、Scrum团队2)Scrum会议:整理产品需求清单、确定迭代规划、梳理产品需求清单、每日站会、迭代演示、迭代回顾3)Scrum项目所需的常用工件:Scrum任务板、用户故事、燃尽图(图2-2)2.SprintSprint是Scrum团队一起完成增量工作的实际时间段3.每日站会每天在同一时间和地点举行的超短会议,以保持会议的简单性4.用户故事用户故事是从用户的角度来描述用户渴望得到的功能(1)3要素:角色、活动、商业价值(2)3C原则:卡片、交谈、确认(3)INVEST原则:独立、可协商、有价值、可估算、短小、可测试结合表2-1、表2-2、表2-3进行讲述5.BacklogBacklog是Scrum中经过优先级排序的动态刷新的产品需求清单,用来制订发布计划和迭代计划6.结对编程结对编程,即两个程序员肩并肩地坐在同一台计算机前合作编程,在一个程序员编程的同时,另一个负责检查代码的正确性和可读性三、课程思政:简要介绍案例“微信1”讲授思考题和作业P41~43习题扩展阅读无章节名称第2章敏捷软件开发(2)课次1(总第4次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求理解面向敏捷软件开发的Kanban、XP方法理解敏捷软件开发和DevOps是一种理念,而CI/CD是实现这两种理念的一种方法通过案例“微信2”,进行思政教育教学重点CI/CD教学难点CI/CD环节/时间授课内容教学方法课程导入

10分钟回顾上一次所讲的内容讲授正式授课80分钟一、看板1.概述看板作为可视化框架可以用于敏捷方法,能够清晰地向团队成员展示整个项目进度原则:可视化工作流程、限制WIP、管理和改进流程、制订明确的执行策略、持续改进2.看板和Scrum的区别看板对团队的个人能力要求较高,更灵活,适合新开发的产品,而Scrum适合成熟一些的产品和团队,结合表2-4进行讲授二、极限编程极限编程是一种实践性较强的规范化的软件开发方法,它强调用户需求和团队工作,结合图2-4进行讲授。(1)4个价值观:交流、简单、反馈、勇气(2)12个核心实践三、CI/CD(1)概述①持续集成(CI)②持续交付(CD)③持续测试(2)CI/CD的优势更快、更可靠的版本发布、更高的可见性、早期错误检测、快速反馈循环、更快乐的开发和运维团队四、DevOps1.DevOps生命周期策划、开发、集成、部署、运维、学习2.敏捷软件开发、CI/CD和DevOps五、敏捷软件开发实例六、课程思政:简要介绍案例“微信2”讲授思考题和作业P41~43习题扩展阅读无章节名称第3章可行性研究与项目开发计划课次1(总第5次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解可行性研究的目的、意义和内容掌握可行性研究的主要步骤了解项目开发计划的内容通过案例“钉钉软件”,进行思政教育教学重点可行性研究的任务、过程、成本效益分析教学难点成本效益分析环节/时间授课内容教学方法课程导入10分钟引入项目的立项讲授正式授课80分钟项目立项概述项目立项包括项目发起、项目论证、项目审核和项目批准四个过程二、可行性研究的任务可行性研究需要从多个方面进行评估,主要包括战略可行性、操作可行性、计划可行性、技术可行性、社会可行性、市场可行性、经济可行性和风险可行性等计划可行性主要研究待开发的系统的功能、性能和限制条件,确定现有技术能否实现有关的解决方案,在现有的资源条件下实现新系统的技术风险有多大操作可行性经济可行性成本估算代码行技术任务分解技术成本——效益分析开发成本运行费用经济效益货币的时间价值投资回收期纯收入三、可行性研究的步骤一个典型的可行性研究的步骤可以归结为以下几步:明确系统的目标、分析研究现行系统、设计新系统的高层逻辑模型、获得并比较可行的方案、撰写可行性研究报告(图3-1)四、可行性研究实例五、制订项目开发计划项目开发计划主要包括:项目概述、实施计划、人员组织及分工、交付期限六、课程思政:简要介绍案例“钉钉软件”讲授思考题和作业P50~52习题扩展阅读无章节名称第4章需求分析与结构化分析(1)课次1(总第6次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解需求分析的任务和原则熟悉进行需求分析的步骤和方法了解需求管理熟悉需求分析的常用方法了解软件原型通过案例“汉字激光照排系统1”,进行思政教育教学重点需求分析的常用方法教学难点软件原型环节/时间授课内容教学方法课程导入10分钟引入需求分析讲授正式授课80分钟一、需求分析1.需求分析的任务和原则2.需求分析的步骤(1)需求获取收集并明确用户需求,获取需求的方法有多种。问卷调查访谈实地操作建立原型(2)分析建模模型是为了理解事物而对事物做出的一种抽象,通常由一组符号和组织这些符号的规则组成。(3)需求描述需求描述就是编制需求分析阶段的文档,一般包括三个文档:系统定义文档(用户需求报告)、系统需求文档(系统需求规格说明书)、软件需求文档(软件需求规格说明书)(图4-2)。(4)需求验证与评审3.需求管理有效需求管理的关键在于维护需求的明确阐述、每种需求类型所使用的属性,以及与其他需求和其他项目之间的可追踪。需求分析的常用方法功能分解方法结构化分析方法信息建模方法面向对象的分析方法软件原型软件原型是指在项目的前期阶段,系统分析人员根据对客户需求的理解和客户希望实现的结果,快速地给出一个翔实的产品雏形二、课程思政:简要介绍案例“汉字激光照排系统1”讲授思考题和作业P72~74习题扩展阅读无章节名称第4章需求分析与结构化分析(2)课次1(总第7次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解结构化分析掌握结构化分析的几种常用建模方法掌握结构化分析的几种图形工具通过案例“汉字激光照排系统2”,进行思政教育教学重点结构化分析方法教学难点结构化分析方法环节/时间授课内容教学方法课程导入10分钟回顾上一次课需求分析的内容讲授正式授课80分钟一、结构化分析概述1.建立当前系统的“具体模型”2.抽象出当前系统的逻辑模型3.建立目标系统的逻辑模型4.考虑人机界面和其他一些问题二、结构化分析方法结构化分析实质上是一种创建模型的活动(图4-5)功能建模功能建模是用抽象模型的概念,按照软件内部数据传递和变换的关系,自顶向下逐层分解,直到能够构建满足功能要求的可实现的软件为止数据流图的表示符号4种表示符号,外部实体、数据流、数据变换、数据存储(图4-6)环境图环境图仅包含一个数据处理过程,即要开发的目标系统。环境图的作用是确定系统在其环境中的位置,通过确定系统的输入和输出与外部实体的关系确定其边界(图4-7、图4-8)数据流图的分解结合图4-9、图4-10、图4-11讲授分解的流程数据建模数据建模是在较高的抽象层次上对数据库结构进行建模,数据模型用E-R图来描述E-R图以实体、关系和属性3个基本概念概括数据的基本结构。实体是现实世界的事物,多用矩形框表示。属性多用椭圆形表示,关系用菱形表示。实体之间存在一对一、一对多、多对多三种关系类型,结合图4-12、图4-13、图4-14中的具体例子进行讲授行为建模状态转换图是一种描述系统对内部或外部事件响应的行为模型,描述系统状态、事件和事件引发系统在状态之间的转换状态及状态转换状态是任何可以被观察到的系统行为模式,规定了系统对事件的响应方式,结合图5-15进行状态转换图的讲授事件事件是在某个特定时刻发生的事情,状态转换通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式例子结合图4-16演示图书馆管理系统的例子数据字典数据字典以一种系统化的方式定义在分析模型中出现的数据对象及控制信息的特性,给出它们的准确定义,包括数据流、数据存储、数据项、数据加工,以及数据源点、数据汇点等(表4-1)。加工规格说明在对数据流图的分解中,位于最底层数据流图的数据处理,称为基本加工,对于每一个基本加工都需要进一步说明,称为加工规格说明,一般用结构化语言、判定表和判定树来表述(结合图表4-2、图4-17进行讲授)三、结构化分析的图形工具图形工具包括层次方框图、Warnier图和IPO图,结合图4-18、图4-19、图4-20、图4-21进行讲授四、结构化分析实例结合图4-22、图4-23、图4-24、图4-25对某培训机构入学管理系统进行结构化分析和演示五、课程思政:简要介绍案例“汉字激光照排系统2”讲授+演示思考题和作业P72~74习题扩展阅读无章节名称第5章软件设计与结构化设计(1)课次1(总第8次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解软件设计的意义和目标。掌握软件设计的原则。了解软件设计的分类。了解软件体系结构。通过案例“高斯数据库1”,进行思政教育教学重点软件设计的原则教学难点软件体系结构环节/时间授课内容教学方法课程导入10分钟设计是将用户需求转变为软件构建蓝图的过程,在软件开发过程中处于核心地位。软件设计的原则模块化抽象逐步求精信息隐藏复用性设计灵活性设计软件设计追求使用抽象和逐步求精的方式实现高内聚,低耦合的模块划分,并遵循信息隐藏的原则,使已有设计能更灵活,更具有可复用性。软件设计的分类软件设计包括数据设计,体系结构设计,接口设计,构件设计,部署设计五个部分。讲授正式授课80分钟软件体系结构的概念体系结构相当于一个系统的整体框架的草图,描述系统组成的估价。软件体系结构对于一个软件系统来说具有至关重要的作用。软件体系结构包括:软件的组成元素;这些元素的外部可见特性;这些元素之间的相互关系。软件体系结构的作用软件体系结构在软件开发过程中的作用如下。规范软件开发的基本架构便于开发人员与用户的沟通模块化、层次化设计,有利于减少返工,提高效率便于系统开发前、后期的筹备与服务五、典型的软件体系结构风格数据流风格数据到达时被激活处理工作,无数据时不工作。调用/返回风格各个构件通过调用其他构件和获得返回参数来进行交流。独立构件风格通过对事件的发布和注册实现关联虚拟机风格创建了一种虚拟的环境,将用户与底层平台隔离开来,或将高层抽象和底层实现隔离开来。仓库风格由表示当前数据状态的中心数据结构和一组对中心数据进行操作的独立构建组成。六、客户端/服务器模式的分布式体系结构服务器负责给其子系统提供服务客户端通常是独立的子系统,通过向服务器请求约定的资源获取数据网络连接服务器和客户端七、MVC模型MVC强调将用户的输入、数据模型和数据表示方式分开设计,一个交互式应用系统由模型、视图、控制器3部分组成,分别对应内部数据、数据表示和输入/输出控制部分八、课程思政:简要介绍案例“高斯数据库1”讲授思考题和作业P107~109习题扩展阅读无章节名称第5章软件设计与结构化设计(2)课次1(总第9次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求 了解结构化设计与结构化分析的关系。熟悉表示软件结构的图形工具。掌握面向数据流的软件设计方法。熟悉面向数据结构的设计方法。熟悉接口设计和数据设计。掌握过程设计的工具和方法。了解软件设计评审。通过案例“高斯数据库2”,进行思政教育教学重点面向数据流的软件设计方法教学难点面向数据结构的设计方法环节/时间授课内容教学方法课程导入10分钟回顾上一节课所讲的内容讲授正式授课80分钟结构化设计概述结构化设计的任务是从软件需求规格说明书出发,设计软件系统的整体结构、确定每个模块的实现算法以及如何编写具体的代码,形成软件的具体设计方案,解决”怎么做”的问题。二、结构化设计与结构化分析的关系由数据模型、功能模型和行为模型表示的软件需求被传送给软件设计者,软件设计者使用适当的设计方法完成数据设计、体系结构设计、接口设计和过程设计。三、结构化设计1、面向数据流的设计根据应用中数据流通的途径对应用的系统结构进行划分与建模。2、面向数据结构的设计根据数据结构设计程序处理过程的方法,也就是面向数据结构的设计方法按输入、输出以及计算机内部存储信息的数据结构进行软件结构设计。四、接口设计1.接口设计一般包括如下的3个方面。(1)用户接口:用来说明将向用户提供的命令和它们的语法结构以及软件回答信息。(2)外部接口:用来说明本系统同外界的所有接口的安排,包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。(3)内部接口:用来说明本系统之内的各个系统元素之间的接口的安排。2.界面设计1)三条“黄金原则”将控制权交给用户;减少用户的记忆负担;界面保持一致2)界面设计过程界面设计是一个迭代的活动,包括以下六点核心活动:创建系统功能的外部模型;确定为完成此系统功能,人和计算机应分别完成的任务;考虑界面设计中的典型问题;借助CASE工具构造界面原型;实现设计模型;评估界面质量。界面设计过程中设计四个模型:设计模型;用户模型;系统假想;系统映像。3)界面设计问题系统设计时应考虑:系统响应时间;用户求助机制;出错信息;键盘命令等四个问题。五、数据设计数据设计就是将需求分析阶段定义的数据对象(E-R图、数据字典)转换为设计阶段的数据结构和数据库,包括两个方面。(1)程序级的数据结构设计:采用(伪)代码的方式定义数据结构(数据的组成、类型、缺省值等信息)。(2)应用级的数据库设计:采用物理级的E-R图表示。六、过程设计这里讲述程序流程图、N-S图、PAD图,以及结构化语言七、软件设计评审八、结构化设计实例九、课程思政:简要介绍案例“高斯数据库2”讲授思考题和作业P107~109习题扩展阅读无章节名称第6章软件实现课次1(总第10次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解编程语言的发展与分类了解选择编程语言时所需考虑的因素掌握良好的编程风格与编码规范了解代码重用了解分析和评价代码的质量通过案例“杀毒软件之父”—王江民,进行思政教育教学重点良好的编程风格与编码规范教学难点良好的编程风格与编码规范环节/时间授课内容教学方法课程导入10分钟编程语言的介绍和选择讲授正式授课80分钟一、编程语言1.编程语言发展和分类1)机器语言2)汇编语言3)高级语言4)超高级语言了解流行语言C、Python、Java、C++、C#、JavaScript、PHP的特征和应用2.选择编程语言需考虑的因素1)项目的应用范围2)用户的需求3)使用的软件开发工具4)开发人员的喜好和能力5)软件的可移植性要求6)算法和数据结构的复杂性7)平台支持二、编码风格和规范1.版权和版本声明1)版权信息2)文件名称、标识符、摘要3)当前版本号、作者/修改者、完成日期4)版本历史信息2.程序版式如缩进、空格、空行、代码行最大长度等规则,增加代码可读性。3.注释注释一般位于:1)版本、版权声明2)函数接口说明3)重要代码行或段落揭示注释规则:1)尽量精简2)准确、易懂,不能有二义性3)注释放在被描述的代码上方或右方4)代码较长时在段落结束处加注释4.命名规则1)按照标识符的实际意义命名2)标识符尽可能短3)命名与开发工具或操作系统的风格保持一致4)变量名不要过于相似5)注释解释变量命名6)不要出现仅靠大小写区分的标识符7)尽量避免出现数字编号5.数据说明1)按照一定次序,如数据类型,说明类内数据2)说明同一语句中的相同类型变量时,按字母序排列3)添加必要注释说明复杂数据结构6.语句构造1)不同语句分行写2)合理利用缩进体现层次结构3)复杂运算式中使用括号清晰表达运算顺序4)经常使用的代码段独立封装成函数或过程5)避免使用goto语句6)避免使用多层嵌套7)避免使用复杂的判定条件7.输入输出1)对输入数据施行严格的数据检查,及时识别错误和异常2)简化输入的步骤、操作3)输入格式限制不要太严格4)允许默认输入5)交互式输入中要给予用户正确的提示6)对输出数据添加注释7)输出数据遵循一定的格式8.效率主要取决于使用的算法和数据结构,代码可由编译器优化。1)减少循环嵌套的层数2)循环结构改为嵌套结构3)简化算术和逻辑表达式,少用混合数据类型的运算4)避免使用多维数组和复杂的表三、代码复用复用方式:1)源代码剪贴2)源代码包含3)继承开源代码复用,优点是缩减开发成本,提高开发效率;缺点一是开源许可证容易侵权,二是复用的代码难以及时更新,有安全风险。四、分析和评价代码质量1.可读性2.可扩展性3.灵活性4.简洁性5.可复用性6.可测试性7.可维护性五、软件实现实例六、课程思政:简要介绍案例“杀毒软件之父”—王江民讲授思考题和作业P123~124习题扩展阅读无章节名称第7章软件测试(1)课次1(总第11次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求掌握软件测试的原则了解软件测试的常用模型了解软件测试的分类了解测试用例和测试用例设计方法掌握等价类划分法;熟悉黑盒测试的其他方法通过案例“中国的工业软件1”,进行思政教育教学重点等价类划分法教学难点等价类划分法环节/时间授课内容教学方法课程导入10分钟软件测试的概念、基本原则和模型(略讲)讲授正式授课80分钟一、软件测试的基本概念软件测试是软件开发过程中的重要阶段,用来保证软件产品的稳定性、安全性、一致性、完全性等要求,从而保证软件质量,软件测试工作应该贯穿整个开发过程。1.基本原则1)完全测试是不可能的2)测试中存在风险和缺陷3)软件测试只能表明缺陷的存在,不能证明没有其他方面的缺陷4)潜在的错误数和发现的错误数成正比5)让不同测试人员参与测试6)开发小组和测试小组分立7)尽早不断测试,让测试工作贯穿开发过程8)设计测试用例时要包括输入数据和预期的输出结果两个部分,输入数据还应该包括非法情况9)集中测试容易出错或是出错较多的模块10)长期保留所有的测试用例,方便回归测试2.测试模型1)V模型。在编码后才进行测试工作,无法及时纠正错误2)W模型。测试与各个设计过程同步进行,局限是测试不能跨阶段3)H模型。测试活动独立,与其他流程并行。二、软件测试分类1.按测试阶段分为单元、集成、系统、验收测试2.按是否运行程序分为静态测试和动态测试3....三、测试用例为节省时间、资源,提高测试效率,应该挑选有代表性的或特殊性的测试数据进行测试。1.测试用例设计2.测试用例场景描述每个经过测试用例可能的路径四、软件测试方法静态测试主要为人工审查代码,检测有效但是对测试人员要求高。动态测试需要实际运行程序,主要分为白盒和黑盒测试1.黑盒测试1)等价类划分法。将输入根据不同条件划分为若干子集,只取各个子集中的部分输入测试。2)边界值分析法。取输入范围的边界值以及边界附近的值进行测试。3)错误推测法。主要靠直觉和经验,选择程序中可能的错误和容易发生错误的特殊情况。4)因果图法和决策表法。考虑不同输入条件的组合,条件之间的制约关系,条件与结果之间的逻辑关系。先根据程序规格说明书划定可能的原因、结果,画出相应的因果图,再转化为决策表,根据决策表的不同条件组合设计测试用例。5)场景法。对于有各种中间状态、事件的软件,可以根据程序执行的基本流和各个备选流,生成不同的场景,对每个流程场景设计相应的测试用例。五、课程思政:简要介绍案例“中国的工业软件1”讲授思考题和作业P163~165习题扩展阅读无章节名称第7章软件测试(2)课次1(总第12次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求掌握逻辑覆盖法;熟悉白盒测试的其他方法掌握软件测试的一般,以及每个阶段测试的关注点了解回归测试、自动化测试熟悉软件调试通过案例“中国的工业软件2”,进行思政教育教学重点逻辑覆盖法;单元测试教学难点逻辑覆盖法;单元测试环节/时间授课内容教学方法课程导入10分钟回顾上节课软件测试的内容讲授正式授课80分钟一、软件测试方法2.白盒测试一般来说,采取先静态后动态的方式,先进行代码检查和静态结构分析,再进行覆盖测试。覆盖测试是重点,应尽可能提高覆盖率。不同测试阶段测试重点不同,需要白盒黑盒相结合进行测试。1)代码检查法。根据设计文档和一般编码原则检查代码。2)静态结构分析。分析源代码的内部结构,各模块的逻辑关系,如控制流分析、数据流分析、信息流分析、接口分析、表达式分析等,进而找出错误。3)程序插桩技术。往被测试程序中插入输出等操作来了解变量、语句的执行情况,从而查出错误。4)逻辑覆盖法和基本路径法。根据程序的流程图,设计测试用例,以覆盖所有的执行路径或语句。二、分阶段测试1.单元测试2.集成测试3.系统测试4.验收测试5.回归测试6.自动化测试7.软件调试三、软件测试实例三、课程思政:简要介绍案例“中国的工业软件2”讲授思考题和作业P163~165习题扩展阅读无章节名称第8章软件维护课次1(总第13次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求熟悉软件部署与软件交付。了解软件维护的过程和分类。了解软件的可维护性。了解软件维护的副作用。了解软件运维。了解软件再工程—逆向工程、重构、正向工程。通过案例“12306”,进行思政教育教学重点软件维护的过程教学难点软件再工程—逆向工程、重构、正向工程环节/时间授课内容教学方法课程导入

10分钟软件维护的意义讲授正式授课80分钟一、软件维护软件维护是软件产品交付并投入使用后,为弥补软件测试阶段未发现的缺陷,改进软件产品的性能,补充软件产品的新功能等所进行的修改软件的过程。通常软件维护周期和费用都很大。1.软件部署与交付。需要完成软件的安装部署、验收测试、交付验收结果,然后对用户进行必要的培训,交付相关文档,再进入维护阶段。2.软件维护的过程。1)建立维护机构2)用户提出维护申请并提交维护申请报告3)维护人员确认维护类型并实话相应的维护工作4)整理维护记录并对维护工作进行评审5)对维护工作进行评审3.软件维护的分类1)纠错性维护2)适应性维护3)完善性维护4)预防性维护4.软件的可维护性影响因素有可理解性、可测试性和可修改性等。提升方法:1)明确软件质量目标和优先级,重点保证主要影响的质量因素2)建立完整文档3)采用行进的维护工具和技术4)注重可维护性的评审环节5.软件维护的副作用1)代码修改产生新错误2)修改数据产生不兼容等错误3)文档更新不及时导致用户和维护人员不便6.软件运维7.软件再工程1)重构。对源代码和数据修改,使其便于理解或维护。2)正向工程。改造原软件,加入新功能和改善整体性能。3)逆向工程。对源代码进行抽象分析,导出更高层次的表达。二、软件维护实例三、课程思政:简要介绍案例“12306”讲授思考题和作业P174~176习题扩展阅读无章节名称第9章面向对象方法与UML(1)课次1(总第14次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求掌握面向对象的基本概念理解面向对象软件工程的特征与优势掌握面向对象的实施步骤了解统一建模语言UML熟悉UML的用例图、类图、对象图、包图通过案例“抖音1”,进行思政教育教学重点用例图、类图教学难点用例图、类图环节/时间授课内容教学方法课程导入10分钟面向对象的基本概念1、面向对象是指:按照人们认识客观世界的系统思维方式,采用基于对象的概念建立模型,模拟客观世界分析、设计、实现软件的办法。面向对象涉及的概念包括:对象:现实世界中各种各样的实体具有自己的属性和行为类:具有相似内部状态和运动规律的实体的集合与抽象。消息:对象之间相互联系和相互作用的方式类具有以下七点特性:抽象、继承、封装、多态、重写、包、包的接口类。讲授正式授课80分钟二、面向对象的软件工程方法的特征与优势三、面向对象的实施步骤1.面向对象分析。2.面向对象设计。3.面向对象实现。4.面向对象测试。四、UMLUML简述UML是一种通用的可视化建模语言,用来描述、可视化、构造、和文档化软件密集型系统的各种工作。UML的应用范围UML的图用例图对系统提供的功能的描述静态图描述系统的静态结构,包括类图、对象图、包讲授图。行为图描述系统的动态模型和组成对象之间的交互关系。其中的状态图描述类的对象的有可能的状态以及事件发生时状态的转移条件。交互图交互图描述对象之间的交互关系。其中顺序图描述对象之间的动态合作关系,协作图描述对象之间的协作关系。实现图实现图提供关于系统实现方面的信息。其中组件图描述代码构建的物理结构以及组件之间的依赖关系。部署图用于定义系统中软硬件的物理体系结构。五、静态建模机制UML的静态建模机制包括用例图、类图、对象图、包图等。用例图用例图从用户的角度描述系统的功能,由用例,参与者,以及他们的关系连线组成。此图从用户角度描述系统的行为,使用人型符号表示参与者并唯一命名,使用椭圆形表示用例,参与者和用例之间使用带箭头的实线连接。用例之间有三种关系:包含关系提取出多个用例的共同特征,用例包含其公有特征拓展关系用例的异常行为和分支可作为拓展用例泛化关系类图和对象图类图使用类描述系统的结构,展示了系统中类的静态结构,即类与类之间的相互关系。对象图是类图的实例,它展示了系统在某一时刻的快照。类与类之间的关系有关联、依赖、泛化、实现等。包图包图是用于描述模型中的包和其所包含元素的组织方式的图。包图通过对途中的各个包元素以及包之间关系的描述,展示出系统的模块,以及模块之间的依赖关系。六、课程思政:简要介绍案例“抖音1”讲授思考题和作业P200~202习题扩展阅读吕云翔,赵天宇,丛硕.UML与Rose建模实用教程[M].北京:人民邮电出版社,2016章节名称第9章面向对象方法与UML(2)课次1(总第15次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求熟悉UML的顺序图、协作图、状态图、活动图、组件图、部署图通过案例“抖音2”,进行思政教育教学重点顺序图、活动图教学难点顺序图、活动图环节/时间授课内容教学方法课程导入10分钟回顾上一节课所讲的内容讲授正式授课80分钟一、动态建模机制系统中的对象在执行期间的不同时间点如何通信以及通信结果如何,这就是系统的动态行为1、顺序图表示完成某项行为的对象和这些对象之间传递消息的时间顺序。顺序图由对象、生命线、控制焦点、消息等组成。2、协作图用于显示系统的动作协作,类似于顺序图中的交互片段,但协作图也显示对象之间的关系。3、状态图描述对象对外部对象响应的历史状态序列,即描述对象所有可能的状态,以及那些事件将导致状态的变化。活动图活动图中的活动是展示整个计算步骤的控制流(及其操作)的节点和流的图。描述物理架构组件图组件图根据系统的代码组件显示系统代码的物理结构。其中的组件可以是源代码组件、二进制组件或可执行组件。部署图部署图用于显示系统中硬件和软件的物理结构,可以显示实际中的计算机和设备,以及它们之间的互联关系。三、面向对象方法与UML实例四、课程思政:简要介绍案例“抖音2”讲授思考题和作业P200~202习题扩展阅读吕云翔,赵天宇,丛硕.UML与Rose建模实用教程[M].北京:人民邮电出版社,2016章节名称第10章面向对象分析(1)课次1(总第16次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求理解面向对象分析的过程和原则掌握面向对象建模的对象模型通过案例“北斗卫星导航系统1”,进行思政教育教学重点对象模型的建立教学难点对象模型的建立环节/时间授课内容教学方法课程导入10分钟面向对象分析方法面向对象分析过程面向对象分析主要以用例模型为基础。开发人员在原始需求的基础上,通过构建用例模型从而得到系统的需求,在通过对用例模型的完善来改善需求。确定系统的外部参与人员确定系统的用例划分目标系统中的类与对象识别对象之间的动态交互行为将需求分析的结构用多种模型图表示出来面向对象分析原则定义有实际意义的对象模型的描述要规范、准确共享性封装性讲授正式授课80分钟二、建立对象模型对象模型描述了现实世界中的“类与对象”以及他们之间的关系,表示了目标系统的静态数据结构。在面向对象的分析中,一般都是先建立对象模型,然后再建立动态模型和功能模型。对象模型为建立动态模型和功能模型提供了实质性的框架对象模型的组成层次主题层用于划分主题,主题是将一组具有较强联系的类组织在一起形成的类的聚合,具有以下三个特点:主题是类的聚合,但主题自身不是一个类;主题内部的类之间往往有内部联系;主题的划分没有固定的规则主题的划分有以下两种方式:自底向上的划分方式和自顶向下的划分方式。主题图:主题的划分结果可以形成一个完整的类图和一个主题图。类与对象层建立对象模型首先需要确定所选的对象与类候选的类与对象包括:可感知的物理实体;人或组织的角色;应该记忆的事件;两个或多个事件的相互作用;需要说明的概念;筛选候选对象与类的标准有:冗余,无关,笼统,属性,操作,实现六点。结构层确定类与类之间的结构关系(如继承)属性层确定应用的属性,属性的确定既与问题域有关,也和目标系统的人物有关。应该只考虑有具体应用直接相关的属性。表示属性的启发性准则如下:每个类至少需要一个属性;属性取值必须适合类的所有实例;出现在泛化关系中的类所继承的属性必须与泛化关系一致;类的导出属性应当略去;应将描述类的外部不可见状态的属性删去。服务层确定类中需要定义的服务。三、课程思政:简要介绍案例“北斗卫星导航系统1”讲授思考题和作业P218~220习题扩展阅读吕云翔,赵天宇,丛硕.UML与Rose建模实用教程[M].北京:人民邮电出版社,2016章节名称第10章面向对象分析(2)课次1(总第17次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求掌握面向对象建模的动态模型、功能模型通过案例“北斗卫星导航系统2”,进行思政教育教学重点动态模型的建立功能模型的建立教学难点动态模型的建立功能模型的建立环节/时间授课内容教学方法课程导入10分钟回顾上一节课所讲的内容讲授正式授课80分钟建立动态模型对象模型建立后,就需考察对象和关系的动态变化情况,即建立动态模型。编写脚本脚本描述用户与目标系统之间的一个或多个典型的交互过程,以便对目标系统的行为有更具体的认识。设计用户界面确定用户界面的信息交换方式,快速建立用户界面原型,供用户评价和修改。画UML顺序图或活动图。画状态图。建立功能模型功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一系列流程图组成。建立功能模型的步骤如下:确定输入和输出值画数据流图3.定义服务三、面向对象分析实例四、课程思政:简要介绍案例“北斗卫星导航系统2”讲授思考题和作业P218~220习题扩展阅读吕云翔,赵天宇,丛硕.UML与Rose建模实用教程[M].北京:人民邮电出版社,2016章节名称第11章面向对象设计(1)课次1(总第18次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解面向对象设计与结构化设计的不同理解面向对象设计与面向对象分析的关系理解面向对象设计的过程、原则和启发规则熟悉面向对象系统分解方法熟悉面向对象问题域、人机交互的设计方法通过案例“银河麒麟1”,进行思政教育教学重点面向对象问题域子系统的设计方法人机交互子系统的设计方法教学难点面向对象问题域子系统的设计方法人机交互子系统的设计方法环节/时间授课内容教学方法课程导入10分钟面向对象设计的概念、意义讲授正式授课80分钟面向对象设计与结构化设计二、面向对象设计与面向对象分析的关系三、面向对象设计的过程与原则1.设计过程1)建立软件体系结构环境图。描述各系统的关系、接口等2)软件体系结构设计。自顶向下等方式设计3)设计各个子系统。问题域子系统、人机交互子系统、任务管理子系统和数据管理子系统4)对象设计及优化。细化对象类、接口与继承关系2.设计原则1)模块化2)抽象化3)信息隐藏4)低耦合5)高内聚6)复用性还要遵循这几条原则:开闭原则里氏替换原则依赖倒置原则接口分离原则单一职责原则3.启发规则1)设计结果清晰易懂2)类深度适当3)尽量设计简单类4)使用简单的协议5)使用简单的操作6)降低设计变动概率四、系统设计1.问题域子系统设计1)调整需求2)复用已有的类3)将问题域类组合在一起4)增添一般化类以建立公共协议接口5)调整继承层次2.人机交互子系统设计1)安全/登录窗口。2)设置窗口。3)业务功能窗口4)对各类信息的报告五、课程思政:简要介绍案例“银河麒麟1”讲授思考题和作业P249~251习题扩展阅读吕云翔,赵天宇,丛硕.UML与Rose建模实用教程[M].北京:人民邮电出版社,2016

章节名称第11章面向对象设计(2)课次1(总第19次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求熟悉任务管理和数据管理子系统的设计方法掌握对象设计的方法熟悉软件设计模式通过案例“银河麒麟2”,进行思政教育教学重点任务管理子系统的设计方法数据管理子系统的设计方法教学难点任务管理子系统的设计方法数据管理子系统的设计方法环节/时间授课内容教学方法课程导入10分钟回顾上一节课所讲的内容讲授正式授课80分钟一、系统设计3.任务管理子系统设计1)确定事件驱动型任务2)确定时钟驱动型任务3)确定优先任务和关键任务4)确定协调任务5)审查每个任务6)确定资源需求7)定义任务4.数据管理子系统设计1)设计数据格式。先设计第一范式,建立相应文件;再转化成第三范式,建立关系数据库;最后扩展关系数据库途径,建立面向对象数据库管理系统。2)设计服务。设计对象的存储、检索等服务。3)使用面向对象数据库进行数据管理设计。如存储、管理持久对象等。二、对象设计1.设计类中的服务1)从各类模型中确定服务2)设计相应的算法和数据结构,定义内部类和方法2.设计类的关联1)单向关联实现。单指针引用2)双向关联实现。双指针引用或正向查找或新建独立关联对象3)链属性实现。3.对象设计优化1)确定优先级2)数据访问效率优化(1)冗余关联提高访问效率(2)查询次序调整(3)保留派生属性3)调整继承关系(1)具体到抽象再到具体(2)修改类定义以提高继承程度(3)利用组合关系实现行为共享三、软件设计模式模式,就是指解决一类相似问题的方法论。1、工厂模式通过创建对象而不直接实例化对象的过程,使得程序在判定给定条件的情况下更加灵活的创建对象。2、桥接模式将不同的内容框架用抽象类定义,将变化的内容用具体的子类分别实现。并且,将类的抽象与实现分离,从而使两端都可以独立变化。3、策略模式把一系列的算法封装为具有共同接口的类,将算法的使用和算法本身分离四、面向对象设计实例五、课程思政:简要介绍案例“银河麒麟2”讲授思考题和作业P249~251习题扩展阅读吕云翔,赵天宇,丛硕.UML与Rose建模实用教程[M].北京:人民邮电出版社,2016章节名称第12章面向对象实现课次1(总第20次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解面向对象语言的选择。熟悉面向对象程序设计风格。通过案例“PaddlePaddle”,进行思政教育教学重点面向对象程序设计风格教学难点面向对象程序设计风格环节/时间授课内容教学方法课程导入10分钟面向对象语言的选择面向对象语言的优点面向对象语言的技术特点讲授正式授课80分钟二、面向对象程序设计风格1.提高可重用性2.提高可扩充性3.提高稳健性三、面向对象实现实例四、课程思政:简要介绍案例“PaddlePaddle”讲授思考题和作业P257~258习题扩展阅读无章节名称第13章面向对象测试课次1(总第21次)课时2授课形式理论课■案例讨论课□实验课□习题课□其他□教学目的及要求了解面向对象测试与传统测试

温馨提示

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

评论

0/150

提交评论