第11章《软件工程》
- 格式:ppt
- 大小:459.00 KB
- 文档页数:26
判断题:第1章概述1. 由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。
(×)2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵。
(×)4. 大多数软件产品在其生命周期中不需要增强功能。
(×)精品文档,你值得期待5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
(×)第4章需求工程1. 在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。
(√)2. 软件需求规格说明书在软件开发中具有重要的作用,它是软件可行性分析的依据。
(×)第5章面向对象基础1. 模型是对现实的简化,建模是为了更好地理解所开发的系统。
(√)2. UML语言支持面向对象的主要概念,并与具体的开发过程相关。
(×)第6章面向对象分析1. 面向对象分析的核心在于建立一个描述软件系统的模型。
(×)第7章软件体系结构设计1. 系统体系结构的最佳表示形式是一个可执行的软件原型。
(×)2. 软件体系结构描述是不同项目相关人员之间进行沟通的使能器。
(√)3. 良好的分层体系结构有利于系统的扩展与维护。
(√)4. 消除两个包之间出现的循环依赖在技术上是不可行的。
(×)5. 设计模式是从大量成功实践中总结出来且被广泛公认的实践和知识。
(√)第8章面向对象设计1. 面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型。
(√)2. 系统设计的主要任务是细化分析模型,最终形成系统的设计模型。
(×)3. 关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。
(×)4. 用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。
1-1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?1-2 假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
1-6 什么是软件过程?它与软件工程方法学有何关系?1-7 什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。
2-1 在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?2-2 为方便储户,某银行拟开发计算机储蓄系统。
储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。
请写出问题定义并分析此系统的可行性。
2-3 为方便旅客,某航空公司拟开发一个机票预订系统。
旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。
请写出问题定义并分析此系统的可行性。
2-4 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。
某医院打算开发一个以计算机为中心的患者监护系统,请写出问题定义,并且分析开发这个系统的可行性。
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。
《软件工程》教案课程简介本课程旨在介绍软件工程的基本概念、原理和方法,培养学生的软件工程思维和实践能力。
通过理论讲解和实践操作,帮助学生了解软件开发的整体过程,掌握软件工程的基本技术和工具。
课程目标- 熟悉软件工程的基本概念和主要原理- 掌握软件项目管理和开发的基本流程- 能够运用软件工程方法和工具进行软件开发和维护- 培养学生的团队合作和沟通能力教学内容1. 软件工程概述- 软件工程的定义和发展历程- 软件工程的重要性和作用2. 软件过程模型- 瀑布模型- 增量模型- 螺旋模型- 敏捷开发模型3. 软件需求分析与规格说明- 需求获取和分析- 需求规格说明的方法和技巧4. 软件设计与架构- 模块化设计原则- 面向对象设计方法- 软件架构的设计和评估5. 软件测试与质量保证- 静态测试和动态测试- 软件质量标准和评估- 软件缺陷管理和修复6. 软件项目管理- 项目计划和进度管理- 需求管理和变更控制- 软件配置管理和版本控制7. 软件开发工具与环境- 集成开发环境(IDE)的使用- 版本控制工具(如Git)的使用- 自动化构建工具(如Maven)的使用教学方法本课程采用理论与实践相结合的教学方法。
通过课堂讲解、案例分析和项目实践等形式,激发学生的研究兴趣和动手能力。
教学评估1. 平时成绩占比:60%- 课堂参与和讨论- 作业完成情况2. 期末考试占比:40%参考教材- 《软件工程导论》(第7版),作者:Ian Sommerville- 《软件工程与项目实践》(第2版),作者:高博- 《软件工程基础》(第3版),作者:王晓敏以上为《软件工程》教案的简要内容介绍,具体的教学安排和教学材料请以教师课堂讲解为准。
第1章第2章第11章软件工程学概述1.1 软件危机1.1.1 软件危机的介绍软件危机(软件萧条、软件困扰):是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两方面的问题:如何开发软件,满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
1.1.2 产生软件危机的原因(1)与软件本身的特点有关(2)与软件开发与维护的方法不正确有关1.1.3 消除软件危机的途径对计算机软件有正确的认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。
应该开发和使用更好的软件工具。
总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
1.21.2.1 软件工程的介绍软件工程:是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
(期中考)软件工程的本质特性:软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品1.2.2 软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性1.2.3 软件工程方法学软件工程包括技术和管理两方面的内容。
软件工程第11章软件重用在软件工程的领域中,软件重用是一项具有重要意义和价值的理念与实践。
它就像是在建筑领域中重复使用标准化的建筑材料和设计模块,能够极大地提高软件开发的效率、质量和可维护性。
软件重用,简单来说,就是在新的软件开发项目中,重复使用已有的软件元素,这些元素可以是代码、设计、文档,甚至是测试用例等。
想象一下,如果每次盖房子都要从烧制砖头开始,那得多麻烦和低效。
同样的道理,在软件开发中,如果每次都要从头开始编写所有的代码,那不仅费时费力,还容易出错。
那么,软件重用到底有哪些好处呢?首先,它能显著提高开发效率。
当我们可以直接使用已经经过验证和优化的软件组件时,就不必再花费大量时间去重新开发类似的功能,从而大大缩短了开发周期。
其次,软件重用有助于提高软件的质量。
因为被重用的软件元素通常已经在之前的项目中经过了充分的测试和验证,其稳定性和可靠性相对较高。
再者,它能够降低开发成本。
减少了重复的开发工作,也就降低了人力、时间和资源的投入。
最后,软件重用还能增强软件的可维护性。
由于重用的部分具有一致性和标准化的特点,维护起来会更加容易。
然而,要实现软件重用,并不是一件简单的事情。
它需要我们在软件开发的整个过程中,建立起一套有效的管理和技术体系。
在需求分析阶段,我们就需要考虑是否有可以重用的软件组件能够满足当前项目的需求。
这就要求开发人员对已有的软件资源有充分的了解和掌握。
同时,还需要对新的需求进行准确的分析和评估,以确定哪些部分可以通过重用现有组件来实现,哪些部分需要进行新的开发。
在设计阶段,我们要设计出具有良好可重用性的软件架构。
这意味着架构应该具有清晰的层次结构、简洁的接口和高度的模块化。
这样的架构能够方便地将不同的软件组件组合在一起,同时也便于对单个组件进行替换和升级。
在编码阶段,开发人员需要遵循一定的规范和标准,以确保编写的代码具有良好的可读性、可维护性和可重用性。
代码的注释、命名规则、代码结构等方面都需要精心设计,以便其他开发人员能够轻松理解和使用。
第1章概述(习题与参考答案)[判定题]1. 由于今天个人运算机不断进展壮大,人们再也不采纳软件团队的开发方式。
(×)2. 由于软件是产品,因此能够应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数运算机系统所需的硬件比软件更昂贵。
(×)4. 大多数软件产品在其生命周期中不需要增强功能。
(×)5. 大多数软件系统是不容易转变的,除非它们在设计时考虑了转变。
(√)6. 一样来讲,软件只有在其行为与设计者的目标一致的情形下才能成功。
(×)[选择题]1. ()因素促使运算机系统愈来愈复杂。
(D)A. 运算机内存和存储容量上的庞大增加B. 外部输入/输出选项的加倍多样性C. 运算机体系结构方面的深刻转变D. 以上所有选项2. 下面的()再也不是现代软件工程师关注的问题。
(A)A. 什么缘故运算机硬件的本钱这么高?B. 什么缘故软件需要很长时刻才能完成?C. 什么缘故开发一个软件的本钱这么高?D. 什么缘故不能在产品发布前去除软件错误?3. 软件会慢慢退化而可不能磨损,其缘故在于()。
(C)A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在利用以后C. 不断的变更使组件接口之间引发错误D. 软件备件很难订购4. 大多数软件仍然是定制开发的,其缘故在于()。
(C)A. 软件组件重用是十分普遍的B. 可重用的组件太昂贵而无法利用C. 软件在不利用其他组件的情形下很容易构造出来D. 商业组件在很多应用领域中能够取得5. 下面的()说法是正确的。
(C)A. 软件危机在20世纪70年代末期全面暴发B. 当前先进的软件工程方式已经解决了软件危机的问题C. 软件危机是指在运算机软件的开发和保护进程中碰到的一系列严峻问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的大体目标是()。
(B)A. 排除软件固有的复杂性B. 开发高质量的软件C. 尽力发挥开发人员的制造性潜能D. 更好地保护正在利用的软件产品7. ()是将系统化的、标准的、可定量的方式应用于软件的开发、运行和保护的进程,它包括方式、工具和进程三个要素。