`
Jennycn
  • 浏览: 96459 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Follow your heart (99)----难以言说的郁闷+继续学习

阅读更多
说句实话,现在有些难以言说的郁闷和沮丧. 觉得很无奈,很...

请人帮忙做ppt和英语文档时,就会发现更多的沟通困难. 真的是很头痛沟通问题. 现在发现,世界上最简单的问题,就是自己.最难的问题,就是沟通.

当然,有时有些问题也很尖锐地提醒了自己,有些细节,自己也还没想明白.

可是,多数,是自己已经解决了的问题,要去说服人家明白很难.

今天继续学习,发现了iteye上还有一些做web gis的. 有一个叫giswalker,, 还有一个是http://sqj820123.iteye.com/. 其实,我这个,和gis没太多真正关系,但看一些他们的东西,还是觉得很受益. 那个giswalker对待技术的探讨态度,和天凉,等一样,都是很open,我很欣赏的那种.

还学习到一个人写的java web开发的框架问题的文章,解了我一些惑.转载:

http://www.iteye.com/topic/1015992#2072707



进行Java Web应用软件开发,一般可以采用3种方式。



第一种是“自力更生”,从零开始,包括软件系统架构和底层工具一切都靠自己来实现。



第二种是“洋务运动”的“工具框架”开发方法,即自己设计软件系统架构,但是同时选用一些底层工具类的“工具框架”来配合自己搭建的架构进行开发。这类“工具框架”的典型代表有Struts 2, Hibernate 3等等。



第三种是“拿来主义”的“范例框架”开发方法,即自己不再独立设计系统架构和底层工具,而是选择一个已经将系统架构和底层工具类库等子框架都整合好,并提供范例模块的成熟的“范例框架”,直接参考范例框架上的范例模块,并使用范例框架整合好的底层工具类库等子框架,进行定制化开发自己的项目。这类“范例框架”包括AppFuse, Spring Roo, Spring Side, Play, Seam等。



实践证明,第三种“范例框架”开发方法,是最快速高效的。因为这将大大缩短软件开发的“起步”过程,提高敏捷软件开发的首次迭代的质量,并让今后的开发工作能建立在一系列前人已经摸索出来的“最佳实践”的基础之上。



要使用“范例框架”开发方法,有必要回顾一下Java Web应用的开发框架。在Java Web应用开发领域,软件开发框架十分丰富。如果把Java Web应用开发的架构按照软件系统的三层模型来分层,可以分为表示层、业务层和数据层这3层。表示层负责显示应用的结果,业务层负责处理业务逻辑,数据层负责存取数据库。每一层都有相应的软件开发框架。

2000年3月,Apache Struts开源项目开始启动。Struts是运用MVC Model 2较早并且为大多数Java Web开发人员所熟悉的Java Web应用开发框架。



其他运用MVC Model 2模式的开源项目也相继发展起来,比如另一个开源项目OpenSymphony,于2002年推出了比Struts技术更先进的名为Webwork的Java Web应用开发框架。



2008年,上述两个开源项目Struts和Webwork进行了合并,推出了一个名为Struts 2的新框架。Struts 2框架实现了上述“三层模型”的表示层和业务层的一些功能,不妨把这类框架称为Web应用框架。由于Struts推出时间早,Struts 2框架是目前国内外Web应用框架中名气最大的。其他常用的通用Web应用框架还包括Apache Tapestry和JavaServer Faces。

Java是面向对象的语言,在进行Java Web应用开发,存储数据到数据库(即持久化persistence)时,免不了要在数据层进行对象-关系映射(Object-relational mapping, ORM)。一些框架完成了上述基于ORM的持久化工作,其中最有名的是Hibernate。这类框架可以称为ORM持久化框架。其他常用的ORM持久化框架还包括:iBATIS和Java Persistence API (JPA)。



一些通用开发框架也相继推出,如2003年发布的Spring Framework。Spring Framework的兴起缘于Sun公司的EJB 1.1至2.1的设计缺乏灵活性,不便于测试而广受批评这样的背景之下。Spring Framework最大的优势,是实现了依赖注入(Dependency Injection,DI)和面向方面的编程(Aspect-oriented programming, AOP)。DI使得对象的实例化不再由程序控制,而是由Spring Framework容器来控制,这样会使得模块之间的耦合度降低,更加容易测试。AOP能够把一些模块所共有的通用功能(如日志、安全、事务)抽象出来集中处理,这能减少开发人员的工作强度,让他们能更加关注业务逻辑,而不是上述通用功能。



由于上述框架数量繁多,要把它们有机地整合起来,在一个项目中充分发挥它们应有的作用,也是一件复杂的事情。一些开源框架就开始做框架整合的工作,整合工作除了把表示层、业务层和数据层的框架组合起来之外,一般还提供若干项目骨架(project skeleton)或范例(archetype),内含如用户管理、权限管理这样的通用功能、一些范例模块和代码自动生成工具。这类框架可以称之为范例框架(Archetype Framework)。范例框架中发展较早的是AppFuse,于2003年推出了1.0版本。最近发展起来的范例框架是Spring Roo,于2009年推出了1.0版本。国内常用的范例框架还包括中国工程师自己创建的Spring Side。其他常用范例框架还包括:JBoss Seam和Play Framework。



下表列出了上述Java Web开发框架的相关信息。

软件开发框架 初始版本时间/版本号 最近版本时间/版本号 框架类型
==================================================================================
Spring Framework 2003.06 2010.10.29/3.0.5 通用开发框架
Play Framework 2008.02 2011.04.13/1.2 范例框架
AppFuse 2003.11.30/1.0 2011.04.04/2.1 范例框架
Spring Roo 2009.12/1.0.0.RELEASE 2011.04.13/1.1.3.RELEASE 范例框架
Spring Side 2006.08.07/1.0 2010.09.15/3.3.4 范例框架
Jboss Seam 2005.09 2011.03.31/3.0.0.Final 范例框架
Hibernate 2001 2011.04.06/3.6.3.Final ORM持久化框架
iBATIS 2002 2010.12.31/3.0.4 ORM持久化框架
JPA 2006.05.11/1.0 2009.12.10/2.0 ORM持久化框架
Struts 2000.05 2010.12.20/2.2.1.1 Web应用框架
JSF 2004.03.11/1.0 2009.06.28/2.0 Web应用框架
Apache Tapestry 2000.01 2011.03.30/5.2.5 Web应用框架
分享到:
评论
4 楼 Jennycn 2011-10-04  
刚刚重新看了一次<走出非洲>

再次颤动

可是,也再次感到她处于那种失火,,又失去爱人,失去一切的那种绝境
3 楼 Jennycn 2011-10-04  
http://lixinlixin2008.iteye.com/

这人也很不错,比前面几个还写的很仔细

写了很多做手机上lbs应用的东西
2 楼 Jennycn 2011-10-04  
其实,我想找专职的人做,会是敏捷开发的形式,你和外包谈,往往不得不采取瀑布型的,因为要事先核准确定工作量,根据这个确定费用的....


今天再看一段关于敏捷开发的帖子:http://releasa.iteye.com/blog/643324



敏捷开发方式跟传统的瀑布模型有很大的不同,瀑布模型讲究严格的层级关系,同时拒绝后期的变化,敏捷则是拥抱变化后。

敏捷开发具体的方式有很多,这里着重介绍三种,即xp、rup和scrum,xp就是极限编程,着重讲的是具体的开发方式,rup则侧重项目开发周期的具体执行方式,内容比较复杂,先不减少了,这里我们主要讲 scrum,scrum是一种具体讲的一种项目任务的管理方式。

在scrum里,追求的价值观就是做有价值的能够使用的产品出来,所以,一般一个项目会根据时间的长短确定几个开发周期,即sprint,每个sprint完成都会出来一个可以运行的成品,这里也是跟瀑布模型有很大的区别,瀑布模型一般都是最后才出来成品,严格的层级关系,而在scrum,设计、编码、测试是同步进行的,这样大大的节省了资源,不会在设计的时候,编码人员和和测试等着,编码的时候,测试人员等着,会为整个产品节省大量的成本。

在scrum里,一个项目下来以后,会有一个product  backlog,里面会写一些比较简短的story
,这些story大概描述的项目初略需求以及核心,这里不会很详细,不会像瀑布模型哪像一大堆文档,因为谁也预料不到需求的变化,当确定好sprint的周期之后,再会确定第一个sprint的backlog,再根据sprint里面的story去划分具体的task,给这些task确定时间,优先级,这里是相当重要的,每个task都会有状态跟着,当前是否在进行,当前是否呗阻塞,当前是否已经完成,而且这些task会让团队人员自己去挑选,这样就不会出现一个擅长后台的人去捣鼓前台,一个擅长前台的人员去捣鼓后台,浪费大量的时间了,同时,这些任务都是自己挑选的,对开发人员来讲,做起事来也是很顺心,很开心。

在scrum里面,还有一个最主要的事情,那就是每日的scrum会议,这个会议不会太长,一般都会回答三个问题,“昨天做了什么?”,“今天准备做什么”,“遇到了什么困哪?”,这样就会让每个开发人员每天都会很有成就感,同时,每天团队所有人都会知道整个团队的进展情况,相互之间的问题也可以得到及时的解决。

Scrum主要强调团队的沟通能力,最快的沟通,最好的沟通,最好是面对面的沟通,强调团队的自我管理能力,把开发的责任变成义务,让大家每天在任务的task状态的驱动下,都有成就感。

Scrum拥抱变化,当老板的需求来了以后,可以给这些新的story划定优先级进行管理,不会再出现以前那样的老是做着偏离核心的东西,开发出一大堆无用的功能,有人说,scrum不讲究文档,其实这是不正确的,scrum也会有文档,一般一两张纸就足够了,不需要像以前那样费时费力的整一大堆文档出来,结果没人看几眼,敏捷讲究的是效率,讲究的是质量,讲究的是尽快做出能让客户看到的有价值的东西,这样在尽可能早的时间内,给出反馈,做出修改,避免后期的大改动。

Scrum需要设计、开发、测试、客户一起参与,这样才能完成一个完美的产品。

其实在实施敏捷的过程当中,不仅仅是scrum,敏捷讲究的是高效,有效,所以一切有利于开发的方法方式都可以加进来,比如,xp里面的很多东西,都是对开发非常有帮助的,如:结对编程、重构、持续集成等等,这些都是实施一个敏捷团队必须的。

以上就是对敏捷的一点点认识,更多东西还有待慢慢学习。

张三 Task3

李四 Task2 

王五 Task1 

未开始 进行中 被阻塞 已完成

Task状态图

注:
Scrum:一种敏捷实施方式
Xp:敏捷实施方式
Backlog:记录开发任务
Story:一个一个的需求
Task:任务
Sprint:scrum中的一个开发周期。一般为两周至两个月不等,具体根据项目确定




1 楼 Jennycn 2011-10-04  
还有一个叫zhmiao,是电信行业做gis的

还有这个http://www.iteye.com/topic/824750#1785140

其实,唉,我的真和gis无关

相关推荐

Global site tag (gtag.js) - Google Analytics