0%

一块大部头,是关于软件工程的一本理论联系实际的指导性质的书,本书最特别的地方是从头到尾都是以一个项目来作为案例,让读者容易理解各个环节之间的来龙去脉。还是不错的一本书,适合有一定基础的读者,相当于从实际案例出发,梳理了一遍整个知识体系。
按照作者的说法,需求开发告诉客户想干什么,架构设计阶段从软件的视角出发,架构了软件对象(或类之间的关系),详细架构设计阶段是根据某个类设计了其具体的设计实现,比如说:每个类的方法体、输入和输出、数据结构和算法、对数据表的操作以及状态改变。
读书笔记脑图下载

阅读全文 »

个人理解:CMM 1级是无序状态;CMM 2级是有知识沉淀(文档话、模板化),达到可重用;CMM3级是标准化,有标准指导;CMM4 是管理级,是定量化的管理;CMM5 是进化级,能够反思。

大型软件的开发需要很好的管理与组织能力,来保证软件开发的质量。从软件工程的角度来说,不存在没有Bug的软件,但尽量减少致命性的Bug是所有软件开发组织者所追求的。那么如何衡量一个组织具备了大型软件的开发能力呢?CMM提供了一种衡量的方法,尤其是CMM的认证已经成为国际上认可的软件能力标签,所以很多大的企业都组织通过该认证,提供自己的知名度,提升自己在客户心目重点形象。

阅读全文 »

SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>

引子:深入浅出理解索引结构

实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:
其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。

阅读全文 »

静态测试和动态测试—两个重要的测试技术之间的差异

测试用例设计白皮书
使用allpairs自动设计组合测试用例
软件测试缺陷密度的计算方法

一、软件测试概念

什么是软件测试?百度百科上,软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
其实说直白一点,就是找bug。

二、软件测试目的

软件测试的目的,就是基于概念而言的。其目的大概分为以下几种:

  1. 发现软件的缺陷
  2. 提高软件质量
  3. 软件开发,测试过程改进
  4. 评估软件质量
  5. 降低公司对软件的维护成本
  6. 降低软件发布后,对公司负面影响的风险
阅读全文 »

最流行的六大数据模型工具
Model confusion : Domain Model & E-R Model 领域模型与E-R模型区别(转载)
转自:http://www.cnblogs.com/evanyuan/archive/2005/10/27/263366.html
前段时间看了DDD,最近在做一个项目的时候Leader要求先出E-R Model,我不是很清楚Domain Model和E-R Model具体的关系和区别。
E-R Model关注的是对象的实体和关系,是Data Modeling的一种方式,建模时并不考虑Entity的行为,在E-R概念模型的基础上可以建立relational data model及physical data model,我不太确认E-R model driven是否就是数据驱动的一种设计流程。
而Domain model driven同样是分析抽象实体并建立实体的关系的过程,同时需要建模实体的职责(对象的行为),以面向对象的手法建立领域层的模型。

阅读全文 »

一、4+1视图来历

1995年,Philippe Kruchten在《IEEE Software》上发表了题为《The 4+1 View Model of Architecture》的论文,引起了业界的极大关注。
后来,Philippe Kruchten加入Rational,他的4+1视图方法演变为著名的、为许多架构师所熟知的“RUP 4+1视图方法”(如下图所示)。
RUP 4+1视图的说法是:逻辑架构、实现架构、进程架构、部署架构。

概括而言:
逻辑视图(Logical View),设计的对象模型。
进程视图(Process View),捕捉设计的并发和同步特征。
部署视图(Deployment View),描述了软件到硬件的映射,反映了分布式特性。
实现视图(Implementation View),描述了在开发环境中软件的静态组织结构。
用例视图(Use-Case View),该视图是其他视图的冗余(因此"+1")。

阅读全文 »

Facade外观模式,是一种结构型模式,它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。在这里我想举一个例子:比如,现在有一辆汽车,我们(客户程序)要启动它,那我们就要发动引擎(子系统1),使四个车轮(子系统2)转动。但是实际中我们并不需要用手推动车轮使其转动,我们踩下油门,此时汽车再根据一些其他的操作使车轮转动。油门就好比系统给我们留下的接口,不论汽车是以何种方式转动车轮,车轮变化成什么牌子的,我们要开走汽车所要做的还是踩下油门。
GoF《设计模式》中说道:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

阅读全文 »

干了很久的项目都是使用SSH框架的,现在团队有位搞美工的美女突然想要搞java了,让我做下指导并打个基本的框架,需要使用最基本的架构,这样说来那SSH只能滚得远远的了;
最基本的架构也就jsp+servlet+javabean,但心里感觉还是不爽,搞这个不是纯属浪费时间啊。后来一想,对了我自己可以不用框架来设计出一个简单的mvc架构来实现框架带来的分层效果:
这里我就以登录为例子来讲解下,讲解的顺序为v--->c---->m

阅读全文 »

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
类型:创建类模式
类图

阅读全文 »

设计模式ServletJSPMVCWeb
前端时间学习了 MVC 模式,现在来谈谈自己对MVC的认识:
MVC是三个单词的缩写:M,Model(模型);V,View( 视图 ),C,Control(控制)。
MVC模式的目的就是实现Web系统的职能分工,

  • Model层:实现系统的业务逻辑,即javaBean部分
  • View层:负责与用户交互,即在界面上展示数据对象给用户,即html,jsp
  • Control层:Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作,当然就是Servlet的职责了
    阅读全文 »