JAVA软件开发流程.docx
《JAVA软件开发流程.docx》由会员分享,可在线阅读,更多相关《JAVA软件开发流程.docx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JAVA软件开发流程 分类: J2EE2010-11-21 15:52167人阅读评论(0)收藏举报软件开发的过程:1、需求分析(25-30%):在面试时说明自己参与了某个项目的某个模块从需求到设计到开发的所有过程,一定客户签字认可,在合同要说明验收时以需求说明书的内容为准,若有改动,需与商务另行商议。成果:需求说明书,具体内容如下:demo(界面原型):需求的可视化需求特征列表:简要的说明系统的功能,确定优先级及风险度用例图(user-case图):说明系统整体的功能角色:角色:系统的参与者用例:一个功能系统边界:功能范围关系:角色与角色:泛化(实线+三角)用例与用例:扩展:-extend-
2、可用可不用包含:-include-必须调用角色与用例:调用(实线+箭头)用例与角色:通知(实线+箭头)用例说明:1、用例流程图(活动图)说明开始结束状态处理判断分支泳道汇集2、写用例说明文档,其有六大元素功能描述:用例的简要描述参与者:角色前置条件:前提后置条件:结果基本流:最正常的情况扩展流:可能及出错的情况 2、整体设计(20-30%)1、分析业务流程:系统功能及复杂用例的流程bbs登陆注册浏览、发新帖、回复短消息用户管理版块管理帖子管理2、根据业务流程设计业务实体及类图(体现ooa思想、数据库设计的思想)讨论区(1) 版块(0.n)版块(1) 主帖(0.n)主帖(1) 回帖(0.n)用户
3、(1) 帖子(主帖、回帖)(0.n)用户(1) 消息(0.n)e-r图的的过程1、外模型:根据业务找业务实体,与具体技术无关2、概念模型:与具体的技术整全在一起过程:找实体接关系写属性三级范式:有主键完全依赖于主键不出现传递依赖类图:角色:接口 类关系:继承:实线+三角依赖:虚心+箭头实现接口:虚心+三角关联:实线+箭头聚集:实线+空心菱组成:实线+实心菱3、确定项目的技术框架框架设计的原则:上层依赖于下层,尽量减少下层对上层的依赖,层与层之间通过接口调用。模式的目的:提高代码的可扩展、可维护性模式的原则:增加开放,修改关闭,面向接口抽象类编程常用的模式:最好画图 simplefactory:
4、简单工厂,有三个角色工厂:产生具体产品返回抽象产品抽象产品:一个接口或抽象类具体产品:具体的实现增加一个产品时不用修改客户端,只需修改工厂,如果用了返回,就不用修改工厂,只需修改配置,spring用的就是返射,是超级工厂。单例:整个虚拟机中只有一个实例。三大特征:1、私有所构造子2、私有的静态属性3、公有的静态方法,对象为空时产生一个新的,不为空直接返回代理:代理与真实对象实现的是同一接口,将真实对象作为代理的属性向客户端公开的代理,客户端调用代理的方法时,代理找到真实对象,调用真实对象方法,在调用之前之后通过装备可以提供事务、日志、安全等服务。模板:父类提供抽象方法及具体方法,具体方法调用抽
5、象方法,抽象方法由子类实现,向客户端公开的子类,客户端通过父类的具体方法调用子类实现的抽象方法,为子类提供服务。装饰:有三个角色,通用接口,本原,装饰,将通用接口聚集到装饰中,装饰可以有很多子类,可以将本原或装饰通过构造子注入到另一个装饰中,将多个装饰的功能随意组合。轻量级的框架jsp&servlet&dao&jdbc:用的model2,速度是最快的,开发效率不高。M:facade&dao&jdbcC:serlvetV:jsp通过jsp将请求发给servlet,servlet通过FacadeFactory产生具体的Facade返回一个IFacade接口,通过IFacade接口调用Facade的
6、具体方法。Facade通过dao的抽象工厂产生具体的工厂,通过具体的工厂产生具体的dao,返回dao接口给业务层。Facade执行完后将结果返回给servlet,servlet转发到下一个页面。Servlet用了模板模式可以提供错误处理、事务、页面跳转的服务。struts&dao&hibernate:速度较快,因为我们要自己实现工厂,并不是所有的一切都是返射,相对spring来说速度更快一些。struts:mvc,请求处理过程用一个模板模式提供通用错误、事务、跳转服务。将IFacade接口作业其属性,通过FacadeFactory工厂产生具体的Facade返回一个Facade接口。facade
7、IFacade接口Facade实现类FacadeFactory:facade工厂dao接口作为Facade的属性,通过AbstractFactory调用具体的DaoFactory产生具体的dao实例,返回dao接口。dao:daodaoImplDaoFactory:产生daoImpl实例,返回dao接口AbstractFactory:通过返射、工厂、单例产生具体的DaoFactory,返回AbstractFactroy给业务层,因为具体的工厂继承于抽象的工厂,客户端调用的还是具体工厂方法。hibernate核心类核配置文件struts&spring&hibernate/ibatis:这是当前最
8、通用、最快速、藕合度最低的开发方式但也有一个问题spring一切都是返射,速度慢。struts/hibenate/ibatis要解析xml文件、要大量用到返射,所以速度慢。一般适合于中小型系统(并发量500),大型系统有些不适合需要调整。struts已是MVCspring是一个超级工厂,在spring中配置的都是实现类,在代码中得到都是接口。 hibenate/ibatis是o/r Mapping框架结构:struts:mvc请求处理过程 在spring中加入bean标签,配置具体的action,通过set方法将Facade代理注入到action的IFcade接口中。FacadeIFacade
9、接口Facade实现类在applicationContext.xml配置具体的Facade类,在配置Facade的Aop服务时,先配置抽象代理AbstractProxy其类是TransactionProxyFactoryBean,说明装备TransactionManager,说明连接点TransactionAttributes。再配置具体的代理,继承于AbstractProxy,通过target指向真实的对象。通过set方法注入将具体的Dao注入到Facade的Dao接口属性中。 Daodao接口dao的实现 extends HibernateDaoSupport/SqlMapClientSu
10、pport在applicationContext.xml中配置具体的dao,向Facade返回dao接口。hibernate在applicationContext.xml中配置dataSource、sessionFactory,通过set方法注入将sessionFactory注入到dao实现类中。ibatis: 在applicationContext.xml中配置dataSource、sqlMapClient,通过set方法注入将sqlMapClient注入到dao实现类中。3、详细设计对于开发能力比较强的团队,可以不做详细设计。时序图:作用:找类、找方法、验证系统的正确性元素:纵轴:时间、对
11、象的生命周期横轴:说明对象与对象的交互4、编码(25-30%) 5、测试(10%)umlooa与ood的区别?ooa:面向对象的分析,根据客户的业务找业务实体,与具体的技术无关,客户可以看懂。ood:面向对象的设计,是ooa的全集,与具体的技术框架相结合进行设计。面向过程与面向对象的区别?面向过程:1、现实世界是对象,其在分析过程中是对象,在设计过程不是对象而是方法与方法之间的调用,容易与现实脱离,容易出错。2、因为是方法与方法之间的调用,重用性不高,无法达到宏观层次上的控制。3、开发难、维护难、可扩展性、重用性差。面向对象: 1、现实世界是对象,其在分析过程中是对象,在设计过程还是对象分析设
12、计与现实接近,降低了开发的难度。2、继承可以让概念在宏观层次重用,当层与层之间通过接口或抽象类调用时,他们所依赖的不再是具体的实现细节,而是宏观商业逻辑即接口、抽象类,具体的实现是可以随时被替换的。3、技术在不断的更新,但业务变化较少,业务实体可以很好的重用。3、开方方便、好维护、好扩展什么是模型?现实的浓缩。模型的作用?1、便于分析、认识世界2、便于存档、沟通3、便于决策。模型的原则?1、模型好坏决写系统的成败。2、与现实越接近说明模型越正确。3、模型不止一个,而是多个,它从不同的侧面说明现实的世界。4、根据不同人的需求,模型有不同的实现细节。九大图形:类图:贯穿软件开发的所有过程,从需求到
13、整体到详细到开发到测试,是uml中最重要的图形,在ooa阶段中找业务实体,在ood阶段中将业务实体与具体技术结合起来设计操作类及实体类use-case:是系统分析员与客户沟通的桥梁时序:说明在时间点上类与类之间的交互,主要用于整体及详细设计阶段,作用是找类、找方法、验证系统的正确性活动图(流程图):用于需求阶段说明具体业务的流程协作图:说明类与类之间的交互,与时序图功能类似,但没有时间的概念,通过序号说明交互顺序。状态:一个对象在不同方法的操作下状态的改变。元素:对象方法构件:说明组件与组件或层与层之间的依赖关系。元素:组件部署:说明主机与主机之间的关系,找出系统运行的瓶颈。元素:主机对象图:
14、不般不画活动图作用及元素?主要用在需求分析阶段,说明某一个用例的业务流程。元素如下:开始结束状态处理(动作)判断分支:一个操作转化为多个操作汇集:多个操作转化为一个操作泳道:说明不同角色所做的工作 软件开发的过程模型:1、瀑布模型前一个阶段结束并审核通过后才可以开始下一个阶段缺:不灵活、不适合大型、需求模糊的系统2、螺旋模型:迭代式,每一次迭代要将软件开发的流程再走一遍。优:灵活、适合大型、需求模糊的系统缺:太灵活无法保证质量3、统一软件开发流程(rup):有四大阶段六大流程,每一个阶段都会执行六大流程。每一个阶段所执行流程的侧重点不一样。四大阶段:启动:侧重于需求精化:设计构建:编码产品化:
15、部署六大流程:业务建模:找业务实体及业务实体之间的关系需求:分析设计实施:编码测试:部署4、极限编程(xp):侧重点:1、有效的沟通胜过合同谈判2、高质量的代码胜过面面俱到的文档3、成对开发4、迭代jsp&servlet1、jdbc中的核心类Class.forName(com.microsoft.);/注册驱动DriverManager:得到连接Connection con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;databaseName=pubs;selectMethod=cursor,用户,“
16、密码”);Connection:一个连接会话,可以得到执行sql的对象-执行dml(insert update delete)PreparedStatement ps=con.preparedStatement(insert into student values(?,?,?);ps.setString(1,张三);ps.executeUpdate(); Statement st=con.createStatement();-执行查询st.executeQuery(select * from student);-执行dml(insert update delete)st.executeUpda
17、te(insert into student values(cc,cc,x,s);-执行查询PreparedStatement ps=con.preparedStatement(select * from student);ResultSet rs=ps.executeQuery();PreapredStatement、Statement的区别PreparedStatement:可以动态传参在得到PreparedStatement实例时,要给定sql,所以sql是预编译,重复执行时效率高。Statement不可以动态传参在得到Statement实例时,不给定sql,sql不预编译,重复执行时效
18、率低。2、如何实现一个servlet1、继承于HttpServlet,实现doGet及doPost方法public class MyServlet extends HttpServlet/form中的method=get时或超链时调用doGet方法/doGet的信息写在请求的url中,不安全,传输的信息少/如果是表单一般用doPost方法public void doGet(HttpServletRequest request,HttpServletResponse response)request:客户的请求及表单域信息/表表单域信息String userName=request.getPar
19、ameter(表单域名);String like=request.getPrameterValues(重复的表单域名);/在request中加入对象,转发到另一页面时可以重用request.setAttribute(名称,对象);request.getAttribute(名称);/转发到另一个servlet或jsp页面,会通过参数将当前servlet或jsp中的requestresponse传入到另一个页面request.getRequestDispatch(a.jsp).forward(request,response);/得到sessionHttpSession session=reque
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 软件 开发 流程
限制150内