面向对象的软件分析设计过程备忘

面向对象的软件分析设计过程备忘

  一、业务分析与需求收集

  1、重点梳理主业务流程,逐步完善分支流程。整理和发现业务流程中的涉众以及他们的业务目标和系统目标,显式目标以及隐式目标;

  2、整理涉众们在系统中所承担的角色以及各自的职责;

  3、在流程的运转过程中,发现和查找业务实体、他们之间的关系以及关键实体的生命周期(由谁在什么场景下创建、中间状态的变化以致最后的消亡);

  4、在流程的运转过程中,有哪些业务规则以及各种隐式的规则;

  5、不断的提问和验证流程的正确性和完整性(即使是边界以外的流程也不要放过,最少要做到心中有数)。是否有遗漏的涉众?是否有遗漏的职责或者行为?是否有遗漏的实体?是否有遗漏或者未被发现的实体关系?实体的生命周期是否完整?收集的需求或者信息能否支撑整个流程的运转,需求与需求是否有相互矛盾之处?是否有履行同样职责的人或者物(需要合并或者抽象)?多退少补!

  6、划分业务边界与系统边界,哪些是需要由系统来完成的职责,哪些是由别的系统或者人工完成的职责。

  7、可借助UML的组件图或者时序图、活动图、状态图来完成High Level层面的流程整理和业务建模。

  二、概要设计(用例驱动功能需求,认真对待非功能性需求)

  1、整理系统用例以及他们的参与者与系统边界。系统用例与服务最为密切,通常会演变为最后的服务接口。可借助UML用例图来完成用例建模。

  用例的特征:

  用例具有相对独立性;用例的执行结果对于参与者来说是可观测的和有意义的;用例必须由一个参与者发起的;用例必然是以动宾短语的形式出现的;用例是一个需求单元、分析单元、设计单元、开发单元、测试单元甚至是一个部署单元。

  用例的粒度:

  在概念建模阶段:粒度以能描述一个完整的事件流为宜;

  在系统建模阶段:粒度以能描述操作者与计算机的一次完整交互为宜;

  用例不是功能,用例是参与者对系统的期望以及目标,功能则是达成这个目标的步骤而已。

  2、用活动图或者时序图描绘重点用例及其场景。

  设计目标:为了完成该用例,需要由哪些角色介入协作完成,他们各自的职责是什么?只关注做什么,当前阶段不需要关注怎么做(不同阶段不同视图所关注的问题是不一样的。不分阶段不分视图的天马行空式的混沌思维,不是科学的分析方法,只会把问题复杂化)。

  3、完成当前用例有哪些规则,以及需要建立哪些实体,之后需要明确实体与实体之间的关系(关联?聚合?一对一?一对多?)。

  4、只需要针对核心和关键的用例建模,循环迭代。

  5、划分高层职责、确立彼此之间的交互方式及其主要交互数据。

三、详细设计(在概要设计的基础上演进与精化,只需要针对核心和关键的用例建模)

  1、根据之前的用例设计,定义服务接口并确定接口参数与返回值。

  2、根据概要设计过程中的活动图和时序图,将完成相应职责的角色或者对象设计为相应职责的类或者接口,并将关键步骤定义为该类或接口的方法,并确定方法参数与返回值,可借助UML类图来完成接口、类的建模。

  3、分析模型的变化点,对于清晰明确的变化点,建立抽象模型以适应变化并设计已知实现。对于相对模糊不清的变化点,建立抽象模型,隔离变化,将问题集中到一个局部的点,可在之后变化点明朗化之后重构(只影响某个局部的点)。概要设计阶段我们思考“做什么?”,当前阶段我们需要思考“怎么做?”,或者是技术选型,或者是架构模式,需要做出决策。

  4、认真思考类或者接口中的每一个属性、方法以及方法参数。精炼、精炼、再精炼!

  取一个好名字;

  方法的设计应当具备原子性与职责单一性,方法参数列表也应当尽量精炼,越是简单的方法越容易被组合与重用。

  只暴露需要暴露的服务与接口方法,不多暴露一个不需要暴露的服务与接口方法。没暴露的方法可以随意重构与扩展,方法一旦暴露出去,就需要一直维护并保持其兼容性。

  5、不要考虑实体的储存形式,我们需要思考的是设计一个类,该类当中应该有哪些属性与方法,以及每个属性的适用场景与业务含义。

  任何形式的数据都应该能转换为OO设计中的类对象。可存储可配置的场景也应该可以通过API来实现,JAVA是程序语言,任何形式的数据表现形式,最后还是通过相应的类及其方法调用来完成相应的职责。

  6、只需要针对核心和关键的用例建模,循环迭代。

  7、划分高层职责、确立彼此之间的交互方式,建立高层接口以及通讯方式,确定通讯协议以及报文格式。

  注意:

  A、实体建模时,需要认真思考实体的每一个属性,明确其使用场景与业务含义。同一个人在不同的场景下可能扮演不同的角色,角色的不同决定了其属性也不同。Jack在家是父亲的角色,他同时也是一个教师,因此“课程”是教师的属性而不是父亲的属性,即使他们都属于Jack这个维度。请参考DCI的设计理论。

  B、实体建模时,即使需求方没有提出有关需求,但仍需要维护某些关系。实体与实体关系是在某个业务场景下客观存在的,如果因为需求方暂时没有提出相关需求,而放弃或者丢失客观存在的实体关系,一旦今后提出相关需求,可能会带来相当大的重构代价。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-22 02:10:58

面向对象的软件分析设计过程备忘的相关文章

分享下手机软件界面设计浅析_其它相关

随着科技的不断发展,手机的功能俞之强大,基于手机系统的相关软件应运而生,手机设计的人性化已不仅仅局限于手机硬件的外观,手机的软件系统已成为用户直接操作和应用的主体,它应以美观实用.操作便捷为用户所青睐.用户界面设计的规范性显得尤为重要. 一.界面效果的整体性.一致性 手机软件运行于手机操作系统的软件环境,界面的设计应该是基于这个应用平台的整体风格,这样有利于产品外观的整合. 1.界面的色彩及风格与系统界面统一 软件界面的总体色彩应该接近和类似系统界面的总体色调,例如:系统色调以蓝色为主,我们的软

《系统分析与设计方法及实践》一第2章 软件分析与设计过程及其模型

随着软件工程的发展,人们开始关注软件分析与设计的核心问题--软件开发过程.软件过程是指把用户需要转变成软件产品所需的所有活动.有效的软件过程可以提高组织的生产能力.为了研究软件开发项目中各种活动的一般规律,以及对软件开发过程进行定量度量和优化,人们提出了所谓的软件过程模型,也叫做软件的生命周期模型.软件过程模型是一种开发策略,该策略对软件工程的各个阶段提供了一套范型,使工程的进展达到预期的目的.

《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程

2.4 软件设计过程 挖掘管理价值:企业软件项目管理实战 软件设计是根据需求的内容,运用计算机理论.技术和工具将其合理地.有机地.具体地转化为功能,并演示其实现的方法.过程和结果.设计人员在理解了用户的需求之后,首先在自己的脑海中会有一个大致的概念和思路,然后考虑如何去实现这些功能,当然这需要一定的专业知识和实践经验.这里就不阐述软件或数据库设计的理论知识了,而重点介绍如何将设计人员脑子里对软件的设计和理解反映到文字.图形和流程上,使得用户可以了解计算机是如何实现他们的需求的.我们用图 2-9

《系统分析与设计方法及实践》一1.2 什么是软件分析与设计

1.2 什么是软件分析与设计 软件分析与设计是软件工程的重要组成部分,其定义目前还没有统一的标准.早期,软件工程专家B.W. Boehm将软件工程定义为:设计并构造计算机程序,以及为开发.运行和维护这些程序所必需的相关文件资料.Fritz Bauer如下定义软件工程:为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则.IEEE软件工程标准定义软件工程为:开发.运行.维护和修复软件的系统方法.尽管软件工程的具体定义不尽相同,且又有一些学者提出了更完善的定义,但都是

Anders Hejlsberg 谈C#设计过程

过程|设计 一 1.C#设计过程 ? Bruce Eckel:我听说C#是一个工程师小组在一个屋子里设计出来的? Anders Hejlsberg:是的.4年来,我们一直呆在这个屋子里.现在,每周一.三.五,我们仍然在这里会面. Bruce Eckel:我很想了解一些关于C#设计过程的情况.我直接或间接参与过几种语言的设计工作,如Python.在Python设计过程中,Guido van Rossum被我们戏称为"仁慈的独裁者". Anders Hejlsberg:哦,Guido va

浅谈软件人机界面设计

设计 众所周知,软件是一种工具,而软件与人的信息交换是通过界面来进行的,所以界面的易用性和美观性就变得非常重要了,这就需要好好利用人机界面设计的原则及设计的方法.一般来说,完成软件人机界面设计需考虑以下问题: ----1)界面总体布局设计,即如何使界面的布局变得更加合理.例如,我们应该把功能相近的按钮放在一起,并在样式上与其他功能的按钮相区别,这样用户使用起来将会更加方便.  ----2)操作流程设计,即通过设计工作流程,而使用户的工作量减小,工作效率提高.例如:我们如何才能让用户用最少的步骤,

图标设计过程中需要注意的问题

文章描述:那么怎么样才能做出一套好的图标?在图标设计过程中需要注意哪些问题? 图标在生活中运用是显而可见的.例如:男女厕所标志和各种交通标志等.在计算机系统或软件方面的应用也是很广泛.例如:程序标识.数据标识.命令选择.模式信号或切换开关.状态指示等.下面的例子更形象的说明这个问题. (图片来源:九铭)外国人A与中国人B,两人在语言上存在差异对文字的认识是不同的,用图标来表示,会缩短语言描述的距离.所以图标更具有快捷传达信息.便于记忆的特性.那么图标被广泛使用的时候,什么样的图标才是好图标呢?好

设计案例分享:腾讯手机令牌的设计过程

文章描述:QQ安全我做主-手机令牌2.0设计分享. 一款小小的工具软件,如何赢得  iPhone app store4星级+评价:Android 电子市场4.5星评价,让我与您一起分享手机令牌的设计过程 什么是手机令牌? 手机令牌是通过6位动态密码保护QQ帐号.Q币和游戏装备等虚拟财产安全的手机软件.手机令牌每30S更换一次动态密码,用户在敏感操作的时候验证动态密码,以此保障自己的帐号安全.简单的说:手机令牌是一个动态密码的生成软件.是我们专为保护用户QQ帐号安全设计的手机APP. 设计工作主要

用户体验设计:Nearby Tweets改版的完整设计过程

UX Case Study: Designing a user-focused web appBrian Cray版权所有作者:Brian Cray译者:UCD翻译小组,波希米亚原文地址: http://briancray.com/2010/01/26/ux-case-study-designing-user-focused-web-app/ 这篇文章记录了Nearby Tweets改版的完整设计过程.Web开发者和商家期望借此获取些灵感.用户则更有兴趣找寻这些设计中所蕴藏的东西.当然,我希望能