OOA的主要优点
(1)加强了对问题域和系统责任的理解;
(2)改进与分析有关的各类人员之间的交流;
(3)对需求的变化具有较强的适应性;
(4)支持软件复用;
(5)贯穿软件生命周期全过程的一致性;
(6)实用性;
(7)有利于用户参与。
OOA的主要原则。
(1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。
抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。
抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。
过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。
数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。
(2)封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。
(3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。
在OOA中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和服务,一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类中已定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和服务。继承原则的好处是:使系统模型比较简练也比较清晰。
(4)分类:就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。
(5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。
(6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些联系。
(7)消息通信:这一原则要求对象之间只能通过消息进行通信,而不允许在对象之外直接地存取对象内部的属性。通过消息进行通信是由于封装原则而引起的。在OOA中要求用消息连接表示出对象之间的动态联系。
(8)粒度控制:一般来讲,人在面对一个复杂的问题域时,不可能在同一时刻既能纵观全局,又能洞察秋毫。因此需要控制自己的视野:考虑全局时,注意其大的组成部分,暂时不详察每一部分的具体的细节;考虑某部分的细节时则暂时撇开其余的部分。这就是粒度控制原则。
(9)行为分析:现实世界中事物的行为是复杂的。由大量的事物所构成的问题域中各种行为往往相互依赖、相互交织。
状态图链接:https://www.processon.com/diagraming/5b0e072ae4b009aef58fa653
B、功能分析四象限
链接:https://www.processon.com/view/link/5b0e10e2e4b0e5f3aa6db8d7
C、团队项目WBS
D、用户故事
我是一位妈妈,我的孩子今年在上小学五年级。我像往常一样检查孩子的作业。我跟孩子每次都需要花费好长时间才能勉强完成作业。我特别渴望解决我们当下的问题。终于我遇到了它。小学生课后习题答案查询app,是它拯救了我,也挽回了我做家长的威严。我先注册登录了。发现有好几个查询方式,我一一试了便。第一个查询方式是拍照查询,它的操作特别简单方便,只需把所要查询的题目拍下来搜索即可。第二个查询方式是精准查询,它的界面有四个选项构成的分别是孩子所读年级的选择,教材的选择,章节的选择,题目的选择。通过它所得出的答案是特别精准的,没有任何差错的。第三个查询方式是扫码查询,它的特别之处就是把所用教材背后的条形码,放入扫码区就会一下子可以查询到整本书上所有的课后习题。这三种查询方式中我大部分所用的是拍照查询,选择这个的主要原因是只需会拍照就行,对我们这些文化水平较低的家长而言没有什么要求。自从用了这个app之后我省出了许多空闲时间,跟孩子的感情也更深了。维护家长的威严,加深与孩子之间感情的最好选择就是它——小学生课后习题查询app
E、团队成员预估任务时间
设计阶段 |
两周 |
系统实现 |
两周 |
APP运行与维护 |
一周 |
F、制作看板图和燃尽图
初始的看板图和燃尽图为下:
在这个过程中,我们团队对已经完成的任务和以后要完成的任务进行了大概的划分,燃尽图如下:
以下这一版是对整个项目做了细化以后完整的WBS做出来的成果:
其中看板图标签绿色代表家长的功能,紫色代表教师的功能,灰色代表管理员的功能
任务二
设计团队项目系统总体结构和数据库逻辑结构
系统E-R图链接:https://www.processon.com/diagraming/5b0df204e4b037160973e070
任务三
软件系统概要设计说明书链接:https://github.com/FBGfbg/xuqiu
任务四
团队成员具体分工及比重:
团队成员 |
任务 |
比重 |
马玉婷 |
任务1.a 完善《需求规格说明书》 任务1.b 功能分析的四个象限 任务1.e制作任务时间表 任务1.f 创建看板图和燃尽图 任务3 撰写团队项目软件系统设计说明书 任务4 编辑博客 |
35.41% |
马美玲 |
任务1.a 完善《需求规格说明书》 任务1.c 编制团队项目的WBS 任务2 设计系统总体结构、制作E-R图 任务3 撰写团队项目软件系统设计说明书 |
35.41% |
益西卓嘎 |
任务1.d 以讲故事的方式介绍项目中的功能 任务1.g 在博文中编辑改进内容协助调研 |
29.18% |
系统设计是根据系统分析的结果,运用系统科学的思想和方法,设计出能最大限度满足所要求的目标 (或目的) 的新系统的过程。是根据需求对目标(可以是软件系统、也可能是硬件设备等)进行建模,使之满足需求中的要求。
需求分析关注系统“做什么”,设计关注“如何做”,其实这是一个很模糊的说法。无论是在结构化方法中还是在面向对象的方法中,需求分析的结果既包括了“做什么”也部分包括了“如何做”,只不过描述“如何做”时抽象的层次比较高。客户在提出系统需求时,可能对“如何做”提出一些约束条件,开发人员进行需求分析后,进行系统设计。系统设计这个阶段的任务是设计软件系统的模块层次结构,设计数据库的结构以及设计模块的控制流程,其目的是明确软件系统"如何做"。这个阶段又分两个步骤:概要设计和详细设计。根据系统需求分析阶段所确定的新系统的逻辑模型、功能要求,在用户提供的环境条件下,设计出一个能在计算机网络环境上实施的方案,即建立新系统的物理模型。因此,需求分析的结果是系统设计的依据。
系统总体设计即对全局问题的设计,也就是设计系统总的处理方案,又称概要设计。
制造系统工程总体设计包括:市场调研,技术规格书编写,初步设计,详细设计,产品制造等。
软件工程总体设计包括:计算机配置设计、系统模块结构设计、数据库和文件设计、代码设计以及系统可靠性与内部控制设计等内容。软件功能分解属于下列软件开发中的总体设计阶段,系统设计阶段的结果是系统设计说明书,它主要由模块结构图、模块说明书和其它详细设计的内容组成。
1、系统设计的主要任务是进行总体设计和详细设计。
(1)总体设计
总 体设计包括系统模块结构设计和计算机物理系统的配置方案设计。
<1>系统模块结构设计 。系统模块结构设计的任务是划分子系统,然后确定子系统的模块结构,并画出模块结构图。
<2>计算机物理系统配置方案设计 。在进行总体设计时,还要进行计算机物理系统具体配置方案的设计,要解决计算机软硬件系统的配置、通信网络系统的配置、机房设备的配置等问题。计算机物理系统具体配置方案要经过用户单位和领导部门的同意才可进行实施。
(2)详细设计
在总体设计基础上,第二步进行的是详细设计,主要有处理过程设计以确定每个模块内部的详细执行过程,包括局部数据组织、控制流、每一步的具体加工要求等,一般来说,处理过程模块详细设计的难度已不太大,关键是用一种合适的方式来描述每个模块的执行过程,常用的有流程图、问题分析图、IPO图和过程设计语言等;除了处理过程设计,还有代码设计、界面设计、数据库设计、输入输出设计等。
2、系统设计原则
(1)简单性:在达到预定的目标、具备所需要的功能前提下,系统应尽量简单,这样可减少处理费用,提高系统效益,便于实现和管理
(2)灵活性和适应性:以便适应外界的环境变化。可变性是现代化企业的特点之一,是指其对外界环境的变化的适应能力。系统的可变性是指允许系统被修改和维护的难易程度。一个可变性好的系统,各个部分独立性强,容易进行变动,从而可提高系统的性能,不断满足对系统目标的变化要求。此外,如果一个信息系统的可变性强可以适应其它类似企业组织的需要,无疑地,这将比从新开发一个新系统成本要低得多。
(3)一致性和完整性:一致性是指系统中信息编码、采集、信息通信要具备一致性设计规范应标准;完整性是指系统作为一个统一的整体而存在,系统功能应尽量完整。
(4)可靠性:系统的可靠性指系统硬件和软件在运行过程中抵抗异常情况的干扰及保证系统正常工作的能力。衡量系统可靠性的指标是平均故障间隔时间和平均维护时间。前者指平均的前后两次发生故障的时间,反映了系统安全运行时间,后者指故障后平均每次所用的修复时间,反映系统可维护性的好坏。只有可靠的系统,才能保证系统的质量并得到用户的信任,否则就是没有使用价值。
提高系统可靠性的途径主要有:
1)取可靠性较高的主机和外部设备;
2)硬件结构的冗余设计,即在高可靠性的应用场合,应采取双机或双工的结构方案;
3)对故障的检测处理和系统安全方面的措施,如对输入数据进行校检,建立运行记录和监督跟踪,规定用户的文件使用级别,对重要文件的拷贝等。
(5)经济性:系统的经济性是指系统的收益应大于系统支出的总费用。系统支出费用包括系统开发所需投资的费用与系统运行维护费用之和;系统收益除有货币指标外,还有非货币指标。 系统应该给用户带来相应的经济效益。系统的投资和经营费用应当得到补偿。需要指出的是,这种补偿有时是间接的或不能定量计算的。特别是对于管理信息系统,它的效益当中,有很大一部分效益不能以货币来衡量。
3、系统设计的目的
系统设计的目的是在保证实现逻辑模型功能的基础上,尽可能提高目标系统的简单性、可变性、一致性、完整性、可靠性、经济性、系统的运行效率和安全性,将分析阶段所获得的系统逻辑模型,转换成一个具体的计算机实现方案的物理模型,包括计算机物理系统配置方案报告和一份系统设计说明书。
三、实验心得
经过了一段时间的磨合,我们团队的凝聚力有了很大的提升,大家从刚开始的不明白自己的定位到现在能够迅速分工找到合适自己的任务并保质保量的完成,我们真的成长了很多,也在这个过程中进一步的明白了团队凝聚力和小组合作的优势,虽然跌跌撞撞,但我们在茁长成长。
除了团队的成长之外,经过几次有目的有方向的实验任务,我们队对软件工程这门课的认识又加深了许多,同时也对学好这门有了更大的信心,相信经过系统的学习,我们团队会更加出色。