第一章:软件工程与软件设计

1.叙述软件工程中可修改性,有效性,可靠性,可理解性,可维护性,可重用性,可适应性,可移植性和可追踪性等概念的含义,并指明这些概念的重要性

  • 可修改性(modifiability):可修改性是指允许对系统进行修改而不增加原系统的复杂性.它支持软件的调试与维护,但度量起来比较困难.
  • 有效性(efficiency):有效性是指软件系统能最有效地利用计算机的时间资源和空间资源,一般将系统的时/空开销作为衡量软件质量的一项重要技术指标.牺牲时间效率换取空间有效性或牺牲空间效率换取时间有效性时/空折中经常出现.
  • 可靠性(reliability):可靠性是指软件在给定环境和时间下不发生故障的概率. 对于实时嵌入式计算机系统,可靠性是非常重要的目标,如宇宙飞船的导航,核电站的运行等.
  • 可理解性(understandability):可理解性是指系统具有清晰的结构,能直接反应问题的需求.有助于软件系统的复杂性,支持软件的维护,移植或复用.
  • 可维护性(maintainability):可维护性是指交付软件产品后能够方便地对它进行修改,以改正潜在的错误以及改进性能和其他属性,使软件适应环境的变化等.可理解和可修改性有利于软件的可维护性.
  • 可重用性(reusability):概念或功能相对独立的一个或一组相关模块定义为一个软部件.可重用性有助于提升软件产品的质量和开发效率,有助于降低软件的开发和维护费用.
  • 可适应性(adaptability):可适应性是指软件在不同的系统约束下,使用户需求得到满足的难易程度.软件应采用广为流传的程序设计语言编码,在广为流行的操作系统环境中运行,采用标准的术语和格式书写文档.适应性强的软件较容易推广和使用
  • 可移植性(portability):可移植性是指软件从一个计算机系统或环境移植到另一个计算机系统或环境的难易程度.可移植性支持软件的可复用性和可适应性.
  • 可追踪性(traceability):可追踪性是指根据软件需求对软件设计,程序进行正向追踪,或根据程序,软件设计对软件需求进行逆向追踪的能力,降低系统的复杂性会提高软件的可追踪性.

2.软件设计应该包含哪些要素?
软件设计最终要提供一种解决方案,用于描述如何实现一个满足需要的软件,应包含以下组成要素:
(1)目标描述.设计方案需要清楚地描述它要解决的问题和将要达到的目标.
(2)设计约束.设计目标的获得通常要在某些约束的限制范围内,这些约束定义了要解决问题的解空间.
(3)产品描述.设计活动的结果必须以一种对被设计的产品进行描述的方式呈现出来.
(4)设计原理.工程化的设计活动必须以一定的科学原理和技术手段为基础,它们将表明问题可以通过该设计得到合理的解决.
(5)开发规划.工程化的设计活动不仅需要让人知道该设计能解决问题,还需要让人们了解该设计在实际开发中是可行的,以及如何实现该设计.
(6)使用描述.产品经常在某些特定条件下才能被可靠,高效地使用,并达到最初的设计目标.因此描述产品如何使用非常重要.

第二章:统一建模语言UML

(1)
1.假设要开发一个简单的网络购物平台,可以实现基本的用户登录,浏览商品,购买商品,生成订单,支付等功能.请给出该系统中存在的一些主要类的类图.

(2)
2.试叙述UML用例图在软件需求建模中的用途.请给出上一题网络购物平台的用例图.

3.UML交互图包含哪些视图?请针对第一题网络购物平台中的某个场景(如登录,把商品加入购物车等)给出相应的顺序图.

4.UML活动图和状态图之间有何不同?给出第一题网络购物平台中订单类的状态图.
区别:状态图是描述某一对象的状态转化的,它主要是展示的是对象的状态。描述的是一个对象的事情。从状态图中我们可以看出,对象在接受了事件刺激后,会做出什么样的反应。
活动图是描述系统在执行某一用例时的具体步骤的,它主要表现的是系统的动作,描述的是整个系统的事情。

第三章:软件设计基础

1.内聚度,耦合度分别指什么?为什么软件设计要追求高内聚低耦合?

内聚度:指该模块内各成分间彼此结合的紧密程度,内聚按其高低程度可分为不同等级,内聚度越高越好.从低到高:偶然性内聚–>逻辑性内聚–>时序内聚–>过程性内聚–>通信性内聚–>顺序性内聚–>功能性内聚
耦合度:是对软件结构中模块间的关联程度的一种度量.耦合的强弱取决于模块间接口的复杂性,进入或调用模块的位置以及通过接口传送数据的多少等.在设计软件时应追求尽可能松散耦合的系统,这类系统中模块的设计测试和维护相互独立.错误传播的可能性和范围会较低.
从低到高:非直接耦合–>数据耦合–>特征耦合–>控制耦合–>外部耦合–>公共耦合–>内容耦合
为什么要追求高内聚低耦合:高内聚,低耦合的好处体现在系统持续发展的过程中,高内聚,低耦合的系统具有更好的重用性,维护性,扩展性,可以更高效的完成系统的维护开发,持续的支持业务的发展,而不会成为业务发展的障碍。

2.软件设计过程中包含哪些主要活动?分别介绍这些活动的主要目标.

(1)软件设计计划:明确设计过程的输入制品并使其处于就绪状态,定义设计过程的目标,输出制品及其验收准则,确定覆盖设计过程中各个阶段的全局性设计策略,分配设计过程相关人员职责,针对设计过程中的活动制定工作计划.
(2)体系结构设计:建立软件系统的体系结构,有时也称“顶层架构”.
(3)界面设计:为用户使用目标软件系统以实现其所有业务需求而提供友好的人机交互界面.
(4)模块/子系统设计:确定模块的具体接口定义并设计模块的内部结构,明确它们之间的协作关系.
(5)过程/算法设计:对模块内部的工作和执行过程进行描述,给出有关处理的精确说明.
(6)数据模型设计:确定设计模型中需要持久保存的数据条目,基于关系数据模型设计这些数据条目的组织方式,必要时还需要设计特定于本软件项目将采用的关系数据库管理系统的优化机制,以提高持久数据操作的性能.

3.哪些要素可以用来评价软件设计的质量?

  • a.结构良好
  • b.充分性
  • c.可行性
  • d.简单性
  • e.实用性
  • f.灵活性
  • g.健壮性
  • h.可移植性
  • i.可复用性
  • j.标准化

4.试总结本章列举的软件体系结构设计方法各有何特点.结合自己的开发经验,讨论如何选择合适的软件体系结构设计方法

  • 1.软件体系结构的多视图建模:适合处理大规模系统,复杂性较高(Rational公司4+1)

  • 2.基于评估与转换的软件体系结构设计:针对功能特性

  • 3.模型驱动的软件体系结构设计:主要指如何以复用体系结构风格为基础设计软件体系结构

  • 4.领域特定的软件体系结构设计:领域工程分析应用领域的共同特征和可变特征,对刻画这些特征的对象和操作进行选择和抽象,形成领域模型,并进一步生成DSSA

  • 5.软件产品线方法:是软件复用发展的一个更高阶段,它并不仅仅局限于以前人们在软件复用中考虑的对函数,模块,类体系结构甚至子系统的重用

  • 6.其他软件体系结构设计方法:(1)基于目标图推理的体系结构设计方法(2)基于属性的体系结构设计方法

第四章:面向对象的软件设计方法

1.什么是概念模型设计?为什么需要建立软件概念模型?

定义:为了把现实世界中的具体事物抽象、组织为某一数据库管理 系统支持的数据模型,人们常常首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某一个数据库管理系统(DBMS)支持的数据模型,而是概念级的模型,称为概念模型。

原因:由于概念模型用于信息世界的建模型,是现实世界到信息世界的第一层抽象,是用户与数据库设计人员之间进行交流的语言,因此概念模型一方面具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,另一方面它还简单、清晰、易于用户理解。

2.阐述设计精化的作用和主要内容

设计精化主要内容:精化软件结构、调整软件构成类、精华交互模型、精华类之间的关系

设计精化作用:经过分析和设计,已建立起一-定程度的设计模型,其包含了较完整的静态结构模型(顶层架构图、分析类图)和动态行为模型(交互图),以及用户界面设计和数据模型设计,但其设计模型的抽象层次与软件实现之间还有一定差距,有必要对这些模型再进行分析,细化和优化,己生成高质量的设计模型,为后续的实现阶段奠定坚实基础

3.为什么要对类的行为进行设计?如何设计类的行为?

  • 可以对类的对象实例在其生存周期中对外部消息的响应和状态变化变化过程进行建模,对类中重要操作的实现过程或算法进行描述,帮助编程人员更好地理解类的使用.

1.针对整个类使用UML状态图描述其行为
2.针对类中某些重要的方法,用UML活动图描述其执行过程或步骤

软件设计与体系结构(第二版)部分习题相关推荐

  1. 软件设计与体系结构第二版董威_董威-软件设计与体系结构(第2版)-PPT课件.zip-3-4-形式化方法.ppt...

    董威-软件设计与体系结构(第2版)-PPT课件.zip-3-4-形式化方法.ppt (1009.5 KB) 下载风险提示 若需要下载,请务必先预览(下载的文件和预览的文件一致) 由于本站上传量巨大,来 ...

  2. JSP第二版课后习题答案初步不含颜色,冗杂【侵权联系我删除】

    JSP第二版课后习题下载:https://download.csdn.net/download/weixin_42859280/11265785 JSP第二版课后习题答案下载:https://down ...

  3. 软件设计与体系结构思维导图

    软件设计与体系结构思维导图 第一章 软件工程与软件设计 第二章 统一建模语言UML 目录版 详细版 第三章 软件设计基础 目录版 详细版 第四章 面向对象的软件设计方法 目录版 详细版 第六章 用户界 ...

  4. 软件项目管理韩万江版课后习题答案

    软件项目管理韩万江版课后习题答案,需要自取! 项目管理案例教程(第三版)习题及答案第一章软件项目管理概述 一.填空题 1.实现项目目标的制约因素有(项目范围).(成本).(进度计划).(客户满意度)等 ...

  5. 整理对应_JSP第二版课后习题答案【侵权联系我删除】

    JSP第二版课后习题下载:https://download.csdn.net/download/weixin_42859280/11265785 JSP第二版课后习题答案下载:https://down ...

  6. 软件设计与体系结构第三次实验——web服务开发

    目录 一.后端 二.前端 三.运行结果 概述:本次实验中我们选择使用实现REST API,在web上实现登录.签到以及查询签到结果的功能. 一.后端 本次实验在第二次实验(设计模式)的基础上进行了极大 ...

  7. 1-1、秋招年3-5月准备期——《Verilog HDL高级数字设计》(第二版)

                           <Verilog HDL高级数字设计>(第二版) 一.目录如下:

  8. 算法竞赛入门经典第二版课后习题答案第二章

    算法竞赛入门经典第二版课后习题答案 第二章 习题2-1水仙花数 输出100-999中的所有水仙花数.若三位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数.例如153=1^3+5^3+3^ ...

  9. 《0day安全:软件漏洞分析技术第二版》

    简单说来,这次再版的原因有二: 首先,国人深知与时俱进的道理,技术上面更是如此.随着windows平台保护技术的不断改进,win7的广泛使用,第一版中所述的很多方法已有较大局 限.为此我们逐一搜集了近 ...

最新文章

  1. 生命的脆弱——悼念朋友
  2. Apache+tomcat+mysql安装步骤
  3. svn导出java项目_【SVN】导出项目后报错汇总
  4. python遍历目录树_在Python中遍历目录树的速度要快得多?
  5. 论基于candence的组装清单做法
  6. JQuery之编写弹窗
  7. python利用近似公式计算π_Excel函数公式大全之利用SUMSQ函数快速计算多个数据的平方和...
  8. 围圈报数(信息学奥赛一本通-T1334)
  9. Bootstrap CSS 编码规范之注释
  10. 嵌入式Linux交叉开发环境建立-NFS【ZT】
  11. 图说:快!快!抢注自己名字的Outlook.com的邮件别名吧
  12. presto自定义UDF函数
  13. MySQL报错113_连接 MySQL 报错'NoneType' object has no attribute '__getitem__'
  14. 神经网络中常用激活函数总结【Python实现激活函数与导函数,曲线可视化分析】
  15. AD18绘制AHT20原理图及PCB电路设计
  16. win11+github pages+hexo+aurora主题搭建博客
  17. Android实现记账本(麻雀虽小,五脏俱全)
  18. N沟道和P沟道MOS管的四个不同点
  19. 计算机连接打印机连接打印机,怎么连接打印机.教您怎么连接打印机
  20. 小猫长成巨兽,快递江湖抹不去极兔阴影

热门文章

  1. 狄耐克漫云智慧病房系统助力医院评级建设
  2. 微信开发 url传参数 json 导致 ios 微信分享失败苹果手机sinature签名无效
  3. SQL数据库查询LIMIT 数据分页
  4. 解析AI人机协同的未来展望
  5. 连麦互动直播中混屏技术设计
  6. oracle 表分区最大限制,Oracle表中最大分区数
  7. 200道BAT机器学习面试题分享
  8. lexyacc安装配置
  9. 判别分析在SPSS上的实现与结果分析——基于SPSS实验报告
  10. android png和jpg的区别及使用场景