OOA&UML考查要点(JUST/2022)

第一部分:简答题(30分,6小题)

1)KISS law,2/8 law,2±7 law,separation of concerns...

KISS law:Keep It Simple and Stupid,意即“简单就是美”。

2/8 law:for many events, roughly 80% of the efffects come from 20% of the causes. 

对于大多数事物,最重要的只占20%,其余80%尽管是多数,却是次要的。

2±7 law:an individual can comprehend only about 7, plus or minus 2, chunk information at one time.

Separation of Concerns(关注点分离原则):

不同领域的功能,应该由不同的代码和最小重迭的模块组成。

是日常生活和生产中广泛使用的解决复杂问题的一种系统思维方法。大体思路是:先将复杂问题做合理的分解,再分别仔细研究问题的不同侧面(关注点),最后综合各方面的结果,合成整体的解决方案。

是处理复杂性的一个原则。由于关注点混杂在一起会导致复杂性大大增加,所以能够把不同的关注点分离开来,分别处理就是处理复杂性的一个原则,一种方法。  

参考:优秀程序设计的Kiss原则(keep it simple,stupid) - 阆苑小书童 - 博客园


2)软件的作用

soul of comaputer-besed system.

is indispensable in almost each domain.

在我们生活的方方面面,在交易,文化,日常活动中都扮演着重要作用。


3)软件的复杂性

体现在:

1、系统过于复杂,仅靠少量开发人员难以理解。

2、通常一个bug修好了又会引发别的bug。

如何克服:

Abstraction (Modeling)抽象化建模
Decompositian 分解(对问题进行分解,将问题"各个击破",再分别解决各个子问题)
Hierarchy 分级分层


4)软件危机

定义:

落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

产生的原因:

complexity is inherent characteristic. 软件越来越复杂

intangible 难以理解的

change 

no effective technlogy and management approach. 缺少高效的工具与管理方法

如何克服:

SE(软件工程)

5)软件工程及其三要素

What is software?

Method, tool, procedure and paradigm
软件是一系列按照特定顺序组织的计算机数据和指令的集合。

什么是软件工程

指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件。

三要素:

Software Process
Methodology 方法论
Tool: CASE(computer-aided software engineering)广义地说,CASE是辅助软件开发的任何汁算机技术,其中主要包含两个含义:一是在软件开发和维护过程中提供计算机辅助支持;二是在软件开发和维护过程中引入工程化方法。

6)软件开发过程

  • 起始阶段(Inception)-- 有一个好的想法:具体构想出终于产品的设想和它的业务案例,确定项目的范围 。

  • 细化阶段(Elaboration)--计划必要的活动和所需资源,具体确定功能并设计构架 。

  • 构建阶段(Construction)-- 构建产品, 发展最初的设想、构架和计划,直到一个能够交付给用户的产品(完毕后的设想)完毕。

  • 移交阶段(Transition)-- 将产品移交用户使用,包含:制造、交付、培训、支持、维护,直到用户惬意。

7)面向对象与面向过程软件开发方法

  

 


8)迭代软件开发过程与瀑布软件开发过程

迭代软件​​​​​​​开发流程:

        迭代式开发也被称作迭代增量式开发或迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。

什么是迭代式开发?

1、每次只设计和实现这个产品的一部分

2、逐步逐步完成的方法叫迭代开发

3、每次设计和实现一个阶段叫做一个迭代

        在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。

迭代式开发的优点:

  • 降低风险
  • 得到早期用户反馈
  • 持续的测试和集成
  • 使用变更
  • 提高复用性

迭代模型的缺点:

  • 它不适用于较小的项目。
  • 可能需要更多资源。
  • 由于不完善的要求, 可以一次又一次地更改设计。
  • 需求变更可能会导致预算超支。
  • 由于需求变更, 未确认项目完成日期。


瀑布软件开发流程:

在这里插入图片描述

        瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。 

优点:

  • 需求非常明确
  • 工作量十分可控
  • 对质量要求比较低
  • 业务建模也比较简单
  • 功能构成较少

        这种开发模式如果范围控制和风险控制做的比较好的话,就真的如瀑布一般,‘飞流直下三千尺’,迅速完成客户期望,部署运行,一般都是在外包公司常见

主要的问题:

  • 开发过程一般不能逆转,否则代价太大;
  • 实际的项目开发很难严格按该模型进行;
  • 客户往往很难清楚地给出所有的需求,而该模型却要求如此。
  • 软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。 

9)开发软件需要的基本技能

分析,设计,编码,测试,维护

参考:13 Technical Skills You Should Have As A Developer - GeeksforGeeks


10)业务建模的目的和过程

业务建模目的:

to get requirements model(为了得到待引进软件系统的需求)
examine orginization to get correct requirements


业务建模过程:

determine organization and the boss

figure out the visions(愿景)

examine organization to find problems according to visions

或者:

明确我们为谁服务(选定愿景、要改进的组织)

要改进的组织是什么现状(业务用例图、现状业务序列图)

我们如何改进(改进业务序列图)


11)需求的重要性与困难

  • 用户与开发人员很难进行交流
  • 用户的需求是动态变化的
  • 系统变更的代价是非线性增长

12)需求模型

参考:什么是需求建模|概述_一起学开源的博客-CSDN博客_需求建模

13)分析模型

采用UML用例分析技术分析软件需求,建立软件系统的分析模型。

参考:软件工程:UML建模之分析模型和设计模型 - 豆丁网


14)软件设计

软件设计是把需求转化为软件系统的最重要的环节,一般会包含以下几大部分:体系结构设计、界面设计、数据结构和算法设计、数据库设计、接口设计、安全设计等。软件设计的优劣在根本上决定了软件系统的质量。

参考01:软件设计与分析方法 - Machainn - 博客园

参考02:软件设计规范 - 新元子 - 博客园

(注:下文中的“组织”即一般意义上的“业务”(business),因为潘JY曾说,“业务建模”这个名字其实取得不好,应该叫“组织建模”更恰当。)

15)业务用例与系统用例

业务用例:

指业务执行者(BA)希望通过和组织交互达到的,而且组织能提供的“价值”

代表“组织”的“本质价值”

不会因为某个人或电脑系统的存在或消失而改变

e.g.:银行---存款(椭圆一杠)

系统用例:

系统能够为执行者提供的、涉众可以接受的价值。

e.g.:ATM---取钱(椭圆)

16)业务工人与业务实体

业务工人(BW):

“组织”内的人

e.g.:银行---银行接待员

业务实体(BE):

“组织”中的“非人”智能系统

e.g.:银行--- ATM、营业系统

注:随着技术进步,业务工人也许会被业务实体替代。

17)主参与者与辅助参与者

主参与者(Primary Actor):Those that trigger the use case

辅助参与者(Secondary Actor):帮助PA实现用例 or 被动参与用例实现

18)系统执行者与业务执行者

业务执行者(Business Actor):

以某“组织”为研究对象,在“组织外”与组织交互的人或机构。

e.g.:某商业银行---储户、企业、人民银行

系统执行者:

在所研究的“系统外”,与该系统发生“功能性交互”的“其他系统”(人或非人)

怎么找:业务序列图上与所研究系统有实线相连的对象

二、三、阅读模型题和建模题(30分,3小题)(40分,4小题)

参考01:基于UML的需求分析和系统设计(完整案例和UML图形演示)_qq_31059985的博客-CSDN博客_基于uml的系统完整案例

参考02: 一文掌握14种UML图 - 云+社区 - 腾讯云

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值