`
newqinhao
  • 浏览: 140771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
 

  一个项目必须设计好之后,才能进行编码,今天黎老师给我们介绍了怎样用uml画图!
1要做软件先得了解软件的生命周期

1、问题的定义及规划: (可行性分析报告和软件开发计划)
此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
2、需求分析: (需求分析说明书和初步的用户手册)
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
3、软件设计: (概要设计、详细设计)
此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。
4、程序编码: (提交源程序及清单)
此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
5、软件测试: (提交软件维护测试报告)
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试(白盒)、集成测试(黑盒,功能测试、强度性能测试)以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6、运行维护:软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。(提交软件维护报告)


2.增量和迭代模型


增量迭代是RUP (Rational Unified Process)统一过程常采用的软件开发生命周期模型。增量和迭代有区别但两者又经常一起使用,所以这里要先解释下增量和迭代的概念。假设现在要开发A、B、C、D四个大的业务功能,每个功能都需要开发两周的时间.则对于增量方法而言可以将四个功能分为两次增量来完成,第一个增量完成A,B功能,第二次增量完成C,D功能。而对于迭代开发来将则是分两次迭代来开发,第一次迭代完成A、B、C、D四个基本业务功能但不含复杂的业务逻辑,而第二个功能再逐渐细化补充完整相关的业务逻辑。在第一个月过去后采用增量开始时候A、B全部开发完成,而C、D还一点都没有动,而采用迭代开发的时候A,B,C,D四个的基础功能都已经完成。

RUP强调的每次迭代都包含了需求、设计和开发、测试等各个过程,而且每次迭代完成后都是一个可以交付的原型。迭代不是并行,在每次迭代过程中仍然要遵循需求->设计->开发的瀑布过程。迭代周期的长度跟项目的周期和规模有很大的关系。小型项目可以一周一次迭代,而对于大型项目则可以2-4周一次迭代,如果项目没有一个很好的架构师,很难规划出每次迭代的内容和要到达的目标,验证相关的交付和产出。因此迭代模型虽然能够很好的满足与用户的交付和需求的变化,但确是一个很难真正用好的模型。


3.软件设计的重要性

当今软件开发已不再是个人英雄时代,一个软件通常需要一个团队进行集体开发,为了便于开发成员交流和记忆。在你开始动手开发前,必须把你要做什么?做成什么样,怎么个做法?用文字和图例表示出来。
虽然表面上看来,一些人没做设计就开始做项目,其原因有二:太有经验,在做之前他就构思了,只是没把构思的内容用文字规范划记录下来;太没经验,不懂得如何做,只是是边做边调整思路,在做的过程中隐含设计,这样更浪费时间。不搞设计的结果,往往是返工和推倒重来。
设计不用太在意文档的规范性,否则就会本末倒置,只要能把你的思路整理出来,表达清楚即可。爱因斯坦做7个小板凳的故事对我们的启发非常大,不要因为担心做不好就不做,这样永远只会裹足不前,只要开了头,就有进步的机会,永远没有最好的东西,只有更好,更好需要基于第一次开始。


5.UML——Unified modeling language
一件复杂事情的做法怎样才能想清楚呢?是不是可以借助一些道具、技巧和方法来帮助想呢?想清楚以后是不是应该在纸面上留下一些结果,以方便自己使用和与人交流?这个结果用什么格式来记录,别人才容易看懂呢?UML是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。
uml本身是一套符号的规定,就像数学符号和化学符号一样,之所以出现这些符号定义,是因为这些符号背后对应着一套思想和方法,这些符号用于帮助描述这套思想和方法的,这些符号是由这套思想和方法催生的。要学uml,就是要借助这些符号来掌握背后的思想和方法,这些符号虽然必须掌握,但它远不如它背后对应的思想和方法重要。
必须熟练掌握了某种面向对象的编程语言和跟着实施了若干个软件项目,才适合学习uml和理解uml中的一些内容,才会有好的学习效果。很难想象一个没有在铁路工地上工作过的人,怎么去设计铁路!!! UML解决编码前的设计问题,而不解决编码过程的实施问题,我们前面学习的各种编程技术是解决编码过程的实施,必须有了这些基础才能理解和运用UML。

6.UML图

用例图
静态结构图:类图、对象图、包图、组件图、部署图
动态行为图:交互图(时序图与协作图)、状态图、活动图

画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,图好看与否就是看你的字是否规范,至于工具,就像你用什么笔,不算非常重要,关键在于意,而不在于形。

7.用例描述

    用例图只是简单地用图描述了一下系统,对于每个用例,我们还需要有详细的说明,这样就可以让别人对这个系统有一个更加详细的了解,这时我们就需要写用例描述。
  对于用例描述的内容,一般没有硬性规定的格式,但一些必须或者重要的内容还是必须要写进用例描述里面的。用例描述一般包括:简要描述(说明)、前置(前提)条件、基本事件流、其他事件流、异常事件流、后置(事后)条件等等。下面说说各个部分的意思:
  简要描述:对用例的角色、目的的简要描述;
  前置条件:执行用例之前系统必须要处于的状态,或者要满足的条件;
  基本事件流:描述该用例的正常基本流程,指每个流程都“正常”运作时所发生的事情,没有任何备选流和异常流。
  其他事件流:表示这个行为或流程是可选的或备选的,并不是总要执行它们;
  异常事件流:表示发生了某些非正常的事情所要执行的流程;
  后置条件:用例一旦执行后系统所处的状态;

用例图和用例描述设计实例请看附件文档

8.类图和对象图
用于描述系统中的对象类本身的组成和对象类之间的各种静态关系。
类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合
对象图描述一组对象和它们之间的联系,它是系统状态的某一时刻的快照,它的使用相当有限,它主要用于了解系统在某个特定时刻的具体状况和数据结构。
对象图表示方法与类图大体相同,对象图中的对象属性可以有具体值,类图中的一个类可以对应成对象图中多个对象,例如,部门类的自关联就可以对应成多个部门对象之间的关联。

分享  |  评论 (0)  |  阅读 (4)  |  固定链接  |  发表于 22:29
提示:“固定链接”为您显示此篇文章的固定不变链接,如果您有还有疑问请点击帮助
链接地址:http://zhangchangzhi1.blog.sohu.com/134886312.html 复制此地址

2009-10-25 | 传智播客——为jboss设置JBOSS_HOME系统变量      黎老师继续给我们讲Ejb,今天介绍了jboss。Ejb得运行环境! 1.启动JBoss 进入jboss的bin目录,找到启动脚本run.bat 。双击run.bat即可启动jboss,此时启动的配置项为default。 如果启动出错,请检查下列情况: 1.端口是否被占用,如:8080、1099 2是否为JDK设置的JAVA_HOME和ClassPath系统变量,如果没有,请按照前面视频介绍的方法设置。 3.检查jboss所用的jdk是否1.5以上版本,这些信息可以在jboss的控制台观察到。 4.如果启动时出现这样的错误:“findstr不是内部或外部命令,也不是可运行的程序或批处理文件”。那么应该在系统变量Path中追加“%SystemRoot%/system32;%SystemRoot%;”。 2为jboss设置JBOSS_HOME系统变量 因为在后面的学习中,我们需要使用到系统变量JBOSS_HOME,它指向jboss的安装路径。所以安装完后我们需要添加该变量,方法是:右键点击“我的电脑”->“属性”->“高级”->“环境变量”,在“系统变量”里添加JBOSS_HOME变量,值为Jboss的安装路径,如:D:/JavaEEServer/jboss。 为了方便输入jboss的命令,我们把jboss的bin目录添加到系统路径里。在系统变量一栏找到变量名为Path的选项,点“编辑”在变量值的末尾添加:;%JBOSS_HOME%/bin; 3.EJB中的三种bean 1.会话bean(session bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作. 2.实体bean(entity bean) 它实际上属于java持久化规范(简称JPA)里的技术, JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink等ORM框架各自为营的局面。 3.消息驱动bean(message-driven bean) 它是专门用于异步处理java消息的组件.具有处理大量并发消息的能力. 4.会话bean 无状态会话bean 平常,我们使用最多的是无状态bean,因为它的bean实例可供多个用户使用,所以它的性能比有状态bean高.正因为一个bean实例被多个用户使用.那么,前一个用户设置的值有可能被后一个用户所修改,所以它无法正确保存某个用户设置的值,因此是无状态的. 有状态会话bean 有状态bean平常使用的并不多,因为它的一个bean实例只供一个用户使用,所以性能开销比较大,正因为它的实例只被一个用户使用, 用户为它设置的值是不会被其他用户修改,所以可以正确保存用户设置的值,因此是有状态的. 5.设置JNDI访问环境信息 在进行JNDI查找前,我们必须设置应用服务器的上下文信息,主要是设置JNDI驱动的类名(java.naming.factory.initial)和命名服务提供者的URL (java.naming.provider.url) 。 java.naming.factory.initial或Context.INITIAL_CONTEXT_FACTORY:环境属性名,用于指定InitialContext工厂(作者称它为JNDI驱动更容易理解),它类似于JDBC指定数据库驱动类。因为本例子连接的是JbossNS(命名服务的实现者),所以使用Jboss提供的驱动类:org.jnp.interfaces.NamingContextFactory java.naming.provider.url或Context.PROVIDER_URL:环境属性名,包含提供命名服务的主机地址和端口号。它类似于JDBC指定数据库的连接URL。连接到JbossNS的URL格式为:jnp://host:port,该URL的“jnp:”部分是指使用的协议,JBoss使用的是基于Socket/RMI的协议。host为主机的地址,port为JNDI服务的端口。除了host之外,其他部分都是可以不写的。 下面是数据库访问例子: Class.forName("org.gjt.mm.mysql.Driver").newInstance(); Properties props = new Properties(); props.put("user","root"); props.put("password","123456"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/itcast", props);

分享  |  评论 (0)  |  阅读 (1)  |  固定链接  |  发表于 22:29
提示:“固定链接”为您显示此篇文章的固定不变链接,如果您有还有疑问请点击帮助
链接地址:http://zhangchangzhi1.blog.sohu.com/134886260.html 复制此地址

2009-10-25 |  传智播客--------Spring 中的 Bean 配置      佟刚Spring的继续给我们讲Spring中得bean的配置,ioc与控制反转,和在依赖注入,具体内容如下!
1.IOC 和 DI
IOC(Inversion of Control): 其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源. 作为回应, 容器适时的返回资源. 而应用了 IOC 之后, 则是容器主动地将资源推送给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接受资源. 这种行为也被称为查找的被动形式
DI(Dependency Injection):IOC 是一种通用的设计原则, 而 DI 则是具体的设计模式, 它体现了 IOC 设计原则. 在 DI 模式里, 容器以一些预先定义好的方式(例如: setter 方法)将匹配的资源注入到每个组件里.
因为 DI 是 IOC 最典型的实现, 所以 DI 和 IOC 经常混用

2.在 Spring 的 IOC 容器里配置 Bean

setter 注入: 最流行的 DI 类型. 容器通过组件里的 setter 方法注入依赖.
优点: setter 方法可以自动生成; 简单
缺点: 组件使用者或许会忘记给组件注入它需要的依赖; 在第一次注入后,依赖可能会因为 setter 方法的调用而被修改
构造器注入: 通过构造器注入依赖.
优点: 解决了 setter 注入的缺点
缺点: 需通过参数位置来确定参数; 若组件有多个依赖需要注入, 会导致构造器参数列表非常冗长.


3.Spring 提供了强大的 IOC 容器来管理组成应用程序中的 Bean(组件). 要利用容器提供的服务, 就必须配置 Bean, 让这些 Bean 运行在Spring IOC 容器中.
需求: 开发一个生成序列号的应用程序. 在这个程序里, 需要根据不同的应用目的生成不同系列的序列号. 每个系列的序列号都有自己的前缀, 后缀和初始值. 所以, 在应用程序中需要创建和维护多个序列号生成器实例.

4。在 Bean 配置文件中声明 Bean

为了让 Spring IOC 容器能够对 Bean 进行实例化, 每个 Bean 都应该提供一个唯一的名称和一个全限定类名.
对 Bean 的每个简单类型的属性来说, 可以为其制定 <value> 元素. Spring 会尝试将值转换为该属性的声明类型
setter 注入使用 <property> 元素, 使用 name 属性指定 Bean 的属性名称
构造器注入在 <constructor-arg> 元素里声明属性, 因为构造器的参数是基于位置的, 所以 <constructor-arg> 中没有 name 属性

5.Spring 容器

在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用.
Spring 提供了两种类型的 IOC 容器实现.
BeanFactory: IOC 容器的基本实现.
ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口.
无论使用何种方式, 配置文件时相同的.

6.实例化 ApplicationContext

ApplicationContext 只是一个接口, 需要实例化其实现类:
ClassPathXmlApplicationContext: 从 classpath 下加载配置文件
FileSystemXmlApplicationContext: 从文件系统中加载配置文件
XmlWebApplicationContext: 只能用于 web 应用

7.Spring 的依赖检查特性只能检查某些类型的所有属性. 不能只针对个别属性进行检查.
RequiredAnnotationBeanPostProcessor 是 Spring 的 Bean 后置处理器, 它检查所有具有 @Required 注解的属性是否已被设置.
Bean 后置处理器是一种特殊类型的 SpringBean, 它能够在每个 Bean 实例化后执行一些额外的工作.
要激活 Bean 后置处理器来进行属性检查, 必须在 Spring IOC 容器里注册它.
RequiredAnnotationBeanPostProcessor 只能检查属性是否被设置, 但对设置的属性值是 null 的情况则无能为力.

分享  |  评论 (0)  |  阅读 (1)  |  固定链接  |  发表于 22:27
提示:“固定链接”为您显示此篇文章的固定不变链接,如果您有还有疑问请点击帮助
链接地址:http://zhangchangzhi1.blog.sohu.com/134886172.html 复制此地址

2009-10-25 | 传智播客——Spring基础概念     

今天佟刚给我们讲了Spring,效果蛮好的。他给我们讲一个知识点用一个例子!容易对知识点的理解!

1.Spring 是什么
Spring 是一个开源框架.
Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.
Spring 是一个 DI 和 AOP 容器框架.

2.具体描述 Spring:

轻量级. 整个大小可以打成一个 2.5 MB 的 jar 包, 而且 Spring 的处理开支也很小. 更重要的是 Spring 是非侵入性的: 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API
依赖注入(DI --- dependency injection)
面向切面编程(AOP --- aspect oriented programming)
容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期
框架: Spring 实现了使用简单的组件配置组合成一个复杂的应用. 在 Spring 中可以使用 XML 文件组合这些对象

3.搭建 Spring 开发环境
把以下 jar 包加入到工程的 classpath 下:
dist/spring.jar: 该文件中包含了所有标准的 spring 模块
lib/jakarta-commons/commons-logging.jar:spring 使用该库输出日志信息
Spring 的配置文件: 一个典型的 Spring 项目需要创建一个或多个 Bean 配置文件, 这些配置文件用于在 Spring IOC 容器里配置 Bean. Bean 的配置文件可以放在 classpath 下, 也可以放在其它目录下.
可以复制
  samples/jpetstore/war/WEB-INF/applicationContext.xml


4.一个Spring小项目
helloSpring.java
package cn.itcast.spring;

public class HelloSpring {

private String message;

public void setMessage(String message) {
  this.message = message;
}
public void hello(){
  System.out.println("message:"+message);
 
}
}


applicationContext.xml

<bean id="hello"
  class="cn.itcast.spring.HelloSpring">
  <property name="message" value="Hello Spring^^^^"></property>
</bean>

Main.java

public class Main {
public static void main(String[] args) {
//创建Spring容器
ApplicationContext ctx =
  new ClassPathXmlApplicationContext("applicationContext.xml");
  
//从Spring容器中读取Helloword类的实例
HelloSpring helloSpring=(HelloSpring) ctx.getBean("hello");
  
    //调用Helloword实例的方法
helloSpring.hello();
}
}

5.安装 Spring IDE

Spring IDE 提供了一个 Eclipse 插件, 该插件可以提高开发 Spring Bean 配置文件的效率
在 eclipse 目录下新建 springide, links 文件夹

复制 features 文件夹和 plugins 到 springide 文件夹下.
在 links 文件下新建 springide.link 文件, 在其中编写如下内容: path=/springide

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics