📄 项目1.txt
字号:
项目:
1、软件开发的过程:在面试时说明自己参与了某个项目的某个模块从需求到
设计到开发的所有过程。
1、需求分析(25-30%):一定客户签字认可,在合同要说明验收时以需求说明书的内容为准,
若有改动,需与商务另行商议。
成果:
需求说明书,具体内容如下:
demo(界面原型):需求的可视化
需求特征列表:简要的说明系统的功能,确定优先级及风险度
用例图:说明系统整体的功能
用例说明:
1、用流程图(活动图)说明
2、写用例说明文档,其有六大元素
功能描述
参与者
前置条件
后置条件
基本流
扩展流
2、整体设计(20-30%)
1、分析业务流程
bbs
登陆注册
浏览、发新帖、回复
短消息
用户管理
版块管理
帖子管理
2、根据业务设计业务实体
讨论区(1) 版块(0..n)
版块(1) 主帖(0..n)
主帖(1) 回帖(0..n)
用户(1) 帖子(主帖、回帖)(0..n)
用户(1) 消息(0..n)
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/r Mapping
框架结构:
struts:
mvc
请求处理过程
在spring中加入bean标签,配置具体的action,通过set方法将Facade代理
注入到action的IFcade接口中。
Facade
IFacade接口
Facade实现类
在applicationContext.xml配置具体的Facade类,在配置Facade的Aop服务时,
先配置抽象代理AbstractProxy其是TransactionProxyFactoryBean,说明装备
TransactionManager,说明连接点TransactionAttributes。再配置具体的
代理,继承于AbstractProxy,指向真实的对象。通过set方法注入将具体的
Dao注入到Facade的Dao接口属性中。
Dao
dao接口
dao的实现 extends HibernateDaoSupport/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%)
2、ooa与ood的区别
ooa:面向对象的分析,根据客户的业务找业务实体,与具体的技术无关,客户可以看懂。
ood:面向对象的设计,是ooa的全集,与具体的技术框架相结合进行设计。
3、面向过程与面向对象的区别
面向过程:
1、现实世界是对象,其在分析过程中是对象,
在设计过程不是对象而是方法与方法之间的调用,
容易与现实脱离,容易出错。
2、因为是方法与方法之间的调用,重用性不高,
无法达到宏观层次上的控制。
3、开发难、维护难、可扩展性差。
面向对象:
1、现实世界是对象,其在分析过程中是对象,
在设计过程还是对象
分析设计与现实接近,降低了开发的难度。
2、继承可以让概念在宏观层次重用,当层与层之间通过
接口或抽象类调用时,他们所依赖的不再是具体的实现
细节,而是宏观商业逻辑即接口、抽象类,具体的实现
是可以随时被替换的。
3、开方方便、好维护、好扩展
4、什么是模型
现实的浓缩。
5、模型的作用
1、便于分析、认识世界
2、便于存档、沟通
3、便于决策。
6、模型的原则
1、模型好坏决写系统的成败。
2、与现实越接近说明模型越正确。
3、模型不止一个,而是多个,它从不同的侧面说明现实的世界。
4、根据不同人的需求,模型有不同的实现细节。
7、活动图:
主要用在需求分析阶段,说明某一个用例的业务流程。
元素如下:
开始
结束
状态
处理(动作)
判断
分支
汇集
泳道:说明不同角色所做的工作
8、类图
9、use-case图
10、时序图:在给定的时间内,对象与对象的之间交互
应用在详细设计阶段,通过类与类之间的交互
找类、找方法、验证系统的正确性。
元素:
横轴:
类与类之间的交互
纵轴:
时间
11、协作图:对象与对象之间的交互,与时序图作用类似,但
没有进间的概念,通过序号说明先后顺序。
元素:
对象
交互
12、状态图:一个对象在不同方法的作用下状态的改变,
适合于面向过程开发。
13、构件图:说明组件与组件或层与层之间的依赖关系。
14、部署图:在分布式系统中说明各主机之间的关系,找出系统运行的
瓶颈。
元素:
节点:一个主机代表一个节点。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -