JAVA软件开发流程.docx
《JAVA软件开发流程.docx》由会员分享,可在线阅读,更多相关《JAVA软件开发流程.docx(36页珍藏版)》请在冰豆网上搜索。
![JAVA软件开发流程.docx](https://file1.bdocx.com/fileroot1/2022-11/16/3cfaf204-9224-4d35-8cf4-b103ee64bfa9/3cfaf204-9224-4d35-8cf4-b103ee64bfa91.gif)
JAVA软件开发流程
JAVA软件开发流程
分类:
J2EE2010-11-2115:
52167人阅读评论(0)收藏举报
软件开发的过程:
1、需求分析(25-30%):
在面试时说明自己参与了某个项目的某个模块从需求到设计到开发的所有过程,
一定客户签字认可,在合同要说明验收时以需求说明书的内容为准,
若有改动,需与商务另行商议。
成果:
需求说明书,具体内容如下:
demo(界面原型):
需求的可视化
需求特征列表:
简要的说明系统的功能,确定优先级及风险度
用例图(user-case图):
说明系统整体的功能
角色:
角色:
系统的参与者
用例:
一个功能
系统边界:
功能范围
关系:
角色与角色:
泛化(实线+三角)
用例与用例:
扩展:
---extend-->可用可不用
包含:
---include---->必须调用
角色与用例:
调用(实线+箭头)
用例与角色:
通知(实线+箭头)
用例说明:
1、用例流程图(活动图)说明
开始
结束
状态
处理
判断
分支
泳道
汇集
2、写用例说明文档,其有六大元素
功能描述:
用例的简要描述
参与者:
角色
前置条件:
前提
后置条件:
结果
基本流:
最正常的情况
扩展流:
可能及出错的情况
2、整体设计(20-30%)
1、分析业务流程:
系统功能及复杂用例的流程
bbs
登陆注册
浏览、发新帖、回复
短消息
用户管理
版块管理
帖子管理
2、根据业务流程设计业务实体及类图(体现ooa思想、数据库设计的思想)
讨论区
(1)版块(0..n)
版块
(1)主帖(0..n)
主帖
(1)回帖(0..n)
用户
(1)帖子(主帖、回帖)(0..n)
用户
(1)消息(0..n)
e-r图的的过程
1、外模型:
根据业务找业务实体,与具体技术无关
2、概念模型:
与具体的技术整全在一起
过程:
找实体
接关系
写属性
三级范式:
有主键
完全依赖于主键
不出现传递依赖
类图:
角色:
接口
类
关系:
继承:
实线+三角
依赖:
虚心+箭头
实现接口:
虚心+三角
关联:
实线+箭头
聚集:
实线+空心菱
组成:
实线+实心菱
3、确定项目的技术框架
框架设计的原则:
上层依赖于下层,尽量减少下层对上层的
依赖,层与层之间通过接口调用。
模式的目的:
提高代码的可扩展、可维护性
模式的原则:
增加开放,修改关闭,面向接口抽象类编程
常用的模式:
最好画图
simplefactory:
简单工厂,有三个角色
工厂:
产生具体产品返回抽象产品
抽象产品:
一个接口或抽象类
具体产品:
具体的实现
增加一个产品时不用修改客户端,只需修改工厂,
如果用了返回,就不用修改工厂,只需修改配置,spring
用的就是返射,是超级工厂。
单例:
整个虚拟机中只有一个实例。
三大特征:
1、私有所构造子
2、私有的静态属性
3、公有的静态方法,对象为空时产生一个新的,
不为空直接返回
代理:
代理与真实对象实现的是同一接口,将真实对象作为代理的属性
向客户端公开的代理,客户端调用代理的方法时,代理找到真实对
象,调用真实对象方法,在调用之前之后通过装备可以提供事务、
日志、安全等服务。
模板:
父类提供抽象方法及具体方法,具体方法调用抽象方法,
抽象方法由子类实现,向客户端公开的子类,客户端通过
父类的具体方法调用子类实现的抽象方法,为子类
提供服务。
装饰:
有三个角色,通用接口,本原,装饰,将通用接口聚集到装饰中,
装饰可以有很多子类,可以将本原或装饰通过构造子注入到另一
个装饰中,将多个装饰的功能随意组合。
轻量级的框架
jsp&servlet&dao&jdbc:
用的model2,速度是最快的,开发效率不高。
M:
facade&dao&jdbc
C:
serlvet
V:
jsp
通过jsp将请求发给servlet,servlet通过
FacadeFactory产生具体的Facade返回一个IFacade接口,通过IFacade接口
调用Facade的具体方法。
Facade通过dao的抽象工厂产生具体的工厂,通过具体的工厂产生具体的dao,
返回dao接口给业务层。
Facade执行完后将结果返回给servlet,servlet转发到下一个页面。
Servlet用了模板模式可以提供错误处理、事务、页面跳转的服务。
struts&dao&hibernate:
速度较快,因为我们要自己实现工厂,并不是所有的一切
都是返射,相对spring来说速度更快一些。
struts:
mvc,请求处理过程
用一个模板模式提供通用错误、事务、跳转服务。
将IFacade接口作业其属性,通过FacadeFactory工厂产生具体的Facade
返回一个Facade接口。
facade
IFacade接口
Facade实现类
FacadeFactory:
facade工厂
dao接口作为Facade的属性,通过AbstractFactory调用具体的DaoFactory
产生具体的dao实例,返回dao接口。
dao:
dao
daoImpl
DaoFactory:
产生daoImpl实例,返回dao接口
AbstractFactory:
通过返射、工厂、单例产生具体的DaoFactory,返回
AbstractFactroy给业务层,因为具体的工厂继承于抽象的工厂,
客户端调用的还是具体工厂方法。
hibernate
核心类
核配置文件
struts&spring&hibernate/ibatis:
这是当前最通用、最快速、藕合度最低的开发方式
但也有一个问题spring一切都是返射,速度慢。
struts/hibenate/ibatis要解析xml文件、要大量用到返射,所以速度慢。
一般适合于中小型系统(并发量<500),大型系统有些不适合需要调整。
struts已是MVC
spring是一个超级工厂,在spring中配置的都是实现类,在代码中得到都是接口。
hibenate/ibatis是o/rMapping
框架结构:
struts:
mvc
请求处理过程
在spring中加入bean标签,配置具体的action,通过set方法将Facade代理
注入到action的IFcade接口中。
Facade
IFacade接口
Facade实现类
在applicationContext.xml配置具体的Facade类,在配置Facade的Aop服务时,
先配置抽象代理AbstractProxy其类是TransactionProxyFactoryBean,说明装备
TransactionManager,说明连接点TransactionAttributes。
再配置具体的
代理,继承于AbstractProxy,通过target指向真实的对象。
通过set方法注入将具体的Dao注入到Facade的Dao接口属性中。
Dao
dao接口
dao的实现extendsHibernateDaoSupport/SqlMapClientSupport
在applicationContext.xml中配置具体的dao,向Facade返回dao接口。
hibernate
在applicationContext.xml中配置dataSource、sessionFactory,
通过set方法注入将sessionFactory注入到dao实现类中。
ibatis:
在applicationContext.xml中配置dataSource、sqlMapClient,
通过set方法注入将sqlMapClient注入到dao实现类中。
3、详细设计
对于开发能力比较强的团队,可以不做详细设计。
时序图:
作用:
找类、找方法、验证系统的正确性
元素:
纵轴:
时间、对象的生命周期
横轴:
说明对象与对象的交互
4、编码(25-30%)
5、测试(10%)
uml
ooa与ood的区别?
ooa:
面向对象的分析,根据客户的业务找业务实体,与具体的技术无关,客户可以看懂。
ood:
面向对象的设计,是ooa的全集,与具体的技术框架相结合进行设计。
面向过程与面向对象的区别?
面向过程:
1、现实世界是对象,其在分析过程中是对象,
在设计过程不是对象而是方法与方法之间的调用,
容易与现实脱离,容易出错。
2、因为是方法与方法之间的调用,重用性不高,
无法达到宏观层次上的控制。
3、开发难、维护难、可扩展性、重用性差。
面向对象:
1、现实世界是对象,其在分析过程中是对象,
在设计过程还是对象
分析设计与现实接近,降低了开发的难度。
2、继承可以让概念在宏观层次重用,当层与层之间通过
接口或抽象类调用时,他们所依赖的不再是具体的实现
细节,而是宏观商业逻辑即接口、抽象类,具体的实现
是可以随时被替换的。
3、技术在不断的更新,但业务变化较少,
业务实体可以很好的重用。
3、开方方便、好维护、好扩展
什么是模型?
现实的浓缩。
模型的作用?
1、便于分析、认识世界
2、便于存档、沟通
3、便于决策。
模型的原则?
1、模型好坏决写系统的成败。
2、与现实越接近说明模型越正确。
3、模型不止一个,而是多个,它从不同的侧面说明现实的世界。
4、根据不同人的需求,模型有不同的实现细节。
九大图形:
类图:
贯穿软件开发的所有过程,从需求到整体到详细到开发到测试,
是uml中最重要的图形,在ooa阶段中找业务实体,在ood阶段中
将业务实体与具体技术结合起来设计操作类及实体类
use-case:
是系统分析员与客户沟通的桥梁
时序:
说明在时间点上类与类之间的交互,主要用于整体及详细设计阶段,
作用是找类、找方法、验证系统的正确性
活动图(流程图):
用于需求阶段说明具体业务的流程
协作图:
说明类与类之间的交互,与时序图功能类似,但没有时间的概念,
通过序号说明交互顺序。
状态:
一个对象在不同方法的操作下状态的改变。
元素:
对象
方法
构件:
说明组件与组件或层与层之间的依赖关系。
元素:
组件
部署:
说明主机与主机之间的关系,找出系统运行的瓶颈。
元素:
主机
对象图:
不般不画
活动图作用及元素?
主要用在需求分析阶段,说明某一个用例的业务流程。
元素如下:
开始
结束
状态
处理(动作)
判断
分支:
一个操作转化为多个操作
汇集:
多个操作转化为一个操作
泳道:
说明不同角色所做的工作
软件开发的过程模型:
1、瀑布模型
前一个阶段结束并审核通过后才可以开始下一个阶段
缺:
不灵活、不适合大型、需求模糊的系统
2、螺旋模型:
迭代式,每一次迭代要将软件开发的流程再走一遍。
优:
灵活、适合大型、需求模糊的系统
缺:
太灵活无法保证质量
3、统一软件开发流程(rup):
有四大阶段六大流程,每一个阶段
都会执行六大流程。
每一个阶段所执行流程的侧重点不一样。
四大阶段:
启动:
侧重于需求
精化:
设计
构建:
编码
产品化:
部署
六大流程:
业务建模:
找业务实体及业务实体之间的关系
需求:
分析设计
实施:
编码
测试:
部署
4、极限编程(xp):
侧重点:
1、有效的沟通胜过合同谈判
2、高质量的代码胜过面面俱到的文档
3、成对开发
4、迭代
jsp&servlet
1、jdbc中的核心类
Class.forName("com.microsoft.");//注册驱动
DriverManager:
得到连接
Connectioncon=DriverManager.