软件架构设计(二)——软件架构设计过程

标签: 软件架构 设计 mdash | 发表时间:2012-07-04 22:28 | 作者:迷途书童
出处:http://www.blogjava.net/

三、架构设计的过程

3.1 确定涉众代表

      一般来讲,涉众包括客户(资方)代表、承接方(劳方)代表、用户代表。

3.2 确定系统边界

      对于要明确实现某种标准的软件系统,通常确定边界非常容易,直接按标准圈定的scope分析即可,比如像SIPServlet容器,是要求遵从JSR168规范的,那么软件系统的Scope就是JSR168规定的Scope,但是也有例外,比如客户或者劳方明确指定要复用一个现有的实现了部分功能的系统或组件,那么Scope就不同了。对于没有标准的软件系统,就需要分别访谈客户代表、承接方代表确定系统边界。为什么要访谈承接方代表呢?因为承接方代表往往是劳方领导,领导肩负企业战略达成的使命,很有可能对系统提出比客户更多的要求。举个例子,某客户需要一个SIP通信协议栈,以实现三方通话的业务,但是劳方领导认为,后续ICT融合是趋势,我们构建的系统要支持ICT融合应用部署和运行,支持业务标准JSR168规范。

3.3 软件需求收集

      软件需求可分为二类:

      功能需求(即业务用例):描述Actor(用户或系统)可基于软件系统做什么事,要符合什么业务规则;

      非功能性需求又可分为两类:

      质量属性:质量属性指软件系统的品质,可分为运行期质量属性与开发期质量属性。

        运行期质量属性包括

      (1)性能:性能是指软件系统及时提供相应服务的能力。具体而言,性能包括速度、吞吐量和持续高速性这三方面的要求。
  (2)安全性:指软件系统同时兼顾向合法用户提供服务,又阻止非授权使用功能的能力。
  (3)易用性:指软件系统易于使用的程度。
  (4)可用性:可用性与易用性不相同。可用性指系统长时间无故障运行的能力。
  (5)可伸缩性:指当用户增加时,软件系统维持高服务质量的能力。
  (6)互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
  (7)可靠性:软件系统在一定时间内无故障运行的能力。
  (8)健壮性:也称容错性。是指软件系统在异常情况仍能够正常运行的能力。

       开发期质量属性包括:

   (1)易理解性:是指系统设计能被开发人员理解的难易程度。
  (2)可扩展性:为适应新需求或者需求变化,为软件增加功能的能力。有些时候,称之为灵活性。
  (3)可重用性:重用软件系统或其中一部分的能力的难易程度。
  (4)可测试性:对软件测试以证明其满足需求规约的难易程度。在实际的项目中,主要指进行单元测试等难易程度。
  (5)可维护性:修改Bug,增加功能,提高质量属性。
  (6)可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。

      约束:规定开发软件系统时必须遵循的限制条件,如要基于什么操作系统,要基于什么开发语言等等。

      对于功能需求,可找系统的直接使用用户代表,对其进行访谈,收集其要基于系统做的事情,可按照标准的用例模板,在访谈的过程中引导用户代表。之后,绘制业务用例视图,并针对每个业务用例,使用标准的用例模板将功能需求编档,通常叫用例规约。

      对于非功能性需求,可找软件系统的涉众,依据下面的模板,引导涉众,收集其对相应质量属性的要求:

image image image

总结:本阶段需要输出业务用例视图,业务用例规约,非功能性需求。

待续。。。



迷途书童 2012-07-04 22:28 发表评论

相关 [软件架构 设计 mdash] 推荐:

软件架构设计(二)——软件架构设计过程

- - BlogJava-首页技术区
      一般来讲,涉众包括客户(资方)代表、承接方(劳方)代表、用户代表.       对于要明确实现某种标准的软件系统,通常确定边界非常容易,直接按标准圈定的scope分析即可,比如像SIPServlet容器,是要求遵从JSR168规范的,那么软件系统的Scope就是JSR168规定的Scope,但是也有例外,比如客户或者劳方明确指定要复用一个现有的实现了部分功能的系统或组件,那么Scope就不同了.

软件架构设计

- - 企业架构 - ITeye博客
软件架构设计尚没有万灵的方法论支持,还是个非常新兴的行业,给出个人理解的行业软件架构设计过程,受个人水平有限,仅供参考:. 1.业务分析:针对目标行业的业务战略、蓝图、业务功能及流程进行分析,提出其中部分功能可以使用信息化进行处理,通过分析可以得出信息化要解决的问题. 2.解决方案设计:根据业务战略,形成行业信息化解决方案.

软件设计之UML—UML中的六大关系

- - BlogJava-首页技术区
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency). 1.1、 继承关系—泛化(Generalization). 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中用extends关键字.

关于深度学习——Deep Learning

- - 互联网旁观者
转载自: http://blog.csdn.net/abcjennifer/article/details/7826917. Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,最近研究了机器学习中一些深度学习的相关知识,本文给出一些很有用的资料和心得.

论基于DSSA的软件架构设计与应用

- - CSDN博客推荐文章
去年三月份,我所在的公司启动国网电力用户用电信息采集系统项目,我被任命为项目负责人. 国网电力用户用电信息采集系统是国家电网公司坚强智能电网建设的一部分. 由于公司之前为南网(主要是广东省)开发过类似用电信息采集系统,且公司准备在电力行业做强做大,我提出了采用DSSA技术来研发国网用电信息采集系统,得到公司领导层的一致赞同.

软件架构设计分层模型和构图思考(201122)

- - 人月神话的BLOG
今天谈下架构设计中的分层思维和分层模型以及基于分层思维下的架构构图逻辑. 对于架构思维本身仍然是类似系统思维,结构化思维,编程思维等诸多思维模式的一个合集. 由于架构的核心作用是在业务现实世界和抽象的IT实现之间建立起一道桥梁,因此架构思维最核心的就是要理解到业务驱动技术,技术为最终的业务服务. 要真正通过架构设计来完成业务和技术,需求和实现,软件和硬件,静态和动态,成本和收益等多方面的平衡.

企业架构思想在软件架构设计中的引入

- - 人月神话的BLOG
很多时候我们在谈企业架构的时候都是正对跨流程,跨业务和跨应用系统的总体规划和分析,企业架构核心好处就是真正体现业务驱动IT,将业务和IT能够真正的匹配起来思考整个企业层面的架构问题. 而很多时候我们谈软件架构的时候仅从软件实现层面来考虑问题,针对一个业务系统的开发,我们有业务建模和软件架构,但是这两个却进行了分离而缺少了系统性的思考,所以原来我们喜欢用系统分析师这个词来综合业务分析师和软件架构师两个岗位的工作.

软件架构

- - 研发管理 - ITeye博客
    对于外包业务类型的项目,软件架构设计的目的与产品类型的项目有所不同,在这里主要讨论外包类型项目的软件架构设计目的.     1、为大规模开发提供基础和规范,并提供可重用的资产,软件系统的大规模开发,必须要有一定的基础和遵循一定的规范,这既是软件工程本身的要求,也是客户的要求. 架构设计的过程中可以将一些公共部分抽象提取出来,形成公共类和工具类,以达到重用的目的.

数据驱动销售——个性化推荐引擎

- - 互联网旁观者
在当前这个信息量飞速增长的时代,一个企业,尤其是电子商务企业的成功已经越来越多地与其海量数据处理能力相关联. 高效、迅速地从海量数据中挖掘出潜在价值并转化为决策依据的能力,将成为企业的核心竞争力. 数据的重要性毋庸置疑,但随着数据的产生速度越来越快,数据量越来越大,数据处理技术的挑战自然也越来越大.

社交搜索——百度知道,不如你我知道

- - 微博之博
本篇文章作者王德超,程序员一枚,创业在路上,微博@哀木涕啊. 当你想订购一台吐司机的时候,你会去哪儿寻找参考信息. 我想大概有许多人像我一样,习惯了使用Google 、百度或者Bing. 但他们真的会给我们最需要的答案吗. 作为一名使用微博3年以上的老围脖,突然发现自己在搜索答案时出现了另一个习惯.