发表者付:
做软件到一定层次了,就要考虑到设计了,设计了很久,就是不系统,系统的设计需要一个记录,记录就用文档,那么对项目所有包括技术上的设计都记录下来,我们就可以理解为软件的概要设计了。
在需求明确、准备开始编码之前,要做概要设计,而详细设计可能大部分公司没有做,有做的也大部分是和编码同步进行,或者在编码之后。因此,对大部分的公司来说,概要设计文档是唯一的设计文档,对后面的开发、测试、实施、维护工作起到关键性的影响。
一、问题的提出
概要设计写什么?概要设计怎么做?
如何判断设计的模块是完整的?
为什么说设计阶段过于重视业务流程是个误区?
以需求分析文档还是以概要设计文档来评估开发工作量、指导开发计划准确?
结构化好还是面向对象好?
以上问题的答案请在文章中找。
二、概要设计的目的
将软件系统需求转换为未来系统的设计;
逐步开发强壮的系统构架;
使设计适合于实施环境,为提高性能而进行设计;
结构应该被分解为模块和库。
三、概要设计的任务
制定规范:代码体系、接口规约、命名规则。这是项目小组今后共同作战的基础,有了开发规范和程序模块之间和项目成员彼此之间的接口规则、方式方法,大家就有了共同的工作语言、共同的工作平台,使整个软件开发工作可以协调有序地进行。
总体结构设计:
功能(加工)->模块:每个功能用那些模块实现,保证每个功能都有相应的模块来实现;
模块层次结构:某个角度的软件框架视图;
模块间的调用关系:模块间的接口的总体描述;
模块间的接口:传递的信息及其结构;
处理方式设计:满足功能和性能的算法
用户界面设计;
数据结构设计:
详细的数据结构:表、索引、文件;
算法相关逻辑数据结构及其操作;
上述操作的程序模块说明(在前台?在后台?用视图?用过程?······)
接口控制表的数据结构和使用规则
其他性能设计。
四、概要设计写什么
结构化软件设计说明书结构(因篇幅有限和过时嫌疑,在此不作过多解释)
任务:目标、环境、需求、局限; Continue reading '概要设计怎么写(你想成为软件设计师吗) [转]'
成功的管理者和不成功的管理者之间的主要差别就是对业务的参与程度。事实证明,对业务参与度越深,就越能做出明智的决策。
--<<执行>>
Powered by MoFire
一个有礼貌的面试官代表了一个公司的形象,同时也能折射出这个公司对人(无论是否人才)的态度.所以面试官的礼仪和精神状态非常重要. 以下列一些基本的注意事项.
- 见面握手寒暄,聊聊诸如天气,久等这样的话题让对方心情尽可能轻松一些。
- 面试开始,如果之前没有水,要倒上一杯水。面试官自我介绍,还是让面试者没有级别感,放松。只有在放松的情况下才能真正全面的考察一个人。
- 面试过程要始终看着对方 不要埋头/皱眉头/大笑/冷场. 如果时间允许,可以在面试者回答完问题后,告诉他正确答案.
- 面试结束握手道别。并亲自把对方引送到门口.
Powered by MoFire
偏方,垂直,手机客户端,搜索,养生,web服务
Powered by MoFire
很多时候,我们看一个人,当他的智商远远高于他的智慧的时候,反而会有一种自身智慧高于这个人的错觉.误以为,智商很高的人智慧就会比自己低.
有的人, 只需要告诉他做什么,就可以自己去想办法完成.
有的人,必须要坐在他旁边,无论是不是提供指导,才能把事情做好.但这里又有两种,一种人不喜欢别人坐在旁边,以后有可能会成为第一种人,还有一种很喜欢别人坐在他旁边.因为这样他自己就不需要动脑子了,这种人可能会变成下面那种人.
有的人,就算是坐在他旁边,也无法把事情做好.
以下摘自<pojo in action>备查. 算是比较有用的东西,以后可能用到.
Using an AOP interceptor to retry transactions
A Spring application can use a custom AOP interceptor to catch the Concurrency-
FailureException and automatically retry the transaction. Here is a custom
Spring AOP interceptor that does this:
public class TransactionRetryInterceptor
implements MethodInterceptor {
protected int maxRetryCount = 3;
public void setMaxRetryCount(int maxRetryCount) {
this.maxRetryCount = maxRetryCount;
}
public Object invoke(MethodInvocation invocation)
throws Throwable {
int retryCount = 0;
while (true)
try {
ReflectiveMethodInvocation inv =
(ReflectiveMethodInvocation) invocation;
MethodInvocation anotherInvocation = inv.invocableClone();
return anotherInvocation.proceed();
} catch (ConcurrencyFailureException e) {
if (retryCount++ > maxRetryCount)
throw e;
else {
continue;
}
}
}
}
This class has a maxRetryCount property whose default value is 3. The invoke()
method catches the ConcurrencyFailureException and loops at most maxRetry-
Count times, retrying the transaction. Because proceed() can only be called once,
invoke() clones the MethodInvocation before calling it. The TransactionRetry-
Interceptor is a good example of the power and flexibility of the Spring framework.
今天用快钱给手机充值时一共收到了4条短信,一条是快钱的收单确认,一条银行的扣款确认,一条手机运营商收款确认,还有一条快钱订单完成确认.
现在貌似这种现象越来越常见了,可能是因为web2.0(or 3.0),使得网站(或者服务提供商)之间的交互变得越来越重要和常用,而各方都需要对最终用户"有交代", 这种不停的交代就造成了"确认"信息的过载,在上面的例子中就是一大堆的短信.
也许避免这种现象,也是下一代"互联"集成要解决的问题.
上面的例子如果再进一步, 比如我要在网游里即时对游戏账户充值,使用的是手机余额,而手机号码又恰好绑定了第三方支付的直付(不是支付)平台,由于绑定了多个银行账户,而其中一个又余额不足,直付平台需要分别扣取.这里牵涉到4方协作完成这个简单的任务. 这个场景例子有点不太恰当,但是确实可以描述当前互联网集成中出现的一点问题.