答CSDN关于建模的系列问题

最近工作一直比较忙,很多想法没时间写下来,最近回复了CSDN杂志社的一系列相关的建模问题,顺便贴在这里,欢迎大家讨论。

以下是我对建模的一些看法

1 你怎么看待建模?

         作为一个程序员,可能每个人都经历过这样一个阶段,在需求分析完毕后,立刻开始建立数据模型,也就是把表结构设计出来,然后根据功能需求和表结构开始进行简单设计,大部分设计文档为WordExcel,然后就着手进行编码。很多经验比较丰富的程序员用这种方法也可以很快把系统开发出来,这种方法的基本思想是使用数据库来表示业务模型,那么是否就不需要建模了呢?我们深入考虑一下,就我们广泛使用的关系数据库来说,它是否能确切的描述业务模型呢,显然答案是否定的。一个简单的二维表只能描述相对单一的对象,对于语义丰富的对象来说,显然就勉为其难了。基于面向对象设计和CBDComponent Based Design)设计方法,基于软件的高内聚,松耦合原则,基于提高软件生产率和可维护性的考虑,目前软件建模已经是商业软件开发过程中不可或缺的一部分部分了。

         简单来说,建模就是使你能够逐层深入解决问题的办法,建模能够确认系统的功能需求并为业务系统建立模型,根据场景为系统提供相应的设计模式,根据需求划分出子系统。

         说到这里,我们就不能不提UML了,UMLUnified Modeling Language,统一建模语言)是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,同样,在网站设计或以网站为表现形式的各种网络应用项目中,UML也表现出强大的作用。UML能够描述系统的静态结构和动态行为:静态结构定义了系统中重要对象的属性和操作以及这些对象之间的相互关系;动态行为定义了对象的时间特性和对象为完成目标任务而相互进行通信的机制。UML不是一种程序设计语言,但我们可以用代码生成器将UML模型转换为多种程序设计语言代码,或使用反向生成器工具将程序源代码转换为UML模型。这就是OMG组织正在力推的MDA,除了UML之外,建模语言还新增加了XMIMOF,感兴趣的可以到相关的MDA网站查找它们的定义。

我们可以看的出,建模不是编码,利用同样的UML模型可以生成不同语言的框架代码,而且可以通过反向生成,在编写代码过程中及时更新UML模型,这对系统分析员和项目管理人员来说是梦寐以求的,也就是MDA要实现的。

建模必定会使软件开发走向成熟。

 

建模工具推荐使用Rational RoseTogether

 

2 公司的建模现状
    本公司作为一个面向全球Out Sourcing业务的软件外包公司,始终采用规模化和标准化的开发过程和建模方法。由于用友软件工程公司是CMM3级,目前正在全力推进CMM5的工作,所有CMM KPA(关键过程域)的实施能够保证从公司高层的组织模型就支持这样的开发过程。目前用友软件工程采用的软件开发过程是基于RUP开发方法,并结合用友十几年的软件开发经验建立的一整套符合自己的开发过程和开发标准,对需求,分析与设计、实现、测试和实施都做了标准的过程定义,同时提供相关的模板、模式、样例、规范、检查单等,并从组织级加以保证,软件建模是目前用友软件开发过程中的核心过程。

3 你感觉软件建模的趋势?

         同时我们提供了可复用的应用软件开发平台,这个平台提供了一整套基于J2EE.NET架构的相关应用,基于这个平台可以迅速开发出相关业务程序。

         目前我们需要持续改进的方面就是提高项目开发过程中的可复用度,提升开发人员素质,进行持续技术改进。针对这些我们都会成立相关的Pat小组,根据CMM的标准KPA对我们的过程进行改进。

 

         目前EclipseEMFEclipse Modeling FrameWork)、RationalXDEBorlandTogether都是以Modeling为核心的技术架构,都对MDA进行了不同程度的实现,XDETogether现在已经是商业软件,估计不久的将来EMF就会集成到IBM WSAD的某个版本中。还有两款MDA工具,分别是OptiamlJArcStyler,据说不错,笔者还没有试用过。

         就目前趋势来看,随着大厂商对MDA支持力度的加大和OMG组织的影响力,笔者觉得,软件建模未来的趋势就是MDA,驱动模型架构,大家应该记住这个名字。

转载于:https://www.cnblogs.com/chijianqiang/archive/2004/05/14/2041611.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqlserver操作geography方法

--总表面积SELECT geography::STGeomFromText(POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)), 4326).STArea() --二进制(WKB)表示形式SELECT geography::STGeomFromText(LINESTRING( -122.360 47.65…

ClassPathResource使用简介

ClassPathResource使用简介 使用Spring的ClassPathResource来读取maven项目resource下的文件 一般来说,我们项目的配置文件及静态资源都会放置在resources目录下。有时我们在项目中使用到resources目录下的文件,这时我们可以使用Spring下的Resouce接口来…

用matlab画阻尼振动包络线,matlab阻尼振动模拟.doc

matlab阻尼振动模拟matlab阻尼振动模拟班级 应数0801 姓名 翟伟西 学号 u座机电话号码5实验目的通过这个实验能更好的了解学习matlab程序语言,了解matlab在仿真方面的应用实验原理通过把做阻尼振动的小球的运动作投影,更好的观察在阻尼振动过程中&#x…

编写高性能的托管应用程序:入门

编写高性能的托管应用程序:入门 发布日期: 6/15/2004 | 更新日期: 6/15/2004 Gregor Noriskin Microsoft CLR 性能小组 适用于:Microsoft .NET 框架 摘要:从性能的角度来学习 .NET 框架公共语言运行库。学习如何找出托…

[No0000E6]C# 判断与循环

判断语句 语句描述if 语句一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。if...else 语句一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。嵌套 if 语句您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。switc…

关于Class.getResource和ClassLoader.getResource的路径问题

Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题。 Class.getResource(String path) path不以’/开头时,默认是从此类所在的包下取资源; path 以’/开头时&…

php ci post 请求,ci检测是ajax还是页面post提交数据的方法

ci检测是ajax还是页面post提交数据的方法PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。以下是小编为大家搜索整理的ci检测是ajax还是页面post提交数据的方法&#xff…

db2系统表相应功能

SYSIBM: 基本系统编目,不建议直接访问SYSCAT: 默认授权给Public组.只读编目视图,一般通过这个来获取编目信息SYSSTAT: 可更新编目视图,会影响优化器的优化策略SYSFUN: 用户定义函数SYSPROC: 存放一组系统的存储过程如果你需要知道具体的每个编目表所产生的作用,可以去info cent…

怎么博客圆的文章越来越杂?

最近发现怎么博客圆的文章越来越杂?PHP,JAVA等非.NET技术也来拉好象博客圆现在不是一个纯.NET社区拉管理员是不是该采取一些手段来防止这种现象的扩大

idea 快捷键获取类的全限定类名(包名+类名)

什么是全限定类名:就是 包名类名 1:选中一个类名,然后右键 Copy Reference 2:点击paste without Formatting 3:查看结果

java additem 错,Java错误:IllegalArgumentException:向容器添加窗口

我一直收到错误:Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a containerat java.awt.Container.checkNotAWindow(Container.java:483)at java.awt.Container.addImpl(Container.java:1084)at java.awt.Containe…

今天狂想自杀,找了两个星期的工具,原来我已经有了。

人爱偷懒,没办法。上网时,偶然间,发现了一个叫ReSharper的工具,这个东西的虽然支持重构,据大家的介绍,但功能不是很强,但我偶然发现里面的live template功能,可以极大地提高编程的效…

UICollectionView——整体总结

前言 这几天有时间看了下UICollectionView的东西,才发觉它真的非常强大,很有必要好好学习学习。以前虽然用过几次,但没有系统的整理总结过。这两天我为UICollectionView做一个比较全面的整理。包括基本使用,自定义布局&#xff0c…

java Class对象返回的都是指向同一个java堆地址上的Class引用

一旦类被加载了到了内存中,那么不论通过哪种方式获得该类的Class对象,它们返回的都是指向同一个java堆地址上的Class引用。jvm不会创建两个相同类型的Class对象 public class Cat {static {System.out.println("wwwww");} }class T1 {public s…

matlab基础与实例教程,MATLAB基础与实例教程

系统全面,实例丰富 考虑到Matlab进行仿真和运算分析时的基础知识和实践操作,讲解从基础的变量、函数、数据类型等入手,涉及到数学分析、图形可视化、Simulink仿真、文件读写等,全面地介绍了Matlab的分析方法。 精心编排&#xff0…

Android开发技巧——ViewPager加View情况封装PagerAdapter的实现类

ViewPager是Android的support库中的一个控件。 ViewPager Fragment的使用,已经有FragmentAdapter的实现可以帮助我们快速进行开发了; ViewPager View都要自己去继承PagerAdapter并实现,重写那些写过一次又一次的方法,于是以下对…

近300万记录的论坛还用这个分页存储过程

http://www2.gliet.edu.cn/club2/bbs/list_new_today.asp用于列出今日最新贴的。有个想不明的问题是为什么DeclareSqlText Varchar(1000)声明为1000个字符大了,但超过255字符之后exec(SqlText)就会出错。自动把后面的cut掉了?ALTERPROCEDUREbbsListNewTo…

php横排代码,20行代码原生js实现文字横向轮播

20行代码实现文字横向轮播效果1 页面布局代码恭喜793765***获得 50元超市充值卡卡奖励恭喜793765***获得 50元超市充值卡卡奖励恭喜793765***获得 50元超市充值卡卡奖励恭喜793765***获得 50元超市充值卡卡奖励恭喜793765***获得 50元超市充值卡卡奖励恭喜793765***获得 50元超…

JAVA项目中classpath路径详解

classpath是什么路径? 1.classpath指的是类路径,也就是编译之后的target文件夹下的WEB-INF/class文件夹。 2.resources文件夹存放的是各种配置文件,当项目被编译时resources下的所有配置文件均被放在 WEB-INF/class文件夹下。也就是类路径下…

将一张表的主键(ID)重置为从1开始自增排列

如果你有一张表,你的主键是ID,然后由于测来测去的原因,你的ID不是从1开始连续的自增了。 终于有一天,使用这张表的某个系统要导入正式数据了,强迫症这时候就表现的明显了,浑身不自在, 这时候你就…