软件设计与体系结构作业.docx
- 文档编号:15684510
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:28
- 大小:515.37KB
软件设计与体系结构作业.docx
《软件设计与体系结构作业.docx》由会员分享,可在线阅读,更多相关《软件设计与体系结构作业.docx(28页珍藏版)》请在冰点文库上搜索。
软件设计与体系结构作业
软件设计与体系结构作业
第一次作业
3.试列举两个大型应用系统的实例说明软件在该系统中所起的关键作用以及软件质量对系统成败的影响。
答:
图书管理系统——软件在系统中运行所起的作用是可以让读者查询到借书与还书情况,以及读书借阅情况,归还日期等,质量的好坏直接影响系统的正常运行。
火车票查询系统——软件在该系统中所起的关键作用是能够在电脑上运行的电脑程序,软件质量好影响人们可以在网上查到最新的消息,尽快买到到火车票。
若软件质量差那可能会不能更新最新消息,使人们不能正确订票、查票、影响人们该系统的使用率。
5.查阅有关文献给出两种本章中未列出的软件开发过程并进行描述。
答:
增量模型——软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。
喷泉模型——与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。
就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。
8.软件体系结构与软件设计有何关系?
软件体系结构的出现有何必然性和重要意义?
答:
软件体系结构与软件设计的关系:
软件体系结构设计作为软件设计过程中的活动之一,能在较为抽象的级别上描述整个软件系统的结构,成为大规模、复杂软件系统设计中必不可少的步骤。
软件体系结构的意义:
软件体系结构将构件以及构件之间的连接作为软件体系结构的基本组成部分。
软件体系结构使软件复用从代码复用发展到设计复用和过程复用,为不同的人提供了共同的语言,体现了系统早期的设计决策,并作为系统设计的抽象,为实现框架和构件的共享与复用,基于体系结构的软件开发提供了有力的支持。
第二次作业
2.在面向对象开发方法中,对象、类、继承、聚集、多态、消息等概念分别指什么?
答:
对象——是现实世界中个体或事物的抽象表示,是其属性和相关操作的封装。
类——是某些对象的共同特征(属性和操作)的表示。
继承——类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性的操作的共享,即子类可以沿用父类(被继承类)的某些特征。
聚集——除遗传关系外,现实世界还普遍存在着部分-整体关系。
多态——指父类及其子类中,对外接口的定义形式相同,却可以对应多种接口的实现形态。
消息——消息传递是对象与其外部世界相互关联的唯一途径。
3.与传统开发方法相比,面向对象开发方法有何优势?
答:
1.简化软件开发过程;
2.支持软件复用
3.改善软件结构
4.UML结构建模和行为建模有何区别?
答:
结构建模被称为静态建模,主要用来描述系统中包含的元素以及元素之间的关系,行为模型被称为动态模型,主要用来刻画系统中的动态行为、过程和步骤。
8.试叙述UNL用例图在软件需求建模中的用途。
答:
用例图是由软件需求分析到最终实现的第一步,它描述人们如何使用一个系统。
用例视图显示谁是相关的用户、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,以便使系统的用户更容易理解这些元素的用途,也便于软件开发人员最终实现这些元素。
用例图在各种开发活动中被广泛的应用,但是它最常用来描述系统及子系统。
第三次作业
2.简述模块化与信息隐藏在软件设计中的意义。
答:
软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块,这些模块可以被组装起来满足整个问题的需求。
在软件设计中实现了功能划分把复杂的大的功能划分成简单的小的模块结构,尽量降低每个模块的成本,减少接口,确保软件总成本最低。
模块化使开活动更加简单的一个重要因素是模块的信息隐藏,即一个模块的开发者不必看到模块的内部,只需要知道其接口即可,使开发者的复杂性降低,不仅支持模块的并行开发,而且还可以减少测试和后期维护的工作量。
3.内聚度、耦合度分别指什么?
为什么软件设计要追求高内聚、低耦合?
答:
内聚度是一个模块内部各成分之间关联程度的度量;耦合度是对模块间关联程度的度量。
软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。
划分摸块的一个准则就是高内聚低耦合。
模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。
模块间联系越多,其耦合性越强,同时表明其独立性越差。
降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,同时每一个类完成特定的独立的功能,实现高内聚,保证系统设计顺利进行。
内聚和耦合密切相关,同其它模块存在强耦合关系的模块常意味这弱内聚,强内聚常意味着弱耦合。
4.软件设计过程中包含哪些主要活动?
分别介绍这些主要活动的主要目标。
答:
(1)软件设计计划
明确设计过程的输入制品并使其处于就绪状态,定义设计过程的目标、输出制品及其验收准则,确定覆盖设计过程中各个阶段的全局性设计策略,分配设计过程相关人员的职责,针对设计过程制定工作计划。
(2)体系结构设计
建立软件系统的体系结构,即“顶层架构”。
(3)界面设计
为用户使用目标软件系统以实现其所有业务需求而提供友好的人机交互界面。
(4)模块/子系统设计
确定的具体接口定义,并设计模块的内部结构,即设置包含于其中的模块、构件和设计类,明确它们之间的协作关系,确保它们之间的协作关系,确保它们能够协同实现高层模块接口规定的所有功能和行为。
(5)过程/算法设计
对模块内部的工作和执行过程进行描述,给出有关处理的精确说明。
(6)数据模型设计
即是把系统的数据结构设计、数据库设计、甚至数据文件设计设计出来,形成数据处理的持久性。
8.试总结本章列举的软件体系结构设计方法各有何特点。
结合自己的开发经验,试讨论如何选择合适的软件体系结构设计方法。
答:
(1)软件体系结构的多视图建模
通过逻辑视图,开发视图、进程视图、物理视图、进程来描述的软件体系结构。
(2)基于评估与转换的软件体系结构设计
通过迭代的开发方式,直至满足客户的需求。
(3)模式驱动的软件体系结构设计
通过总结、记录、复用来实现的体系结构设计
(4)领域特定的软件体系结构设计
借鉴领域中已经成熟的软件体系结构来实现解决方案在某个领域内的复用。
(5)软件产品线方法
软件复用发展的一个更高阶段,它并不仅仅局限于以前人们在软件复用中考虑的对函数、模块、类、体系结构甚至子系统的复用。
(6)其于目标推理的软件体系结构设计方法
功能需求和非功能需求皆被表达为要达到的目标。
(7)其于属性的软件体系结构设计方法
第四次作业
13.什么是软件设计规格说明?
它在软件开发中有何重要用途?
软件设计过程中各个活动的结果最终应该文档化,形成正式的软件设计规格说明书,作为软件设计的输出,例如对系统的目标、范围、约束的定义,对软件结构、接数据等方面的设计等。
形成软件设计规格说明被评审,并作为后续软件实现活动的依据。
14.软件设计评审的目标是什么?
设计评审需要关注哪些方面?
答:
目标:
确保设计规格说明书能够实现所有的软件需求,及早发现设计中的缺陷和错误,并确保设计模型已经精化到合格的软件实现工程师能够构造出符合软件设计者期望的目标软件系统。
一、注意对需求规格说明的正确性进行评审
1是否有需求与其他需求相互冲突或者重复?
2是否清晰、简洁、无二义地表达了每个需求?
3是否每个需求都通过了演示、测试、评审,分析是否得到了验证?
4是否每个需求都在项目的范围内?
5是否每个需求都没有内容和语法上的错误?
6在现有的资源内,是否能实现所有的需求?
7每一条特定的错误信息,是否都是唯一的和具有含义的?
二、注意对需求规格说明的实践性进行评审
三、注意对需求规格说明的完整性进行评审
1编写的所有需求,其详细程度是否一致和合适?
2需求是否能为设计提供足够的基础?
3所有对其他需求的内部引用是否正确?
4是否包含了每个需求的实现优先级?
5是否定义了功能说明的内在算法?
6是否包含了所有已知的客户需求或系统需求?
7是否遗漏了必要的信息?
如果有遗漏的话,把他们标记为待确定的问题?
8是否对所有预期的错误条件所产生的系统行为都编制了文档?
四、注意对需求方案的可行性和成本预算进行评审
五、注意对需求的质量属性进行评审
六、注意对需求的可实施性进行评审
七、注意对需求包含的用例文档进行评审
1用例的目标或价值度量是否明确?
2用例是否是独立的分散任务?
3是否明确说明可用用例会给哪些参与者带来用处?
4编写用例的详细程度是否恰当?
是否有不必要的设计和实现细节?
5所有预期的分支过程是否都编写了文档说明?
6所有预估的异常过程是否都编写了文档说明?
7是否存在一些普通的动作序列可以分解成独立的用例?
8每个路径的步骤是否都清晰明了,无歧义而且完整?
9用例中的每个参与者和步骤是否都与所执行的任务有关?
10用例中定义的每个可选路径是否都可行和可验证?
11用例的前置条件和后置条件是否合理?
八、注意需求评审会的过程和结束标准
1审查期间评审员们提出的所有问题都已经解决。
2相关文档中的所有更改都已经正确完成。
3修订过的文档进行了拼写检查。
4所有标识为TBD(待确定)的问题已经全部解决,或者已经对每个TBD的问题的解决过程、计划解决的目标日期和责任解决人等编制了文档。
5需求文档正式进入了配置库。
第五次作业
6.试以4~6人为一组,选择下面4个软件问题之一,采用本章所述的面向对象方法进行设计,并提交最终的设计模型和文档。
答:
图书馆管理系统面向对象的软件设计与分析
一图书管理系统开发背景
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理.图书馆若采取手工方式对图书资料和图书借阅情况进行人工管理,由于资料繁多,手工处理的工作量大,整体管理效率低下,也不方便读者对图书资料的查阅.
基于以上情况,我们需要一套图书管理系统,来提高信息管理效率.
二图书管理系统设计
2.1任务目标
图书馆信息管理系统作为办公电子化,利用计算机软件,为图书馆管理员管理图书馆藏书,为读者(学生)结束提供借阅图书提供服务。
本次开发任务就是为某学校开发一个图书馆管理系统。
通过使用本系统,实现图书馆藏书管理电子化,借阅自动化,并提供管理员实时监控图书馆藏书,读者实时借书/还书的功能。
除此之外,还提供图书馆管理员维护藏书,读者信息数据库的功能以及读者查阅图书相关信息的功能
2.2 图书管理系统需求描述
2.2.1 系统组成
图书管理系统由一下几个子系统构成:
1. 系统管理员管理子系统
2. 图书管理员管理子系统
3.读者子系统
各个子系统又包含一些各自的独立功能模块,详细模块分配如下图所示。
2.2.2 图书管理系统功能描述
1:
借阅者可以通过网络查询书籍信息和预定书籍。
借阅者能够借阅书籍和还书。
图书管理员能够处理借阅者的借阅和还书请求。
系统管理员可以对系统的数据进行维护,如增加、删除和更新书目,增加、删除和更新借阅者帐户,增加和删除书籍。
2:
系统主要包括以下几个模块:
基本数据维护模块 基本业务模块
数据库管理模块 信息查询模块
2.2.3 系统参与者
图书管理员,借阅者,系统管理员。
其中,读者是多个,图书管理员是几个,系统管理员是一个。
读者可以查询自己的借阅情况、分门别类的查询图书和在规定期限内续借不能超过一次操作的情况下进行自行登录续借书等。
图书管理员主要是日常操作以下几个工作环节:
图书订购、新书验证、书目录入、图书登记、读者信息管理、借阅书登记、图书信息注销和读者信息注销等,而系统管理员统筹管理图书的系统相关事宜,比如权限维护、日志维护、增删用户和管理系统后台数据等。
2.3 图书管理系统功能模型
系统的参与者主要有三类:
读者(也可称为借阅者)、 图书馆管理员、图书馆管理系统维护者
2.3.1 功能模型描述
1.借阅者请求服务的用例图
2.图书馆管理员处理借书、还书等的用例图
3.系统管理员进行系统维护的用例图
2.3.2功能模型的用例图
2.3.2.1读者借书等的用例图如下:
读者借助此图书管理系统子系统,可以进行一下操作:
1.查询图书
2. 预留图书
3. 借书
4. 还书
5. 查阅借阅信息
其中,在读者进行预留图书和查询借阅信息之前,读者必须先登录系统; 读者进行还书操作时,必须保证图书完整;
2.3.2.2图书馆管理员处理借书、还书等的用例图
图书管理员用例描述:
图书管理员使用系统进行的操作主要有:
1. 处理读者的送还的图书
2. 处理读者的借书要求
3. 处理读者的预留图书要求
其中在处理还书时,要查看图书的完整性; 处理读者借书时,要检查读者信息; 用例图如下。
2.3.2.3系统管理员进行系统维护的用例图如下:
2.4 图书管理系统对象模型
根据需求描述,提取出管理员,借阅者,图书等几个对象.
2.4.1 对象模型描述
下面对这个几个对象进行具体陈述并建模:
2.4.1.1读者Borrower类:
读者在系统注册的信息包括一下几点:
姓名(name),住址(address),城市(city),省/州(state),邮政编码(zip),可借数的最大数目(maxbook),借书期限(maxday),读者编号(userid),借书证号码(borrow_number); 读者使用系统可进行的操作有:
查询-------find(),
借书------borrow(),
还书-------return_back();
2.4.1.2系统管理员Administrator类:
系统管理员也可以借书,因此他能进行读者类所以的操作;系统管理员同时也是图书管理员,也可以进行图书管理员说做的一切操作;系统管理员有自己的特殊编号,用来登录系统,进行系统级操作.以区别图书管理员.
2.4.1.3图书管理员Librarian类:
图书管理员也要在系统内注册,注册信息如下:
姓名(name),住址(address),城市(city),省(state);系统为每个管理员分配一个唯一编号workID. 图书管理员登录系统后,可以进行以下操作:
更新借书还书信息------update();
增加预留----------------create();
删除预留信息----------destroy();
2.4.1.4书目Title类:
书目类代表图书,在系统中要保存每一本图书的资料,这些信息包括:
书名(name),作者(author),书号(isbn),库存数量(total_number),借阅号(borrowed_number),是否可以借出(is_allowedForBorrow); 在书类的操作有一些:
查找书目-------------------find();
增加书目----------------create();
删除书目----------------destroy();
借书----------------------borrow();
还书----------------------return_back();
预留图书--------------reserve()
2.4.1.5其他类:
Item类:
此类代表一个书目的一份拷贝
Loan类:
代表对超过还书期限的读书进行罚金的类
Reserve类:
预留图书类
2.4.2 类图
2.5 图书管理系统动态模型
2.5.1 动态模型
2.5.2 系列图
2.5.2.1 系统管理员添加书籍的时序图
数据需求:
书目信息
每本书的拷贝的详细资料
主流程描述:
1. 系统管理员向系统提交新书资料(additem())
2. 系统查询与此书相关的书目
3. 系统返回查询结果
4. 查到书目,则提交,添加此书目的拷贝
2.5.2.2系统管理员添加借阅者帐户的时序图
数据需求:
读者详细资料
主流程:
1. 系统管理员填写新读者的信息
2.提交信息,创建读者信息保存到数据文件
2.5.2.3系统管理员删除书目的时序图
数据需求:
书目信息
主流程:
1. 系统管理员向系统提交要删除的书目
2. 系统查找此书目
3. 系统查找此书目下的所有拷贝
4. 系统删除此书目的所有拷贝 5. 系统删除此书目
2.5.2.4图书管理员处理书籍借阅的时序图
2.5.2.5 借阅者查询书籍信息的时序图
数据需求:
要查询的图书名称
2.5.3 活动图
2.5.3.1借阅者的活动图
2.5.3.2图书管理员的活动图
图书管理员登录系统后,处理日常事务,比如处理读者还书,借书。
在处理还书时,系统会计算读者的还书期限是否过期,如果过期,则要交一定的罚金,并且更新借阅信息。
处理借书时,系统会验证此读者借书的数量是否超过了限制,如果超过最大可借书的数目时,拒绝继续借书。
2.5.3.3系统管理员维护借阅者帐户的活动图
系统管理员运行图书管理系统,在登录界面上输入口令后,系统对用户进行验证,只有通过系统验证后,才能进行管理,否则推出系统.。
通过系统验证后,进入管理主界面,可以对借阅者进行管理,查看借阅者的相关信息,以保证借阅者信息的正确性;可以为读者注册资料,使其能通过系统借书;更新读者的资料。
2.5.3.4系统管理员进行书目信息维护的活动图
系统管理员运行图书管理系统,在登录界面上输入口令后,系统对用户进行验证,只有通过系统验证后才能进行管理.否则推出系统.。
通过验证后,系统管理员可以对书目进行管理,购买了新书后,需要向系统增加新的书目信息;查询书目信息,对图书资料进行全局管理和监督;图书过时后,需要删除相关资料,保证数据的正确。
2.5.3.5系统管理员维护书籍信息的活动图
系统管理员登录系统,输入口令,系统进行验证,验证通过后,才可以使用系统.否则系统拒绝.。
登录后,系统管理员可以对图书进行一些管理,比如增加图书、删除图书,操作完成后推出系统。
第六次作业
6.描述出你在工作中遇到的最好的和最坏的用户界面,并使用本章中的概念进行评价。
答:
置界面于用户的控制之下、减少用户的记忆负担、保持界面的一致性。
1.界面的简洁是要让用户便于使用、便于了解、并能减少用户发生错误选择的可能性。
2.界面中要使用能反应用户本身的语言,而不是游戏设计者的语言。
3.记忆负担最小化
4.界面的结构清晰一致,风格与内容相一致。
5.在视觉效果上便于理解和使用。
6.用户可通过已掌握的知识来使用界面,但不应超出一般常识。
9.用户能自由的作出选择,且所有选择都是可逆的。
在用户作出危险的选择时有信息介入系统的提示。
10.简单来说就是要让用户方便的使用,但不同于上述。
即互动多重性,不局限于单一的工具(包括鼠标、键盘或手柄)。
最好的用户界面体现在三个方面:
结构设计、交互设计和视觉设计三部分。
交互设计
1)有清楚的错误提示。
误操作后,系统提供有针对性的提示。
2)让用户控制界面。
“下一步”、“完成”,面对不同层次提供多种选择,给不同层次的用户提供多种可能性。
3)允许兼用鼠标和键盘。
同一种功能,同时可以用鼠标和键盘。
提供多种可能性。
4)允许工作中断。
例用手机写新短信的时候,收到短信或电话,完成后回来仍能够找到刚才正写的新短信。
5)使用用户的语言,而非技术的语言。
6)提供快速反馈。
给用户心理上的暗示,避免用户焦急。
7)方便退出。
如手机的退出,是按一个键完全退出,还是一层一层的退出。
提供两种可能性。
8)导航功能。
随时转移功能,很容易从一个功能跳到另外一个功能。
9)让用户知道自己当前的位置,使其做出下一步行动的决定。
视觉设计
1)界面清晰明了。
允许用户定制界面。
2)减少短期记忆的负担。
让计算机帮助记忆,例:
UserName,、Password、IE进入界面地址可以让机器记住。
3)依赖认知而非记忆。
如打印图标的记忆、下拉菜单列表中的选择
4)提供视觉线索。
图形符号的视觉的刺激;GUI(图形界面设计):
Where,What,NextStep
5)提供默认(default)、撤销(undo)、恢复(redo)的功能
6)提供界面的快捷方式
7)尽量使用真实世界的比喻。
如:
电话、打印机的图标设计,尊重用户以往的使用经验。
8)完善视觉的清晰度。
条理清晰;图片、文字的布局和隐喻不要让用户去猜。
9)界面的协调一致。
如手机界面按钮排放,左键肯定;右键否定;或按内容摆放。
10)同样功能用同样的图形。
11)色彩与内容。
整体软件不超过5个色系,尽量少用红色、绿色。
近似的颜色表示近似的意思。
界面规范
1.易用性原则
2.规范性原则
3.帮助设施原则
4.合理性原则
5.美观与协调性原则
6.菜单位置原则
7.独特性原则
8.快捷方式的组合原则
9.排错性考虑原则
10.多窗口的应用与系统资源原则
12.写出下列情况可能交互的情景。
a)使用网络版的戏院预定服务来预定戏票平使用信用卡进行支付。
b)在手机版本的软件商预订相同的戏票。
C)使用CASE工具为软件系统创建对象模型并且从模型自动生成代码。
答:
a)①顾客通过网络进入该戏院的网站,选择预订服务
②顾客选择所要购买的戏票
③顾客选择信用卡进行支付
④戏票费用被转移到戏院所用的网银上
⑤戏票预订成功
b)①顾客通过手机版本的软件进入戏院预订模块
②顾客选择要购买的戏票
③通过手机上另一个软件进行支付
④戏票费用被传送给戏院所用网银上
⑤戏票预订成功
c)①用户使用CASE工具,将对象模型进行建模
②使用CASE工具中的转换按钮进行自动生成代码
第七次作业
1.什么叫分布软件框架?
答:
分布软件框架是指封装网络通信细节,具有向顾客提供访问服务器的分布构件的接口和想服务器的分布构件提供一个运行环境的功能。
2.比较本章三种分布构件框架?
答:
对于三种分布构件框架,从编程上来看,使用EJB构件框架最简单,使用CORBA构件框架次之,使用DCOM框架再次之。
这是因为在EIB中,服务构件的注册、构件实例的创建、各种中间件服务等都是隐式提供的,开发人员可以不关注其实现细节;在CORBA中开发人员需要编写一个服务器端的主程序,来创建构件并注册它,而在DCOM中,除了在CORBA中的类似步骤外,还需要开发工厂类来专门负责对象的创建,需要使用Windows消息循环等机制来控制服务器端主程序的生命周期、还需要特别考虑主程序何时退出等等,需要程序员了解更多的DCOM实现细节。
这三种分布式构件都实现了对分布式构件的远程透明访问,并能够提供一些关键服务,从而为基于构件的分布式系统开发提供了一组高效、便捷的软件基础设施。
3.在EJB中有Stub类与Skeleton类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 体系结构 作业