<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>hackxboy1985的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=hackxboy1985</link>
<description>hackxboy1985的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[软件测试的经典书籍]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20429</link>
<author>hackxboy1985</author>
<pubDate>2006/11/30 18:03:21</pubDate>
<description><![CDATA[<STRONG></STRONG>
<DIV style="FONT-SIZE: 12px">下面提到的书都是我听别人介绍的比较多的，如果谁有ebook请一定上传，好东西要大家分享~<BR><BR>《软件测试方法与技术概论》<BR>《软件测试方法与应用》<BR>〈Software Testing〉&nbsp; &nbsp;&nbsp;&nbsp;Sams RonPatton(美)&nbsp;&nbsp;[机械工程出版社] <BR>〈实用软件测试指南〉&nbsp; &nbsp;&nbsp;&nbsp;[清华大学出版社]<BR>〈软件测试经验与教训〉<BR>〈计算机软件测试技术〉<BR>〈自动化测试的引入，管理与实施〉 Elfriede Dustin [清华大学出版社]&nbsp;&nbsp;推荐e文原版<BR>〈有效软件测试〉&nbsp;&nbsp;Elfriede Dustin [清华大学出版社]&nbsp;&nbsp;新语译 <BR>〈软件测试〉 Paul.C.Jorgensen CRC [机械工程出版社]<BR>〈软件测试自动化〉&nbsp;&nbsp;Paniel J.Moslsy [机械工程出版社]&nbsp; &nbsp;邓波译 中文翻译的不错</DIV>
<DIV style="FONT-SIZE: 12px"><STRONG>《The Art of Software Testing》</STRONG>很畅销的一本书</DIV>
<DIV style="FONT-SIZE: 12px">
<DIV style="FONT-SIZE: 12px">《软件测试求生法则》清华大学出版社 William E.Perry, RandallW.Rice<BR>　　作者积累数十年软件开发和测试经验，揭示出软件测试面临的几大人际挑战，包括获得软件培训、与开发人员保持良好关系、争取管理人员的支持、与客户保持交流、满足不断变化的需求以及如何学会说不，并且通过具体的案例讲述了解决这些挑战的策略性方法。</DIV></DIV>
<DIV style="FONT-SIZE: 12px">&nbsp;</DIV>]]></description>
</item><item>
<title><![CDATA[Mercury QuickTest Professional 8.2]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20428</link>
<author>hackxboy1985</author>
<pubDate>2006/11/30 18:00:44</pubDate>
<description><![CDATA[
<TABLE height=20 width=590 align=center border=0>
<TBODY>
<TR>
<TH width=514>
<DIV class=style48 align=center>Mercury QuickTest Professional 8.2<BR>培训大纲</DIV></TH></TR>
<TR>
<TD><SPAN class=style30><STRONG>Mercury QuickTest Professional 8.2 自动化测试工具培训</STRONG></SPAN></TD></TR>
<TR>
<TD><SPAN class=style38><STRONG><FONT size=2>第一部分：基本信息</FONT></STRONG></SPAN></TD></TR>
<TR>
<TD>
<TABLE borderColor=#000000 cellSpacing=0 cellPadding=2 width="80%" border=1>
<TBODY>
<TR>
<TD width="15%"><STRONG>课程编号</STRONG> </TD>
<TD width="20%">GJ-1</TD>
<TD width="16%"><STRONG>课程名字</STRONG> </TD>
<TD colSpan=3>
<P>Mercury QuickTestProfessional 8.2自动化测试工具培训 </P></TD></TR>
<TR>
<TD vAlign=top><STRONG>课程类型</STRONG> </TD>
<TD>
<P>□ 概念类<BR>□ 流程类<BR>□ 方法类<BR>■ 工具类<BR>■ 实践类 </P></TD>
<TD vAlign=top><STRONG>课程难度</STRONG> </TD>
<TD vAlign=top width="16%">
<P>■ 高<BR>□ 中<BR>□ 低 </P></TD>
<TD vAlign=top width="16%"><STRONG>课程级别</STRONG> </TD>
<TD vAlign=top width="17%">
<P>■ 专业级<BR>□ 专家级 </P></TD></TR>
<TR>
<TD><STRONG>课程介绍</STRONG> </TD>
<TD colSpan=5>介绍QuickTestProfessional自动化测试工具软件功能和使用该工具做自动化测试所使用的相关技术</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD><SPAN class=style38><STRONG><FONT size=2>第二部分：课程设计</FONT></STRONG></SPAN></TD></TR>
<TR>
<TD><STRONG>1、 自动化测试（0.5小时）</STRONG><BR>&nbsp;&nbsp;a) 对比自动化测试和手工测试的特点<BR>&nbsp;&nbsp;b) 自动化测试的优点<BR>&nbsp;&nbsp;c) 自动化测试缺点<BR><STRONG>2、 QuickTestPro自动化测试工具实现原理(1小时)</STRONG><BR>&nbsp;&nbsp;a) 自动化测试工具横向对比<BR>&nbsp;&nbsp;b) GUI识别对象原理<BR>&nbsp;&nbsp;c) 自动化测试工具生成脚本原理<BR>&nbsp;&nbsp;d) 分析QuickTestPro实现框架<BR><STRONG>3、 QuickTestPro 8.2 介绍 （3小时）</STRONG><BR>&nbsp;&nbsp;a) QuickTestPro 8.2 支持环境<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. Add_in的实质<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. Add_in的运用<BR>&nbsp;&nbsp;b) QuickTestPro 8.2 界面介绍<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 工具栏<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 菜单栏<BR>&nbsp;&nbsp;&nbsp;&nbsp;iii. 结合界面快速开发脚本<BR>&nbsp;&nbsp;c) QuickTestPro 8.2 录制原理<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. Hook实现的原理<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 事件<BR>&nbsp;&nbsp;d) QuickTestPro 8.2 定义变量定义<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 为什么定义<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. VBScript语言的特点<BR>&nbsp;&nbsp;&nbsp;&nbsp;iii. 脚本的维护<BR>&nbsp;&nbsp;e) QuickTestPro 8.2 定义脚本模板<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 定义模版<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 创建模版<BR><STRONG>4、 QuickTestPro 8.2 测试开发流程 （6小时）</STRONG><BR>&nbsp;&nbsp;a) 录制脚本准备<BR>&nbsp;&nbsp;&nbsp;&nbsp;i.录制选项设置<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii.录制手工操作<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;业务流程的限制<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GUI对象的限制<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;工具的的限制<BR>&nbsp;&nbsp;&nbsp;&nbsp;iii.对象仓库<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对象仓库的实质<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对象仓库的维护<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对象仓库的替代方案<BR>&nbsp;&nbsp;&nbsp;&nbsp;iiii.视图<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关键字视图<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;专家视图<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;视图混合运用快速开发脚本<BR>&nbsp;&nbsp;b) 录制脚本<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 测试环境<BR>&nbsp;&nbsp;c) 增强脚本<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 验证点<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 脚本参数化<BR>&nbsp;&nbsp;&nbsp;&nbsp;iii. 同步点<BR>&nbsp;&nbsp;&nbsp;&nbsp;iv. 错误处理<BR>&nbsp;&nbsp;d) 调试脚本<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 语句控制调试<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 快捷键调试<BR>&nbsp;&nbsp;e) 回归测试<BR>&nbsp;&nbsp;f) 分析测试结果<BR>&nbsp;&nbsp;g) 报告缺陷<BR><STRONG>5、 QuickTestPro 8.2 扩展脚本 （6小时）</STRONG><BR>&nbsp;&nbsp;a) 扩展脚本（API）<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. API讲解<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 脚本调用API<BR>&nbsp;&nbsp;b) 扩展脚本（DLL）<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. DLL讲解<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 利用多种开发工具开发DLL<BR>&nbsp;&nbsp;&nbsp;&nbsp;iii. 脚本调用DLL<BR>&nbsp;&nbsp;c) 扩展脚本（引用对象）<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 实际测试环境<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 扩展对象介绍<BR>&nbsp;&nbsp;&nbsp;&nbsp;iii. 实例解决方案<BR>&nbsp;&nbsp;d) 描述性编程<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 测试环境<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 如何应用<BR><STRONG>6、 QuickTestPro 8.2 &amp; Mercury其他工具（3小时）</STRONG><BR>&nbsp;&nbsp;a) QuickTestPro 8.2 &amp; Quality Center<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 维护脚本<BR>&nbsp;&nbsp;b) QuickTestPro 8.2 &amp; WinRunner<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. WinRunner与QuickTestPro的异同<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. 脚本相互调用的用处<BR>&nbsp;&nbsp;c) QuickTestPro 8.2&amp; LoadRunner<BR>&nbsp;&nbsp;&nbsp;&nbsp;i. 性能测试<BR>&nbsp;&nbsp;&nbsp;&nbsp;ii. GUI VU脚本开发 <BR><STRONG>7、 QuickTestPro 8.2 建议 （1.5小时）</STRONG><BR>&nbsp;&nbsp;a) QuickTestPro开发脚本建议流程<BR>&nbsp;&nbsp;b) 正则表达式<BR>&nbsp;&nbsp;c) 组织测试脚本<BR>&nbsp;&nbsp;d) 恢复场景管理<BR></TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[C/C++ 程序设计员应聘常见面试试题深入剖析]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20316</link>
<author>hackxboy1985</author>
<pubDate>2006/11/26 18:20:28</pubDate>
<description><![CDATA[
<DIV class=postcontent><STRONG>1.引言</STRONG> <BR><BR>　　本文的写作目的并不在于提供C/C++程序员求职面试指导，而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛，部分试题解答也参考了网友的意见。<BR><BR>　　许多面试题看似简单，却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度，我们能真正写好一个strcpy函数吗？我们都觉得自己能，可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到strcpy函数从2分到10分解答的例子，看看自己属于什么样的层次。此外，还有一些面试题考查面试者敏捷的思维能力。 <BR><BR>　　分析这些面试题，本身包含很强的趣味性；而作为一名研发人员，通过对这些面试题的深入剖析则可进一步增强自身的内功。<BR><BR><STRONG>　　2.找错题</STRONG><BR><BR>　　试题1：<BR><BR><CODE>void test1()<BR>{<BR>　char string[10];<BR>　char* str1 = "0123456789";<BR>　strcpy( string, str1 );<BR>}</CODE><BR>　　试题2：<BR><BR><CODE>void test2()<BR>{<BR>　char string[10], str1[10];<BR>　int i;<BR>　for(i=0; i&lt;10; i++)<BR>　{<BR>　　str1[i] = 'a';<BR>　}<BR>　strcpy( string, str1 );<BR>}</CODE><BR>　　试题3：<BR><BR><CODE>void test3(char* str1)<BR>{<BR>　char string[10];<BR>　if( strlen( str1 ) &lt;= 10 )<BR>　{<BR>　　strcpy( string, str1 );<BR>　}<BR>}</CODE><BR>　　解答：<BR><BR>　　试题1字符串str1需要11个字节才能存放下（包括末尾的’\0’），而string只有10个字节的空间，strcpy会导致数组越界；<BR><BR>　　对试题2，如果面试者指出字符数组str1不能在数组内结束可以给3分；如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分，在此基础上指出库函数strcpy工作方式的给10分；<BR><BR>　　对试题3，if(strlen(str1) &lt;= 10)应改为if(strlen(str1) &lt; 10)，因为strlen的结果未统计’\0’所占用的1个字节。<BR><BR>　　剖析：<BR><BR>　　考查对基本功的掌握：<BR><BR>　　(1)字符串以’\0’结尾；<BR><BR>　　(2)对数组越界把握的敏感度；<BR><BR>　　(3)库函数strcpy的工作方式，如果编写一个标准strcpy函数的总分值为10，下面给出几个不同得分的答案：<BR><BR>　　2分<BR><BR><CODE>void strcpy( char *strDest, char *strSrc )<BR>{<BR>　 while( (*strDest++ = * strSrc++) != ‘\0’ );<BR>}</CODE><BR>　　4分<BR><BR><CODE>void strcpy( char *strDest, const char *strSrc ) <BR>//将源字符串加const，表明其为输入参数，加2分<BR>{<BR>　 while( (*strDest++ = * strSrc++) != ‘\0’ );<BR>}</CODE><BR>　　7分<BR><BR><CODE>void strcpy(char *strDest, const char *strSrc) <BR>{<BR>　//对源地址和目的地址加非0断言，加3分<BR>　assert( (strDest != NULL) &amp;&amp; (strSrc != NULL) );<BR>　while( (*strDest++ = * strSrc++) != ‘\0’ );<BR>}</CODE><BR>　　10分<BR><BR><CODE>//为了实现链式操作，将目的地址返回，加3分！<BR><BR>char * strcpy( char *strDest, const char *strSrc ) <BR>{<BR>　assert( (strDest != NULL) &amp;&amp; (strSrc != NULL) );<BR>　char *address = strDest; <BR>　while( (*strDest++ = * strSrc++) != ‘\0’ ); <BR>　　return address;<BR>}</CODE><BR>　　从2分到10分的几个答案我们可以清楚的看到，小小的strcpy竟然暗藏着这么多玄机，真不是盖的！需要多么扎实的基本功才能写一个完美的strcpy啊！<BR><BR>　　(4)对strlen的掌握，它没有包括字符串末尾的'\0'。<BR><BR>　　读者看了不同分值的strcpy版本，应该也可以写出一个10分的strlen函数了，完美的版本为： int strlen( const char *str ) //输入参数const<BR><BR><CODE>{<BR>　assert( strt != NULL ); //断言字符串地址非0<BR>　int len;<BR>　while( (*str++) != '\0' ) <BR>　{ <BR>　　len++; <BR>　} <BR>　return len;<BR>}</CODE><BR>　　试题4：<BR><BR><CODE>void GetMemory( char *p )<BR>{<BR>　p = (char *) malloc( 100 );<BR>}<BR><BR>void Test( void ) <BR>{<BR>　char *str = NULL;<BR>　GetMemory( str ); <BR>　strcpy( str, "hello world" );<BR>　printf( str );<BR>}</CODE><BR>　　试题5：<BR><BR><CODE>char *GetMemory( void )<BR>{ <BR>　char p[] = "hello world"; <BR>　return p; <BR>}<BR><BR>void Test( void )<BR>{ <BR>　char *str = NULL; <BR>　str = GetMemory(); <BR>　printf( str ); <BR>}</CODE><BR>　　试题6：<BR><BR><CODE>void GetMemory( char **p, int num )<BR>{<BR>　*p = (char *) malloc( num );<BR>}<BR><BR>void Test( void )<BR>{<BR>　char *str = NULL;<BR>　GetMemory( &amp;str, 100 );<BR>　strcpy( str, "hello" ); <BR>　printf( str ); <BR>}</CODE><BR>　　试题7：<BR><BR><CODE>void Test( void )<BR>{<BR>　char *str = (char *) malloc( 100 );<BR>　strcpy( str, "hello" );<BR>　free( str ); <BR>　... //省略的其它语句<BR>}</CODE><BR>　　解答：<BR><BR>　　试题4传入中GetMemory( char *p )函数的形参为字符串指针，在函数内部修改形参并不能真正的改变传入形参的值，执行完<BR><BR><CODE>char *str = NULL;<BR>GetMemory( str ); </CODE><BR>　　后的str仍然为NULL；<BR><BR>　　试题5中<BR><BR><CODE>char p[] = "hello world"; <BR>return p; </CODE><BR>　　的p[]数组为函数内的局部自动变量，在函数返回后，内存已经被释放。这是许多程序员常犯的错误，其根源在于不理解变量的生存期。<BR><BR>　　试题6的GetMemory避免了试题4的问题，传入GetMemory的参数为字符串指针的指针，但是在GetMemory中执行申请内存及赋值语句<BR><BR><CODE>*p = (char *) malloc( num );</CODE><BR>　　后未判断内存是否申请成功，应加上：<BR><BR><CODE>if ( *p == NULL )<BR>{<BR>　...//进行申请内存失败处理<BR>}</CODE><BR>　　试题7存在与试题6同样的问题，在执行<BR><BR><CODE>char *str = (char *) malloc(100);</CODE><BR>　　后未进行内存是否申请成功的判断；另外，在free(str)后未置str为空，导致可能变成一个“野”指针，应加上：<BR><BR><CODE>str = NULL;</CODE><BR>　　试题6的Test函数中也未对malloc的内存进行释放。<BR><BR>　　剖析：<BR><BR>　　试题4～7考查面试者对内存操作的理解程度，基本功扎实的面试者一般都能正确的回答其中50~60的错误。但是要完全解答正确，却也绝非易事。<BR><BR>　　对内存操作的考查主要集中在：<BR><BR>　　（1）指针的理解；<BR><BR>　　（2）变量的生存期及作用范围；<BR><BR>　　（3）良好的动态内存申请和释放习惯。<BR><BR>　　再看看下面的一段程序有什么错误：<BR><BR><CODE>swap( int* p1,int* p2 )<BR>{<BR>　int *p;<BR>　*p = *p1;<BR>　*p1 = *p2;<BR>　*p2 = *p;<BR>}</CODE><BR>　　在swap函数中，p是一个“野”指针，有可能指向系统区，导致程序运行的崩溃。在VC++中DEBUG运行时提示错误“Access Violation”。该程序应该改为：<BR><BR><CODE>swap( int* p1,int* p2 )<BR>{<BR>　int p;<BR>　p = *p1;<BR>　*p1 = *p2;<BR>　*p2 = p;<BR>}</CODE> </DIV>]]></description>
</item><item>
<title><![CDATA[[转载]软件项目管理（CMM）经验谈]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20286</link>
<author>hackxboy1985</author>
<pubDate>2006/11/24 16:48:06</pubDate>
<description><![CDATA[
<TABLE cellSpacing=0 cellPadding=0 width="95%" align=center border=0>
<TBODY>
<TR>
<TD class=title vAlign=bottom height=40>
<DIV align=center><B>软件项目管理（CMM）经验谈</B> 
<HR width="80%" noShade SIZE=1>
</DIV></TD></TR>
<TR>
<TD class=hui vAlign=top height=20>
<DIV class=hui24 align=center>作者：不详　来源：电脑商报　<FONT color=#ff0000>http://www.csai.cn</FONT>　2004年11月18日</DIV></TD></TR>
<TR>
<TD class=matter>编者按： <BR>CMM认证是当今IT界最热的话题之一，这表明中国软件企业已开始重视与软件项目管理有关的问题了。为了了解国内软件企业对软件项目管理的认识程度以及他们在软件项目管理方面的具体做法，日前，记者采访了开思、东方通、瑞星三家纯软件公司的相关负责人。三家公司中，东方通业已开始按照CMM规范进行软件开发。在采访中，三家公司的负责人分别介绍了各自企业在软件项目管理方面的经验。开思公司的产品总监石宏峰先生还为记者详细讲解了开思公司的《产品部开发规范》。 <BR>经过整理，我们将东方通和瑞星两家公司的负责人在采访中所说的主要内容刊登于此。我们相信，其具有一定的认识价值。另外，我们将开思公司《产品部开发规范》的一部分也刊登于此——我们并不认为开思的规范就是最好的规范。对软件项目管理而言，普适性是不存在的，好坏是相对的，适用不适用才是绝对的——我们相信，其具有一定的参照价值。　 <BR><BR>加强相关教育和培训 <BR>朱律玮（东方通科技首席软件设计师） <BR>杨桦（东方通科技总经理助理）　　　 <BR>东方通科技从去年底开始为参加CMM认证（二级）做准备。拟议中正式参评的时间是今年11月。在这之前我们会请国内咨询公司的有关专家和国外的评估师进行两次预评估。 <BR>半年多来，我们觉得一切还算顺利。起初我们担心编程人员会有抵触情绪——因为每完成一天的工作或一道工序或一个项目后都要做记录、编文档、写报告，较之以前，工作量无疑是增加了——后来看看，大家对执行CMM规范还是理解的、支持的。 <BR>按照CMM规范开展工作后，到目前为止，公司的运营成本是增加了——因为要增加管理人员、撰写文档也需要人手——但从长远看，其会带来降低成本、提高质量、提高用户满意度等好处。对此，我们确信不疑。 <BR>与国外相比，我们在软件工程管理方面的差距不仅表现为管理体制、管理方法、管理思想的陈旧，整个软件业的落后才是根源。 <BR>个人英雄主义情结、喜欢单打独斗是我们的民族性之一，其在软件人才身上表现得尤为明显，已成为中国软件企业做大的一个瓶颈。造成这种状况的原因，除了国内软件业的发展水平不高、软件项目规模不大和软件企业管理者自身素质不高外，还有很重要的一点，即与软件工程管理有关的教育内容几乎没有。在国外，PSP和GSP均为软件专业学生的必修课，可在国内，这两门课在学校里至今还没有开起来。国外施行的是定岗培训，比如撰写文档就是一门专业课，专门有人修它，毕业后拿它来“安身立命”，国内则是大家过独木桥，统统都学写程序。应该说，目前国内同行对软件工程管理的重要性已有了一定的认识，但在相关人员的培训上下的力气仍远远不够。 <BR>其实人才才是最关键的。现在软件业最缺的人才之一就是产品经理，他们是软件工程管理的主角。产品经理必须具备以下素质：具有长期的软件开发经验——般来讲，要在8年以上；了解用户的需求；对产品熟、对市场熟——他可以不了解一个产品的底层技术，但必须了解其功能，能把握其发展方向；具有协调能力。总之，产品经理并不一定非常聪明，并不需要在某一方面特别突出，但要八面玲珑。这样的人才太难找了。东方通的产品经理都是自己培养的。 <BR>CMM规范并非只适用于大型软件企业，其也适用于中小型企业。CMM规范只是一个框架、纲要性质的东西。企业在落实它时要细化一次；企业将其落实到具体的某个项目时，要再细化一次；中小企业可以不像大型企业那样将CMM规范细化得那么细，够用就好，不要教条。 <BR>实施CMM规范、通过CMM认证有如下一些好处：确定工作流程和方式，从而使产品的质量和开发的可延续性有了保证；可以提高企业在用户中的信誉度，增加企业与强势公司竞争的筹码；可以承接国际大公司的外包项目———美国公司愿意找印度公司来承接其外包项目，就是因为印度公司对CMM规范普遍比较重视，通过CMM认证的软件企业也多；公司不再受制于人，人走了，事照做，这是一个公司成熟的表现。 <BR><BR>软件商业化的必要手段 <BR>谈文明（北京瑞星科技股份有限公司研发部经理） <BR>中国软件产业发展时间不长，虽然已有部分技术达到国际水平，但由于商业环境还不够完善，在软件技术的商业化与软件工程管理等方面，与国际同行相比，还存在差距。 <BR>只有率先将技术先进的产品推向市场的公司才会赢得利润。在瑞星，技术商品化已被当作一种制度，它有助于提高整个企业的素质。 <BR>瑞星意识到在充满竞争的环境中要获得成功，天才人物是必不可少的，但他们并不是全部。目前，一个软件工程的成功更多地要依靠科学家、工程师、制造人员和销售人员的协同努力。 <BR>在软件商业化的过程之中，建立规范化的易于操作的软件开发行为规范是首先要做的工作。针对杀毒软件的特点，瑞星专门设计了瀑布模型结合增量模型的开发方式，即将项目分阶段来实现。首先实现市场最需求的核心功能，然后在此基础上继续开发，每个单独的阶段都采用瀑布模型的开发方式。 <BR>具体地说，一个基本的软件开发流程包括需求阶段、系统设计阶段、详细设计阶段、编码阶段、单元测试阶段、集成测试阶段、系统测试阶段、软件发布软件维护阶段。其中决定软件开发成功与否的关键阶段是：软件需求管理、软件计划管理、软件质量管理和软件配置管理。 <BR>为了在用户和处理用户需求的软件项目组之间达成共识（用户由最终用户、高层领导、销售人员和市场调研人员组成），“软件需求规格说明书”是必不可少的。经过正式的评审和确认，其将成为后续工作的基础。 <BR>软件项目的实施过程是根据软件项目的资源、约束条件和执行能力确定的，因此需要制定合理的软件工程管理计划，这是项目经理的职责之一。项目经理应定期检查“项目开发计划书”，按照当前项目开发的实际情况，对其进行调整。 <BR>为了保证每一个软件产品都合乎需求，需要设立一个负责项目监督和协调的SQA。其会对软件产品是否符合定义好的软件过程中的相应部分进行审查、复审和测试。公司高层主管应该定期参与、评审SQA的活动。 <BR>软件配置管理是指在整个工程期间对项目的所有软件配置项进行规范化管理。如采用版本控制软件对软件配置项版本进行版本控制，采用基线管理方法对变化进行控制，即在遵循软件工程标准的基础上对整个软件进行控制和管理，维护其完整性、一致性和可跟踪性。 <BR>瑞星努力营造的是一个广泛的网络，研发、制造、销售、分销和服务，连续进行。围绕着产品、市场和开发阶段而不是单纯的技术来组织各项工作。为了这个目的，标准操作是必不可少的。 <BR><BR>附录：开思公司《产品部开发规范》　（摘要） <BR>说明：第一部分为《目录》，从中可以看出开思公司《产品部开发规范》的整体架构；第二部分为《开发规范概述》，从中可以看出开思公司在软件项目管理方面的一些具体做法。 <BR>1　　目　录 <BR>1　目的 <BR>2　开发规范概述 <BR>2．1　应用项目管理管理开发过程 <BR>2．2　标准的阶段性开发工作 <BR>2．2．1　总体规划 <BR>2．2．2　项目立项 <BR>2．2．3　需求分析 <BR>2．2．4　系统分析 <BR>2．2．5　系统设计 <BR>2．2．6　编码实现 <BR>2．2．7　项目测试 <BR>2．2．8　文档制作 <BR>2．2．9　项目验收 <BR>2．2．10　项目版本化发布 <BR>2．3　项目组织 <BR>3　开发工作规范 <BR>3．1　总体规划阶段 <BR>3．1．1　项目需求报告 <BR>3．1．1．1　工作定义 <BR>3．1．1．2　前序工作及输入成果 <BR>3．1．1．3　具体工作内容 <BR>3．1．1．3．1　资料收集（可选） <BR>3．1．1．3．2　资料研究（可选） <BR>3．1．1．3．3　项目需求报告编制 <BR>3．1．1．3．4项目需求报告讨论准备 <BR>3．1．1．3．5　项目需求报告讨论 <BR>3．1．1．3．6　项目需求报告修改 <BR>3．1．1．3．7　项目需求报告验收 <BR>3．1．1．4　参与者及职责 <BR>3．1．1．5　输出成果及后序工作 <BR>3．1．2　技术可行性实验（可选） <BR>3．1．3　项目计划书 <BR>3．2　项目立项 <BR>3．2．1　立项申请 <BR>3．2．2　项目立项评估 <BR>3．2．3　项目进度计划 <BR>3．2．4　项目立项审批 <BR>3．3　需求分析 <BR>3．3．1　资料收集 <BR>3．3．2　需求分析编制 <BR>3．3．3　讨论准备 <BR>3．3．4　需求分析讨论 <BR>3．3．5　需求分析修改 <BR>3．3．6　需求分析验收 <BR>3．4　系统分析 <BR>3．4．1　系统分析准备 <BR>3．4．2　确定问题域 <BR>3．4．3　需求建模 <BR>3．4．4　建立分析对象模型 <BR>3．4．5　系统分析合并 <BR>3．4．6　系统分析测试 <BR>3．4．7　系统分析修改（测试后） <BR>3．4．8　系统分析验收 <BR>3．5　系统设计 <BR>3．5．1　系统设计准备 <BR>3．5．2　界面设计 <BR>3．5．3　建立设计模型 <BR>3．5．4　系统设计合并 <BR>3．5．5　对象持久化设计 <BR>3．5．6　详细设计 <BR>3．5．7　系统设计测试 <BR>3．5．8　系统设计修改（测试后） <BR>3．5．9　系统设计验收 <BR>3．6　编码实现 <BR>3．6．1　编码准备 <BR>3．6．2　编码 <BR>3．6．3　编码单元测试（测试工作） <BR>3．6．4　单元测试后编码修改 <BR>3．6．5　编码联调 <BR>3．6．6　集成测试（测试工作） <BR>3．6．7　集成测试后编码修改 <BR>3．6．8　系统测试（测试工作） <BR>3．6．9　系统测试后编码修改 <BR>3．6．10　编码验收 <BR>3．7　项目测试 <BR>3．7．1　系统分析测试 <BR>3．7．2　系统设计测试 <BR>3．7．3　项目测试方案 <BR>3．7．4　单元测试 <BR>3．7．5　集成测试 <BR>3．7．6　系统测试 <BR>3．8　文档编制 <BR>3．8．1　开发文档整理 <BR>3．8．2　用户文档编制 <BR>3．8．3　宣传资料编写 <BR>3．9　项目验收 <BR>3．10　项目版本化发布 <BR>4　项目工作总结 <BR>4．1　项目任务数 <BR>4．1．1　总任务数 <BR>4．1．2　阶段任务数 <BR>4．2　输出成果 <BR>2　　开发规范概述 <BR>2．1　应用项目管理管理开发过程 <BR>产品部接受的各种开发任务均以项目形式出现，包括：新产品开发，产品维护（错误修改、功能增强、缺陷完善等），产品客户化开发及维护等，全程使用项目管理方法进行控制和管理。 <BR>根据项目规模和难易有大、小，繁简之分。每个项目的完成周期要控制在6个月以内，项目规模控制在60个人月内。过大的项目需要拆分成多个小的项目来完成。30个人月以上的项目称为大项目，10个人月以内的项目称为小项目。 <BR>每个项目要根据具体情况拆分成工作阶段，即里程碑，以便对项目进度的有效控制与检测。 <BR>2．2　标准的阶段性开发工作 <BR>2．2．1　总体规划 <BR>全面规划项目工作的内容，确定目标市场、技术指标和应用要求，划定项目工作范围和交付成果，明确项目实现的总体设想和实施方案；确定项目中的新技术的可行性；明确项目需要用到的各种资源，估算项目的工作量和成本。 <BR>2．2．2　项目立项 <BR>产品部对要进行的开发项目进行立项申请，提交项目资料。由公司的有关人员对项目进行一系列的风险评估。 <BR>通过风险评估的项目，由产品部进行详细进度计划安排，落实时间进度、资源（人员／设备、内部／外部）、技术、资金和费用等，相关资源和资金使用计划要详细列出。 <BR>最后所有的项目申请资料、风险评估报告及产品进度计划都要报给公司上级领导审批，进行立项评审。 <BR>立项通过的项目才能进入正式的开发工作。 <BR>2．2．3　需求分析 <BR>根据项目需求报告界定的工作范围和应用方案的设计思路，进一步深入细化应用方案，描述将要开发出计算机系统中包含的各项业务是如何做的，及业务流程、相关理论、运算公式、原理、业务数据、单据报表格式等。 <BR>2．2．4　系统分析 <BR>根据项目需求分析，对将要建立的满足用户需求的计算机系统进行分析。在系统分析过程中采用面向对象分析技术（OOA）划分需求的问题域，对每一个问题域进行分析和抽象，对其中的事物和它们之间的关系产生正确的认识，找出描述问题域及其系统责任所需的类及对象，定义这些类和对象的属性与服务，以及它们之间所形成的结构、静态联系和动态联系。最终产生一个符合用户需求，并能够直接反映问题域和系统责任的面向对象的分析模型。 <BR>2．2．5　系统设计 <BR>根据项目需求分析和系统分析，针对具体实现中的人机界面、数据存储、任务管理等内容，运用面向对象设计技术（OOD）进行系统设计。主要包括UI设计、对象设计和数据库表设计。 <BR>2．2．6　编码实现 <BR>根据系统设计的结果，运用面向对象的方法进行程序编码（OOP）以实现系统设计的内容。 <BR>编码过程就是用具体的数据结构来定义对象的属性，用具体的语言来实现服务流程图所表示的算法。在对象设计阶段形成的对象类和关系最后被转换成特殊的程序设计语言、数据库或者硬件的实现。 <BR>2．2．7　项目测试 <BR>对系统分析、系统设计、程序编码等运用面向对象的方法进行测试（OOT）。项目的测试工作贯穿项目的整个开发过程。主要包括：分析（OOA）测试、设计（OOD）测试和编码（OOP）测试，以及集成测试和系统测试。 <BR>2．2．8　文档制作 <BR>跟随项目开发过程应产生的文档主要包括三类： <BR>（1）开发文档：分析、设计、编码、测试以及各种开发管理文档等资料； <BR>（2）用户文档：在线帮助，安装指南，使用手册，技术手册，培训教材等； <BR>（3）宣传资料：产品介绍资料，产品白皮书，产品宣传PPT，演示光盘等。 <BR>2．2．9　项目验收 <BR>对完工的项目按照验收步骤进行验收。验收过程中对项目的情况给予评价。 <BR>2．2．10　项目版本化发布 <BR>对验收通过的项目进行版本控制，整理项目版本包含的内容并版本化，发布产品发布通告。 <BR>2．3　项目组织 <BR>每个项目指定一个项目经理进行管理，同时指定一个分析、设计人员（来自分析设计组）负责对技术问题的管理。当任务涉及到多个职能组的工作时（有些项目可能只涉及单一的职能组），由项目经理根据项目工作安排与职能组的组长进行协调，由职能组的组长来协助安排本组承担的项目工作，指定组内人员来完成相关工作。项目经理根据各职能组长的安排汇总编制整个项目的进度计划，并根据最终形成的项目计划对项目进行控制和管理。 <BR>项目进行过程中需按照项目管理的要求对项目进行跟踪、总结，各职能组的人员要对这些工作给予积极的支持和配合。产品委员会（或产品部内部）不定期组织人员对项目进行审查，确保项目的进度和质量。 <BR>项目完工后需要由产品委员会组织对项目进行验收</TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[[转载]项目管理的一些心得]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20285</link>
<author>hackxboy1985</author>
<pubDate>2006/11/24 16:36:27</pubDate>
<description><![CDATA[
<P>　这几天紧张进行的项目暂停了，所有人员都被拉到另一个项目中，应为人手不够，这样就有了几天的空闲时间，感到意外吧，为什么时间紧，工作量大反而有空闲时间那，这个我不详细说了，只是应为没有好的管理。这个就不具体说了。有了时间，我就又看了看xp,rup,iso9001,cmm,PMBOK2004,现代项目管理体系等资料。发现理论的东西有些雷同。</P>
<P>个人在想。。。。</P>
<P>如果领导不协助，项目经理没有足够的权力，你能做些什么？</P>
<P>如果组织机构不完整，一些工作做了不等于没做吗？</P>
<P>如果成员一直停留在无意识的状态，工作如何进行？</P>
<P>如果连开会的环境都没有，项目如何能有一个好的环境？</P>
<P>如果。。。。</P>
<P>项目的要求，首先领导给与足够的权力（人力，环境，项目资金。。。），其次项目经理应该搭建一个好的项目环境，通过区域来组成一个团队组。在这个团队组的公告中，列出这个团队目标和管理制度。把所有成员的考核记录列出来，每一个的工作计划在每个人的位置上贴出来。</P>
<P>然后项目经理提取成员的意见，项目成功我们能有什么奖励，项目失败我们能有什么惩罚。</P>
<P>列出所有项目中的风险。通过团队的力量来划分和制定和管理风险。</P>
<P>每个里程碑结束的时候，项目团队放松的喝上一杯，用唱歌缓解一下紧张的情绪。</P>
<P>建立技术论坛，周例会把所有问题进行总结讨论，月总结会议，把所有改进意见进行实施。</P>
<P>项目阶段报告。一起辛苦的难兄难弟们一起为成功而喜悦，为奖励而欣慰。</P>
<P>一段时间后一个新的阶段或一个新的项目开始了，内部招聘项目人员。。都踊跃报名。。。。。。</P>
<P>&nbsp;项目经理要争取属于自己的权利，没有权利，就没有力度，就没有人信任你，如何做好管理工作。责权利和惩罚措施都要明确。要不项目就不能清晰管理。</P>
<P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<P>每个里程碑结束的时候，项目团队放松的喝上一杯，用唱歌缓解一下紧张的情绪。</P>
<P>~~~~~~~~~~~~~~~~~~~~公司舍不得花钱哦,项目组很少能出去庆祝一下的,就算出去庆祝,也是AA制,时间久了,没人愿意参加的.</P>
<P>然后项目经理提取成员的意见，项目成功我们能有什么奖励，项目失败我们能有什么惩罚。</P>
<P>~~~~~~~~~~~~~~~~~~~我们的赏是分明的,但是从来没有罚,以至项目一再延期,同样的Bug反复出现啊~</P></TD></TR></TBODY></TABLE></P>]]></description>
</item><item>
<title><![CDATA[[转载]新的想法，记录下来[不断试验，直到合适]-记管理]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20282</link>
<author>hackxboy1985</author>
<pubDate>2006/11/24 16:32:27</pubDate>
<description><![CDATA[
<P>1、把部门中的各个项目组重新调动位置，属于一个项目组的人员集合在一起。</P>
<P>&nbsp; 2、为每个项目组提供一份文档模版，列出这个项目组的项目名称，编号，开始时间，预期结束时间，人员详细资料（包括人员考核列表，每个阶段的考核计分，包括其他部门配合人员进入时间考核分数），计划里程碑，完成情况，进度情况，这个环节存在的风险。</P>
<P>&nbsp; 3、每个部门把部门文档贴在各自项目组最明显位置，项目经理进行监督和变更文档内容。如果计划发生变化，调整计划，然后说明原因。</P>
<P>&nbsp; 4、美工从每个项目中提出，作为一个项目组存在。人员可以作为多个项目组的资源。</P>
<P>&nbsp; 5、维护期的项目统一移交到维护组，对维护组人员进行交接和培训维护期的工作。</P>
<P>&nbsp; 6、不断磨合项目团队，不断形成多个固定团队，采用内部招标方式进行竞争项目。通过合理化方案有公司决策层来安排开发团队。</P>
<P>&nbsp; 7、项目经理具有生杀大权（这里指成员是否可以在这个项目组由项目经理决定），由项目经理可以利用现有资源进行为项目服务。</P>
<P>&nbsp; 8、项目经理有项目活动资金合理分配的权利，有项目成员工资福利变动的权利（+-？？？元）。</P>]]></description>
</item><item>
<title><![CDATA[[转贴]CMM 实践2]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20281</link>
<author>hackxboy1985</author>
<pubDate>2006/11/24 16:23:24</pubDate>
<description><![CDATA[<P>
<TABLE cellSpacing=0 cellPadding=0 width="95%" align=center border=0>
<TBODY>
<TR>
<TD class=title vAlign=bottom height=40>
<DIV align=center><B>CMM Level 2 实战（二）</B> 
<HR width="80%" noShade SIZE=1>
</DIV></TD></TR>
<TR>
<TD class=hui vAlign=top height=20>
<DIV class=hui24 align=center>作者：刘文威 宁传成　来源：希赛网　<FONT color=#ff0000>http://www.csai.cn</FONT>　2003年11月24日</DIV></TD></TR>
<TR>
<TD class=matter><STRONG>软件质量保证(Software Quality Assurance)</STRONG><BR>软件质量保证的目的是为管理人员提供软件项目所用流程和正在构建的产品的可见度。软件质量保证涉及审查和核实软件产品及其活动，以便验证它们与项目采用的过程与标准的一致性。软件质量保证是为了确保对项目进行客观、公正的审查。 软件质量保证的基本流程可如&lt;图三&gt;所示。该流程描述了软件质量保证计划的形成与复审，SQA人员根据质量保证计划开展质量保证活动，发现问题，跟踪解决问题，并最终向高层管理者汇报项目的执行情况。质量保证计划一般包含项目过程采用的标准（如：项目计划估算过程、计划过程、测试过程、复审过程、开发过程、风险管理等）以及软件工作产品的标准（如：编码标准、接口定义标准等）。<BR>在项目实际进行过程中，比较典型的情况就是：质量保证人员担心与项目组成员起冲突，以至复审和审计活动缺乏有效性和公正性；或者是质量保证人员单纯重视软件产品（如：文档、代码等）的审阅，对项目执行的过程不够重视。<BR><A href="http://51cmm.csai.cn/PubCMM/images/No105-1.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 style="ZOOM: 120%" height=513 src="http://51cmm.csai.cn/PubCMM/images/No105-1.gif" width=474 onload="java_script_:if(this.width>500)this.width=500" border=0></A><BR>&lt;图三&gt;<BR>根据&lt;图三&gt;所示流程，在实施项目的质量保证活动时，结合实际开发情况，可确定如下的软件质量保证过程：<BR>a) 项目质量保证人员以Microsoft Word拟定项目质量保证计划文档，以Microsoft Project拟定项目质量保证活动的进度表。<BR>b) 由质量保证经理或高层管理者指定项目的质量保证人员。项目的质量保证人员在项目开发计划复审通过之后，拟定项目的质量保证计划，并提交给项目经理和质量保证经理或高层管理者复审。<BR>c) 质量保证人员根据计划对项目执行的活动进行定期审计，记录与项目流程定义不一致的问题，并形成报告。<BR>d) 质量保证人员组织人员对产出的工作产品进行复审，以验证其是否与项目采用的标准一致，并形成报告。<BR>e) 将审计和复审发现的问题记录到项目的问题跟踪进度表中，跟踪并协调问题的解决情况，并定期向高层管理者汇报。如果不能解决的由高层管理者协助解决。<BR>f) 项目经理或高层管理者定期检查质量保证人员的活动。<BR>g) 实际项目中应用的文档有： <BR>项目质量保证流程定义、质量保证计划、流程审计报告、软件工作产品复审报告、质量保证计划进度表、SQA问题跟踪解决进度表。<BR><STRONG>软件配置管理(Software Configuration Management)</STRONG><BR>软件配置管理的目的是在整个软件生命周期中建立和维护软件项目中的产品的完整性。 它包括标识在给定时间点上软件的配置，系统地控制对配置的更改，并维护在整个软件生命周期内配置的完整性和可跟踪性。因此，软件配置管理可以分为两方面的内容，一是配置项的识别和管理，另一方面是变更管理。<BR>a. 配置项管理<BR>软件的配置项管理的基本流程可如&lt;图四&gt;所示，该流程描述了软件工程组在进行开发过程中，生成软件工作产品，识别配置项，为配置项创建基线。配置管理项最显著的特征就是包含版本号或发布日期。实际项目管理经常不知道该如何识别区分配置项和基线。<BR><A href="http://51cmm.csai.cn/PubCMM/images/No105-2.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 style="ZOOM: 130%" height=282 src="http://51cmm.csai.cn/PubCMM/images/No105-2.gif" width=456 onload="java_script_:if(this.width>500)this.width=500" border=0></A><BR>&lt;图四&gt;<BR>b. 变更管理<BR>&lt;图五&gt;描述了纳入配置管理的配置项进行变更的完整流程。根据新需求、项目进度报告、客户意见反馈、软件工作产品复审记录等不同的原因提出变更申请，由项目小组或变更控制委员会（SCCB）分析其影响，确定变更请求的拒绝、接受或搁置，并根据不同的决定进行不同的处理，一直到变更请求被处理。<BR>一旦采用了严格的变更控制管理流程，才能了解变更造成的影响，所有项目组成员才了解变更，形成共识，接受变更。缺少对变更有效的控制，往往会造成配置管理的无序，导致项目返工、延期，甚至失败。<BR><A href="http://51cmm.csai.cn/PubCMM/images/No105-3.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 style="ZOOM: 120%" height=547 src="http://51cmm.csai.cn/PubCMM/images/No105-3.gif" width=482 onload="java_script_:if(this.width>500)this.width=500" border=0></A><BR>&lt;图五&gt;<BR>根据&lt;图四&gt;和&lt;图五&gt;所示流程，可以确定软件配置管理的方法：<BR>a) 项目设定配置管理人员，以Rational ClearCase为配置管理工具，根据项目计划拟定项目的配置管理计划文档，以Microsoft Project拟定项目配置活动的进度表。<BR>b) 项目的配置管理计划包含以下内容：配置管理工具、目录结构、识别配置项的方法、配置项命名、创建配置管理库、基线管理、配置审计、配置状态报告、变更管理等。<BR>c) 在ClearCase创建项目的VOB（版本对象库），创建项目小组成员的工作区和集成区，项目组成员只在各自的工作区Check in 或Check out操作，由配置管理人员进行合并，标识出软件配置项。<BR>d) 由配置管理人员负责在适当的时机（如：里程碑处或迭代结束）创建基线，晋升基线，下降基线，并由其负责备份和恢复基线。<BR>e) 根据配置管理计划对项目的配置项和基线定期（或里程碑处）进行审计，以验证其是否与项目配置计划或项目开发计划一致。<BR>f) 所有的变更请求首先向配置管理人员提出，由配置管理人员对变更请求进行分析确定其影响，组织变更评审小组。<BR>g) 一旦同意变更，由配置管理人员Check out需变更的配置项，然后对配置项进行变更，变更完成后再由配置管理人员Check in到配置管理库中。<BR>h) 由SQA人员定期审计配置管理的活动。<BR>i) 实际项目中应用的文档有： <BR>项目配置管理计划制定流程定义、项目配置管理活动流程定义、项目配置管理计划、配置状态报告、基线审计报告（见附表）、配置项变更申请表、项目配置管理活动进度表、配置管理工具操作指南<BR><STRONG>三、结束语</STRONG><BR>这里所介绍的CMM2的方法及应用，不是一种固定的模式，各企业需要结合自身的实际情况去裁剪。其实CMM并不只是一个目标，不是一种“立竿见影”式的管理技术，它只是一种不断改进企业自身能力的方法，但其长远效益、应用效果和影响使非常显著的。实践证明，软件企业尤其是中小型企业在运用CMM的过程中，企业效率不断提高，时间控制更严格，品质更有保证，管理更有序。<BR><STRONG>附表：</STRONG><BR><STRONG>基线审计报告</STRONG><BR>
<TABLE class=hui cellSpacing=0 cellPadding=0 width="99%" border=1>
<TBODY>
<TR>
<TD width="26%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">专案名称</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><?XML:NAMESPACE PREFIX = O /><O:P></O:P></SPAN></B></P></TD>
<TD vAlign=top width="27%">
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD>
<TD width="20%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">专案经理</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><O:P></O:P></SPAN></B></P></TD>
<TD vAlign=top width="26%">
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD></TR>
<TR>
<TD width="26%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">报告人</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><O:P></O:P></SPAN></B></P></TD>
<TD vAlign=top width="27%">
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD>
<TD width="20%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">报告日期</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><O:P></O:P></SPAN></B></P></TD>
<TD vAlign=top width="26%">
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD></TR>
<TR style="HEIGHT: 3.5pt">
<TD width="26%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">审计人</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><O:P></O:P></SPAN></B></P></TD>
<TD vAlign=top width="27%">
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD>
<TD width="20%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">审计日期</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><O:P></O:P></SPAN></B></P></TD>
<TD vAlign=top width="26%">
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD></TR>
<TR style="HEIGHT: 3.5pt">
<TD width="26%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">审计类型</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><O:P></O:P></SPAN></B></P></TD>
<TD vAlign=top width="73%" colSpan=3>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD></TR>
<TR style="HEIGHT: 3.5pt">
<TD width="26%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基线名称</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><O:P></O:P></SPAN></B></P></TD> 
<TD vAlign=top width="73%" colSpan=3>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD></TR>
<TR>
<TD width="26%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">包含的构件</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><O:P></O:P></SPAN></B></P></TD>
<TD vAlign=top width="73%" colSpan=3>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD></TR>
<TR style="HEIGHT: 3.5pt">
<TD width="26%">
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基线特性描述</SPAN></B><B style="mso-bidi-: normal"><SPAN lang=EN-US style="COLOR: black; mso-bidi-font-size: 10.5pt"><O:P></O:P></SPAN></B></P></TD>
<TD vAlign=top width="73%" colSpan=3>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="COLOR: black"><O:P></O:P></SPAN></P></TD></TR></TBODY></TABLE><BR>
<TABLE class=hui cellSpacing=0 cellPadding=0 width=583 border=1>
<TBODY>
<TR style="HEIGHT: 14.25pt">
<TD noWrap width=246>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置项</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></B></P></TD>
<TD noWrap width=104>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版本</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></B></P></TD>
<TD width=94>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最后修改日期</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></B></P></TD>
<TD width=62>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改人</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></B></P></TD>
<TD width=77>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">状态</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></B></P></TD></TR>
<TR style="HEIGHT: 2.75pt">
<TD vAlign=bottom noWrap width=246>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom noWrap width=104>&nbsp; </TD>
<TD vAlign=bottom width=94>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom width=62>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=top width=77>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD></TR>
<TR style="HEIGHT: 2.75pt">
<TD vAlign=bottom noWrap width=246>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom noWrap width=104>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom width=94>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom width=62>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=top width=77>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD></TR>
<TR style="HEIGHT: 2.75pt">
<TD vAlign=bottom noWrap width=246>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom noWrap width=104>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom width=94>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom width=62>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=top width=77>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD></TR>
<TR style="HEIGHT: 2.75pt">
<TD vAlign=bottom noWrap width=246>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom noWrap width=104>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom width=94>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom width=62>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=top width=77>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD></TR>
<TR style="HEIGHT: 2.75pt">
<TD vAlign=bottom noWrap width=246>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom noWrap width=104>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom width=94>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=bottom width=62>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD>
<TD vAlign=top width=77>
<P class=MsoNormal>&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><O:P></O:P></SPAN></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR></P>]]></description>
</item><item>
<title><![CDATA[[转贴]CMM 实践1]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20279</link>
<author>hackxboy1985</author>
<pubDate>2006/11/24 16:16:05</pubDate>
<description><![CDATA[
<TABLE cellSpacing=0 cellPadding=0 width="95%" align=center border=0>
<TBODY>
<TR>
<TD class=title vAlign=bottom height=40>
<DIV align=center><B>CMM Level 2 实战（一）</B> 
<HR width="80%" noShade SIZE=1>
</DIV></TD></TR>
<TR>
<TD class=hui vAlign=top height=20>
<DIV class=hui24 align=center>作者：刘文威 宁传成　来源：希赛网<FONT color=#ff0000>　http://www.csai.cn</FONT>　2003年11月24日</DIV></TD></TR>
<TR>
<TD class=matter>现在关于CMM的文章不在少数，但基本上都是概念性、理论性的。为了使大家对CMM有更通俗、更直观的理解，作者根据实施CMM多年积累的经验，结合实际项目的管理及应用，提出了一套可行的CMM2实施方案，以期能为同行提供有价值的参考。 <BR><STRONG>一、前言</STRONG><BR>CMM(软件能力成熟度模型：Software Capability Maturity Model)，是由美国卡内基梅隆大学(CMU)的软件工程研究所(SEI)制定的一种软件评估标准，主要用于软件开发过程和软件开发能力的评估和改进。此标准自1991年提出以来，已在美国、印度、日本、欧洲等地成功应用，并成为软件行业的工业标准。<BR>尽管CMM引起了软件行业充分的重视，但如何将CMM应用到企业或项目管理中 ，大多数企业仍然毫无头绪。其实实施CMM的最大障碍通常不是技术问题，而是工程和经验方面的管理问题以及企业文化问题，这一点对于中小软件企业尤其突出。本文将从CMM2的六个KPA入手，根据作者实施CMM多年积累的经验，具体介绍CMM2的实践及应用。<BR><STRONG>二、CMM2实践</STRONG><BR>CMM 2（可重复级）就是建立了基本的项目级管理过程，可对项目的成本、进度进行跟踪和控制，生产的过程、标准、工作产品以及服务都是被严格定义和文档化的。基于以往管理类似的项目的经验，计划和管理新项目，并可依据一定的标准重复利用类似的软件产品。CMM 2的核心就是重复利用。<BR>CMM2由6个关键过程域(KPA)组成：需求管理(RM)、软件项目计划(SPP)、软件项目跟踪与监控(SPTO)、软件子合同管理(SSM)（本文略）、软件质量保证(SQA)、软件配置管理(SCM)。<BR><STRONG>需求管理(Requirement Management)</STRONG><BR>需求管理的目的是为了在客户和处理客户需求的软件项目之间建立共识。这是软件项目规划(SPP)和管理(SPTO)的基础，需求变更依赖于配置管理(SCM)的变更控制流程。在项目实施过程中，最突出的现象就是项目组成员没有完全理解需求，软件需求不稳定，客户经常变更需求，无法有效控制需求变更，需求变更往往造成项目延期和费用超支。<BR>CMM2要求的需求管理的基本流程可如&lt;图一&gt;所示。该流程描述了软件工程组开始获取原始需求，汇总为系统需求，分配系统需求，复审软件需求，软件需求必须文档化形成需求文档，此文档必须经过相关组和个人的评审，通过评审之后才纳入配置管理，为需求文档建立基线。软件项目计划、活动及软件工作产品，应和软件需求的变化保持一致。<BR>根据&lt;图一&gt;所示流程，可以结合实际开发情况确定项目的需求管理步骤：<BR>a. 获取需求和确认需求以Use case（用例）为单位，以Rational Requisite Pro作为需求管理工具，使用Rational Rose进行维护Use case和Use case Model。<BR>获取需求工件是：用例模型(Use case Model)、非功能性的“补充规约”、用例规约(Use case Specification)、词汇表(Glossary)<BR><A href="http://51cmm.csai.cn/PubCMM/images/No104-1.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 style="ZOOM: 90%" height=632 src="http://51cmm.csai.cn/PubCMM/images/No104-1.gif" width=429 onload="java_script_:if(this.width>500)this.width=500" border=0></A> <BR>&lt;图一&gt;<BR>b. 通过访谈，从客户处获取原始需求，形成需求文档。<BR>c. 分析软件需求形成Use case描述文档，与客户共同确认需求，向客户展示Use case文档，获得客户认可。<BR>d. 建立基线的需求必须通过相关组的审查，包括：系统分析组、设计组、编码组、测试组、质量保证组、配置管理组、文档管理中心及个人。通过审查，项目组成员发现需求是否可行、是否完善、是否清晰、是否可进行测试。<BR>e. 通过审查后，将需求文档纳入配置管理，为需求创建基线。<BR>f. 通过工具管理，对需求进行跟踪，尽快找出需求变更受影响的需求及工件，并了解需求的实现情况。<BR>g. 客户确认后如需变更，项目小组成员向其说明变更的影响，并有可能增加费用及时间，尽量控制客户的需求。需求变更的流程按配置管理的变更流程执行。<BR>h. 一旦需求发生变更，项目计划、活动、工序随之变更，并重新提交相关组和个人复审。<BR>i. 实际项目需求管理中应用的文档有： <BR>项目需求管理流程定义、项目需求复审流程定义、项目需求及状态跟踪流程定义、需求获取表格、需求状态报告、需求复审报告、需求变更报告、需求跟踪报告<BR><STRONG>软件项目计划(Software Project Plan)</STRONG><BR>软件项目计划的目的在于建立合理的计划，执行软件工程和管理软件项目。软件项目计划管理在软件开发过程中处于十分重要的地位，它体现了对客户需求的理解，是开展项目活动的基础，是软件项目跟踪与监控（SPTO）的基础。<BR>CMM2软件项目计划根据纳入配置管理后的软件需求进行项目估算，并依据文档化的流程，形成项目计划文档。项目计划文档经复审后纳入配置管理，由项目开发人员遵循，并据此跟踪检查计划的执行。项目计划文档在复审过程中，如果项目计划对风险估算不足或存在其它问题，就需要对项目计划文档重新修正，以获得项目组和高层管理者的支持。软件项目计划（SPP）也称为软件开发计划（SDP：Software Development Plan），软件开发计划一般是指管理软件项目的全面计划。<BR>在项目实施过程中，比较常见的情况一种是制定的软件项目计划内容简单，无法具体到每一个迭代或每周，可变性太大；或者制定了详细的软件项目计划，但实际执行根本就不按照计划实施。<BR>软件项目计划的实际应用模式如下：<BR>a) 项目采用 Microsoft Word 拟定计划文档，以 Microsoft Project 拟定计划的进度表。<BR>b) 项目经理根据项目软件需求进行估算，确定进行项目选择的生命周期、项目规模、所需的人员、时间、进度、资源、风险等内容。将估算的结果形成估算过程文档，并拟定软件开发计划。<BR>c) 软件开发计划内容包含：软件项目计划、迭代计划、进度时间表、配置管理计划、质量保证计划、需求管理计划、项目评测计划、风险管理计划、产品验收计划、问题解决计划、测试计划。<BR>d) 估算过程文档和软件项目计划文档必须通过相关组的审查，以获得相关组及个人的支持，包括：系统分析组、设计组、编码组、测试组、质量保证组、配置管理组、文档管理中心及个人。通过审查，发现并修正项目估算和项目计划的偏差。只有获得了支持，软件项目组在开发过程中才能尽量避免或消除风险。<BR>e) 在高层管理者复审通过后，项目经理指定人员或参与拟定软件开发计划其它部分，并由相关组和个人复审。<BR>f) 配置管理人员将软件开发计划文档纳入配置管理。<BR>g) 实际项目中应用的文档有： <BR>制定项目计划流程定义、项目估算流程定义、项目评估表、资源评估表、软件开发计划模板（包括：软件项目计划、迭代计划、配置管理计划、质量保证计划、需求管理计划、项目评测计划、风险管理计划、产品验收计划、问题解决计划、测试计划）、进度时间表、制订软件开发计划的指南。<BR><STRONG>软件项目跟踪与监控(Software Project Tracking and Oversight)</STRONG><BR>软件项目跟踪和监督的目的是建立对实际进展的适当的可视性，为了及时发现开发过程与项目计划之间的误差，使项目经理或高层管理者能够及时了解软件开发过程的状态，能在软件项目明显偏离软件计划时采取有效措施。<BR>CMM2软件项目跟踪与监控的基本流程可如&lt;图二&gt;所示。该流程描述了软件项目组根据文档化的估计、承诺、计划跟踪和审查软件成果，并基于实际调整计划。文档化的软件项目计划被用作跟踪软件活动、了解状态和修正计划的基础。项目经理根据项目开发计划跟踪项目的执行情况，定期形成项目进度报告，并与项目开发计划进行对比，发现问题，根据实际情况对软件开发计划进行修正。掌握了这个核心，实施软件项目跟踪与监控活动就很容易了。<BR><A href="http://51cmm.csai.cn/PubCMM/images/No104-2.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 style="ZOOM: 120%" height=469 src="http://51cmm.csai.cn/PubCMM/images/No104-2.gif" width=483 onload="java_script_:if(this.width>500)this.width=500" border=0></A><BR>&lt;图二&gt;<BR>根据&lt;图二&gt;所示流程，在进行实际项目计划跟踪与监控时，可以采取如下方式：<BR>a) 项目组使用 Rational 的工具进行管理，将 Microsoft Project 拟定的项目计划进度表导入 ClearQuest，主要以 ClearCase 和 ClearQuest 作为跟踪监控工具。<BR>b) 项目经理每周根据项目的实际执行情况，拟定项目的进度报告。然后召集项目小组成员，对进度报告进行确认和修正。<BR>c) 项目经理对照计划与实际执行情况，发现差距并将其纪录成问题报告，其中包括：费用、进度、风险、人员、资源状况等。<BR>d) 由高层管理者复审进度报告及问题报告，并敦促项目经理修正其计划及解决项目存在的问题和风险。<BR>e) 实际项目中应用的文档有： <BR>项目跟踪与监控流程定义、项目进度报告、项目进度指标收集指南。</TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[开始命令]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20277</link>
<author>hackxboy1985</author>
<pubDate>2006/11/24 15:40:07</pubDate>
<description><![CDATA[mstsc――远程桌面连接 <BR><BR>logoff――注销命令 <BR><BR>rononce －p ――15秒关机 <BR><BR>tsshutdn――60秒倒计时关机命令 <BR><BR>iexpress――木马捆绑工具，系统自带 <BR><BR>tourstart――xp简介（安装完成后出现的漫游xp程序） <BR><BR>winchat――XP自带局域网聊天 <BR><BR>sndrec32――录音机 <BR><BR>Nslookup――IP地址侦测器 <BR><BR>explorer――打开资源管理器 <BR><BR>lusrmgr.msc――本机用户和组 <BR><BR>services.msc－－－本地服务设置 <BR><BR>oobe/msoobe /a――检查XP是否激活 <BR><BR>notepad――－打开记事本 <BR><BR>cleanmgr――**整理 <BR><BR>net start messenger――开始信使服务 <BR><BR>compmgmt.msc－－－计算机管理 <BR><BR>net stop messenger――－停止信使服务 <BR><BR>conf――――启动 netmeeting <BR><BR>dvdplay――－DVD播放器 <BR><BR>charmap――－启动字符映射表 <BR><BR>diskmgmt.msc－－－磁盘管理实用程序 <BR><BR>calc――――启动计算器 <BR><BR>dfrg.msc――磁盘碎片整理程序 <BR><BR>chkdsk.exe――－Chkdsk磁盘检查 <BR><BR>devmgmt.msc－－－ 设备管理器 <BR><BR>regsvr32 /u *.dll――停止dll文件运行 <BR><BR>drwtsn32――－－ 系统医生 <BR><BR>rononce －p ――15秒关机 <BR><BR>dxdiag――－－检查DirectX信息 <BR><BR>regedt32――注册表编辑器 <BR><BR>Msconfig.exe－－－系统配置实用程序 <BR><BR>rsop.msc――组策略结果集 <BR><BR>mem.exe――－显示内存使用情况 <BR><BR>regedit.exe――注册表 <BR><BR>progman――－程序管理器 <BR><BR>winmsd――－－系统信息 <BR><BR>perfmon.msc――计算机性能监测程序 <BR><BR>winver――－－检查Windows版本 <BR><BR>sfc /scannow――－扫描错误并复原 <BR><BR>taskmgr――－任务管理器（2000／xp／2003） wmimgmt.msc――打开windows管理体系结构(WMI) wupdmgr――－windows更新程序 w脚本――－windows脚本宿主设置 write――－－－写字板 winmsd――－－系统信息 wiaacmgr――扫描仪和照相机向导 <BR><BR>mem.exe――－显示内存使用情况 Msconfig.exe－－－系统配置实用程序 mplayer2――简易widnows media player mspaint――－画图板 <BR><BR>mplayer2――媒体播放机 magnify――－放大镜实用程序 mmc――――－打开控制台 mobsync――－同步命令 <BR><BR>dxdiag――－－检查DirectX信息 drwtsn32――－－ 系统医生 devmgmt.msc－－－ 设备管理器 dfrg.msc――磁盘碎片整理程序 diskmgmt.msc－－－磁盘管理实用程序 dcomcnfg――打开系统组件服务 ddeshare――打开DDE共享设置 dvdplay――－DVD播放器 <BR><BR>net stop messenger――－停止信使服务 net start messenger――开始信使服务 notepad――－打开记事本 nslookup――网络管理的工具向导 ntbackup――系统备份和还原 narrator――屏幕“讲述人” ntmsmgr.msc――移动存储管理器 ntmsoprq.msc－－－移动存储管理员操作请求 netstat －an――(TC)命令检查接口 <BR><BR>syncapp――－创建一个公文包 sysedit――－系统配置编辑器 sigverif――文件签名验证程序 sndrec32――录音机 shrpubw――－创建共享文件夹 secpol.msc――－本地安全策略 syskey――－－系统加密，一旦加密就不能解开，保护windows xp系统的双重密码 services.msc－－－本地服务设置 Sndvol32――音量控制程序 sfc.exe――－系统文件检查器 sfc /scannow－－－windows文件保护 <BR><BR>taskmgr――－任务管理器 <BR><BR>eventvwr――事件查看器 eudcedit――造字程序 explorer――打开资源管理器 <BR><BR>packager――对象包装程序 perfmon.msc――计算机性能监测程序 progman――－程序管理器 <BR><BR>regedit.exe――注册表 rsop.msc――组策略结果集 regedt32――注册表编辑器 <BR><BR>regsvr32 /u *.dll――停止dll文件运行 regsvr32 /u zipfldr.dll――－－取消ZIP支持 <BR><BR>cmd.exe――－CMD命令提示符 chkdsk.exe――－Chkdsk磁盘检查 certmgr.msc――证书管理实用程序 calc――――启动计算器 charmap――－启动字符映射表 cliconfg――SQL SERVER 客户端网络实用程序 Clipbrd――－剪贴板查看器 conf――――启动netmeeting compmgmt.msc－－－计算机管理 cleanmgr――**整理 ciadv.msc――－－索引服务程序 <BR><BR>osk――――－打开屏幕键盘 odbcad32――ODBC数据源管理器 oobe/msoobe /a――检查XP是否激活 lusrmgr.msc――本机用户和组 <BR><BR>Nslookup――IP地址侦测器 <BR><BR>fsmgmt.msc――－共享文件夹管理器 <BR><BR>utilman――－辅助工具管理器 <BR><BR>gpedit.msc――－组策略<!--顶楼帖广告开始-->]]></description>
</item><item>
<title><![CDATA[物探化探计算技术]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20226</link>
<author>hackxboy1985</author>
<pubDate>2006/11/22 10:49:06</pubDate>
<description><![CDATA[
<P>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR>
<TD>
<P align=center><A href="http://www.wanfangdata.com.cn/qikan/"><IMG height=26 alt="logo.gif (2519 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/image/logo.gif" width=174 border=0></A></P></TD>
<TD>
<P align=center><A href="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/index.html"><FONT face=宋体 size=3><STRONG>物探化探计算技术</STRONG></FONT></A><FONT size=5><BR></FONT><FONT face=System>COMPUTING TECHNIQUES FOR GEOPHYSICAL AND GEOCHEMICAL EXPLORATION</FONT><FONT size=4><BR></FONT><FONT size=2>1999年　第21卷　第3期　Vol.21 No.3 1999</FONT></P></TD>
<TD>
<P align=center><A href="http://www.wanfangdata.com.cn/qikan/periodical.Articles/index.htm"><IMG height=26 alt="qklogo.gif (1030 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/image/qklogo.gif" width=96 border=0></A></P></TD></TR>
<TR>
<TD width="100%" colSpan=3>
<HR SIZE=1>
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 width="90%" border=0>
<TBODY>
<TR>
<TD width="100%"><FONT size=3>
<P align=center><FONT size=5><STRONG>符号演算系统及相关软件</STRONG></FONT></P>
<P align=center></FONT>边少锋</P>
<P align=left><FONT size=3><STRONG>【摘　要】　</STRONG>Mathematica、Matlab等软件是国外较流行的一种符号计算系统。本文简要介绍了国外以 Mathematica为主的几种符号演算系统，最后结合实例介绍了 Mathematica在物探计算技术和解释中的潜在应用。<BR><STRONG>【关键词】　</STRONG>符号演算系统　Mathematica　Maple<BR><STRONG>【中图法分类号】　</STRONG>TP311.138 :P631</FONT></P><STRONG><FONT size=4>
<P align=center></FONT><FONT face="Times New Roman" size=4>SYMBOLIC COMPUTATION SYSTEM AND ITS RELATED SOFTWARES</FONT></STRONG><FONT size=4></P></FONT><FONT size=3>
<P align=center>Bian Shaofeng <BR>(Institute of Geodesy and Geophysics, Chinese Academy of Sciences)</P>
<P align=left><STRONG>Abstract</STRONG>　The software of Mathematica is one of the most popular symbolic computation systems. This paper makes a brief introduction to Mathematica as well as its development and main functions. Some numerical examples combining with formulations in geophysical exploration are attached to the paper.<BR><STRONG>Key words　</STRONG>forwording, inversin, symbolic computation systom, Mathematica, Maple</FONT></P>
<P align=left><FONT size=3>　　受早期计算机运算能力的限制，绝大多数软件侧重于数值计算。数值计算是由常量、变量、函数值到某一个数值的转换，是多个数值到一个数值的过程(多个时可逐个实现)，规律性强、机械程式多，不外乎几条简单的四则运算法则。而符号计算过程(或代数分析过程)是一个从常量、变量、函数关系到另一个常量、变量、函数关系的复杂智能性过程，其间需要的决策和分析判断错综复杂。以有理分式的分解化简为例，它涉及到因式分解、部分分式展开、变量替换等等。积分过程更是一个复杂的创造性思维过程，如函数是否可积?如可积又属何种类型?<BR>　　长期以来理论研究工作者在进行创造性思维时，面临着大量繁杂的数学推演过程，所以人们尤其是理论研究人员都期待着能有符号演算系统出现，用它去解决复杂公式的推演，让人从其中解放出来。<BR>　　随着当代计算机性能水平的发展，这样的期望目前已经不是梦想了，至少一部分已经是现实，除80年代后期出现的Mathematica外，尚有Maple、Mathcad以及后起的Matlab。<BR>　　Mathematica是由美国物理学家Stephen Wolfram开发的，它拥有从多项式运算到微积分、特殊函数等丰富的功能，能支持相当复杂的符号运算、符号数值运算和可视化输出。目前Mathematica已发展成为一个庞大的家族，有兴趣的读者可访问Wolfram公司网址：http:∥www.wolfram.com。<BR>　　Maple是由加拿大Waterloo大学发展的一种数学软件，它提供二千余种数学函数，涉及基本代数学、几何学、数论、有理函数、微积分、线性代数、微分方程、群论等领域<SUP></SUP>［2］，它具有很强的符号演算能力，已使Maple在国际通用数学软件的激烈竞争中占据领先地位，并且Matlab在扩展其符号运算能力时也借助了Maple的内部编程。<BR>　　Mathcad也是80年代出现得较早的一个交互式数学符号软件，其开发商是Mathsoft公司。该软件的市场定位是向广大教师、学生、工程人员提供一个兼备文字、数学和图形处理能力<BR>的集成工作环境，以使他们能更方便地准备自然科学教案、完成自然科学方面的作业和准备科学分析报告。<BR>　　Matlab是由美国Mathworks于1984年发展的，历经十几年的发展和竞争已成为国际公认的最优秀的科技应用软件，它的数值计算能力特别强大，但在1993年4.0版以后的版本中，购得了对Maple的使用权，发展了符号演算功能。<BR>　　Mathematica分有文本式输入和数学形式输入两种。文本式输入比较方便，但与传统的数学表现形式有一定差别；数学形式输入与传统的数学公式形式一致，且较直观，但输入需在键盘与鼠标之间频繁切换，速度略慢。本文举例使用的是文本式形式。但不论用何种形式，其输出均与传统的数学公式表现形式一致。<BR>　　在用Mathematica解有关问题时，首先要根据问题的特点，建立有关的数学模型，然后才能再根据有关要求在该符号系统下求解。下面以重力勘探正演为例，具体说明用法。<BR>　　例1：垂直台阶异常积分。设台阶沿x轴正方向及y轴均无限延伸，台阶顶面与底面深度分别为h和H，剩余密度为σ，则由二度体积分公式可得台阶在x轴处产生的重力异常为</FONT></P>
<P align=center><IMG height=53 alt="gs14-1.gif (1288 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-1.gif" width=286></P>
<P align=left><FONT size=3>式中G为牛顿引力常数。<BR>解：用Mathematica计算上述重积分可得</FONT></P>
<P align=left><IMG height=27 alt="gs14-2.gif (2010 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-2.gif" width=600><FONT size=3><BR><IMG height=68 alt="gs14-3.gif (3018 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-3.gif" width=500></FONT></P>
<P align=left><FONT size=3>经与文献［4，5］对比上述结果正确(当考虑d＞0，D＞0，sign［d］＞0,sign［D］＞0时)，类似的物探解释中，其它积分也可在Mathematica下进行推导。<BR>　　例2：求上例x→∞的积根</FONT></P>
<P align=left><FONT size=3>　　解：<IMG height=52 alt="gs14-4.gif (2434 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-4.gif" width=500 align=textTop></FONT></P>
<P align=left><IMG height=45 alt="gs14-5.gif (2147 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-5.gif" width=500><FONT size=3><BR>由于Sign［d］＞0,sign［D］＞0故该例与文献(4，5)一致，其它物探计算亦可仿此求出。<BR>　　例3：假定Gσ=1个单位，d=10m，D=20m，用Mathematica绘Δg(x)随x的变化曲线图如图1所示。<BR>　　解：用Plot绘图命令并选择一定参数有</FONT></P>
<P align=left><IMG height=43 alt="gs14-6.gif (2486 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-6.gif" width=500><FONT size=3><BR>Out［3］=<STRONG><SUP>.</SUP></STRONG>Graphics<STRONG><SUP>.</SUP></STRONG><BR>　　例4：求例1Δg(x)的一阶导数并化简<BR>　　解：用Dt微分求导和Simplity化简命令有</FONT></P>
<P align=left><IMG height=52 alt="gs14-7.gif (2474 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-7.gif" width=500><FONT size=3><BR></FONT><IMG height=47 alt="gs14-8.gif (1944 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-8.gif" width=500></P></TD></TR></TBODY></TABLE></P>
<P align=center><IMG height=263 alt="14-1.gif (3417 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/14-1.gif" width=387></P>
<P>
<TABLE width="90%" border=0>
<TBODY>
<TR>
<TD><FONT size=3><STRONG>
<P align=center>图1　</STRONG>垂直台阶重力异常变化示意图</P>
<P align=left>In［5］:=simplify［%］　　　　(%表示上一次运算结果)<BR>Out［5］=-Gσ(Log［d<SUP>2</SUP>+x<SUP>2</SUP>］-Log［D<SUP>2</SUP>+x<SUP>2</SUP>］)<BR>物探计算中的各种高阶导数亦可仿此求出。<BR>　　例5：求<IMG height=45 alt="gs14-9.gif (366 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-9.gif" width=73>在x=0点展至5次项的Taylor级数。<BR>　　解：In［6］:=Series［Log［(1+x)/(1-x)］,｛x,0,5｝］<BR><IMG height=49 alt="gs14-10.gif (1099 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-10.gif" width=289><BR>物探计算中的各种一阶近似或二阶近似以及高阶近似，都可用Series命令给出。<BR>　　例6：求剩余密度为σ，半径为R，上顶部以及下底部的深度分别为h和H的铅垂圆柱的重力异常<SUP>［4］</SUP>。<BR>　　解：可取坐标原点在圆柱轴线与水平地面的交点处，在x轴上重力异常可表示为</P></FONT>
<P align=center><IMG height=50 alt="gs14-11.gif (1735 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/gs14-11.gif" width=399></P>
<P align=left><FONT size=3>该式为椭圆积分，无解析表示。传统的方法是绘成列线图进行查表计算。利用Mathematica下的数值积分NIntegrate和绘图命令Plot组合，可以很容易地解决这一问题。取σ=lg/cm<SUP>3</SUP>,<BR>R=100m,h=100m,H=300m,可绘其列线图(如图2)。<BR>In［7］:=Plot［6.67*10^-2*NIntegrate［z*r/(x*x+r*r-2*x*r*Cos［α］+z*z)^(3/2),｛α,0,2Pi｝,｛r,0,100｝,｛z,100,300｝］，｛x,0,200｝,Frame→True,GridLines→Automatic］</FONT></P></TD></TR></TBODY></TABLE></P>
<P align=center><IMG height=221 alt="14-2.gif (7918 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/14-2.gif" width=350></P>
<P>
<TABLE width="90%" border=0>
<TBODY>
<TR>
<TD><FONT size=3><STRONG>
<P align=center>图2　</STRONG>铅垂圆柱体重力异常变化示意图</P>
<P align=left>Out［7］=<STRONG><SUP>.</SUP></STRONG>Graphics<STRONG><SUP>.</SUP></STRONG><BR>该积分为一三重积分，如用C语言、Fortran等编程可能复杂得很，而在Mathematica下却只是一个命令。由此例可看出Mathematica解决复杂数学问题的能力。物探计算中许多积分无解析解，但用Mathematica可以很容易地作出其变化曲线或曲面图，了解其变化规律。<BR>　　例7：绘制物体异常断面图。以球体为例<BR>　　　　　　Δg(x,z)=GMx/［x<SUP>2</SUP>+y<SUP>2</SUP>+z<SUP>2</SUP>］<SUP>3/2</SUP><BR>解：该例详见文献［5］，为方便不妨假定GM=1，令y=0，绘制Δg在0—xz面的等高线，即为其断面图，如图3、图4所示。在Mathematica下用Contour Plot可得<BR>In［8］:=ContourPlot［z/(y*y+z*z)^(3/2),｛y,-15,15｝,｛z,0,30｝］<BR>Out［8］=<STRONG><SUP>.</SUP></STRONG>ContourGraphics<STRONG><SUP>.</SUP></STRONG><BR>如不需要灰度值，则为：In［9］:=Show［%,ContourShading→False］<BR>Out［9］=<STRONG><SUP>.</SUP></STRONG>ContourGraphics<STRONG><SUP>.</SUP></STRONG></FONT></P></TD></TR></TBODY></TABLE></P>
<P align=center><IMG height=246 alt="14-3.gif (11416 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/14-3.gif" width=250></P>
<P>
<TABLE width="90%" border=0>
<TBODY>
<TR>
<TD><FONT size=3><STRONG>
<P align=center>图3　</STRONG>带灰度的球体重力异常断面等值线图</FONT></P></TD></TR></TBODY></TABLE></P>
<P align=center><IMG height=282 alt="14-4.gif (9397 bytes)" src="http://www.wanfangdata.com.cn/qikan/periodical.Articles/wthtjsjs/wtht99/wtht9903/image03/14-4.gif" width=300></P>
<P>
<TABLE width="90%" border=0>
<TBODY>
<TR>
<TD><FONT size=3><STRONG>
<P align=center>图4　</STRONG>球体重力异常断面等值线图</P>
<P align=left>　　从以上例子可以看出，用Mathematica符号计算系统(以及其它符号计算系统)对物探计算中一些量进行推导、积分、求导、化简、作图、数值积分、拟合、Fourier变换均非常方便，从而为研究工作者从事课题研究、科技论文写作、课题汇报等提供了一个高效的基础工作平台。<BR>　　另外，如果将物探正反演计算中的一些基本公式、图表、参数在Mathematica下进行编程和集成，形成一个活的、电子性的、可视性强的“物探计算解释系统”，则更有潜在的应用价值。物探中的磁法勘探，其理论推演比重力更复杂，Mathematica符号计算系统的应用就显得更为必要和紧迫。<BR>　　本文是作者在中科院测地所开放实验室所作的部分成果之一，作者非常感谢该实验室的资助以及该所同行们的愉快合作。</P>
<P align=left><STRONG>作者简介</STRONG>：边少锋，男，38岁。现任郑州解放军测绘学院副教授和中科院测量与地球物理研究所高级访问学者，主要从事地球重力场及其相关地球物理解释等方面的研究。<BR><STRONG>作者单位</STRONG>：中科院测量与地球物理研究所　武汉中科院测量与地球物理研究所(邮政编码：430077)</P>
<P align=left></FONT><FONT size=4><STRONG>参考文献</STRONG></FONT><FONT size=3><BR>1　张韵华.<STRONG>Mathematica符号计算系统实用教程.</STRONG>合肥：中国科学技术出版社，1998<BR>2　张志涌，刘瑞祯，杨祖樱.<STRONG>掌握和精通MATLAB.</STRONG>北京：北京航天航空大学出版社，1999<BR>3　重力勘探资料解释手册编写组.<STRONG>重力勘探资料解释手册.</STRONG>北京：地质出版社，1983<BR>4　罗孝宽，郭绍雍.<STRONG>应用地球物理教程重力磁法.</STRONG>北京：地质出版社，1991</P></FONT>
<P align=right><FONT size=3>收稿日期：1999-05-03</FONT></P></TD></TR></TBODY></TABLE></P>]]></description>
</item><item>
<title><![CDATA[剖析网站遭遇的三次入侵 分析黑客入侵方法]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=hackxboy1985&amp;id=20225</link>
<author>hackxboy1985</author>
<pubDate>2006/11/22 10:43:34</pubDate>
<description><![CDATA[随着教育信息化进程的推进，各类教育网站大量涌现。由于教育网站大多是学校计算机教师自己开发管理的小型网站，普通存在着设备、技术、专业人员不足的问题，网站自身存在漏洞，常常成为黑客攻击的目标，严重影响了正常业务的开展。这里，笔者希望通过对教育网站所遭遇的三次黑客入侵的剖析，来分析黑客常用的入侵方法和手段。 
<P></P>
<P>　　第一次遭遇入侵 </P>
<P>　　1. 入侵现象：2004年春节，网站的公告栏上突然出现“此论坛有漏洞，请管理员修复”的内容，并被粘贴了一张图片。 </P>
<P>　　2. 处理问题的过程：首先想到的是以为存在某个Windows 2000漏洞，于是就先删除这条内容，然后对Windows 2000服务器重新安装升级补丁，完成更严格的安全设置并更换了全套密码。自以为可以高枕无忧了，不料没过几天，公告板上再次出现黑客的警告“你的漏洞依然存在，我可以告诉你问题所在，但作为回报我要你网站的源代码”。 </P>
<P>　　3. 入侵原理：我当然不会轻易就范，经过查阅资料最后发现原来漏洞是SQL致命的“单引号注入”。入侵原理如下：在网站后台管理登录页面用户密码认证时，如果用户在“UserID”输入框内输入“Everybody”，在密码框里输入“anything or 1=1”，查询的SQL语句就变成了：Select  from user where username=everyboby and password=anything or 1=1。不难看出，由于“1=1”是一个始终成立的条件，判断返回为“真”，Password的限制形同虚设，不管用户的密码是不是Anything，他都可以以Everybody的身份远程登录，获得后台管理权，在公告栏发布任何信息。 </P>
<P>　　4. 解决方法：用replace函数屏蔽单引号。 </P>
<P>　　select  from user where username=&amp;&amp;replace(request.form("UserID"),,")&amp;&amp; and password= &amp;&amp;replace(request.form </P>
<P>　　("Pass"),,")&amp;&amp; </P>
<P>　　再次被入侵 </P>
<P>　　有了第一次被入侵的经历，事后几周我心里一直忐忑不安，但不幸还是发生了。 　　 </P>
<P>　　1. 入侵现象：一天，突然发现网站的主页文件和数据库部分数据被删除，从入侵的痕迹分析是同一黑客所为。 </P>
<P>　　2. 处理问题的过程：首先查看系统日志、SQL的日志，没有发现价值的线索，采用X-Scan、木马克星和瑞星杀毒软件自带的系统漏洞扫描工具进行扫描，系统没有严重的安全漏洞，于是问题的查找陷入了困境，幸好网站有完整的备份数据，最后只能先恢复网站的正常运行。巧的是在一周后一次通过后台管理上载文件的过程中，发现有人上载过cmd.asp、mun.asp和1.bat三个文件的操作痕迹，时间为第一次入侵期间。但机器硬盘上已无法查找到这三个文件，这是木马程序，显然这黑客比较专业，在入侵完成后自己清理了战场，但还是在网站上载记录中留下了线索，否则管理员根本无从知晓。 　　 </P>
<P>　　3. 入侵原理：cmd.asp、mun.asp是木马程序，经过翻阅大量资料显示这类木马为ASP木马，属于有名的海阳顶端ASP木马的一种，这类木马一旦被复制到网站的虚拟目录下，远端只要用IE浏览器打开该ASP文件，就可以在Web界面上轻松地控制该计算机执行任何操作。我在网上下载了一个ASP木马，模拟测试了一下，功能非常强大，能实现远程文件上传下载、删除、用户添加、文件修改和程序远程执行等操作。1.bat文件为批处理文件，内容根据需要写入一组程序执行命令在远程计算机上实现自动执行。显然，这个木马是在黑客第一次入侵时就放上去的，一旦网管员没按他的要求就范，就可以轻松地再次实施攻击。 </P>
<P>　　4. 解决方法：为了防止仍有隐藏很深的木马，确保万无一失，我重新安装了Windows2000系统，并更换了全套用户名，密码。 </P>
<P>　　第三次被入侵的分析 </P>
<P>　　1. 入侵现象：2004年10月，网站再次遭到入侵。这天我在图片新闻栏目中突然发现一条图片新闻被去年一条旧的内容所替代，当客户端点击该新闻图片时，瑞星杀毒监控系统报警发现病毒，显然网站已被入侵并被植入带病毒的图片，这是一种以图片文件格式作为掩护的木马病毒，用户一旦点击该图片，病毒就被植入C:\Windows\Temporary Internet Files目录下，这是一起恶性黑客入侵事件，从其手法上看为另一黑客所为。 </P>
<P>　　2. 处理问题的过程：有了前两次被入侵的教训，我养成经常了解有关系统安全漏洞信息的习惯，并定期进行系统UPDATE，因此利用系统漏洞入侵的可能性不大。而该置入的图片是放入SQL数据库内的，这说明黑客利用了网站后台管理功能实现图片上传，而这需要合法的用户密码才行。我设定的用户名和密码不容易被破解，那么只有一条途径，即黑客通过某种特定的方式拿到了放在SQL数据库表中的后台管理用户名和密码。有了这个思路，我在互联网上研读了大量相关资料，最后锁定本次受到的攻击为“SQL注入式入侵”。 </P>
<P>　　3. 入侵原理：SQL注入的原理，是客户端从正常的WWW端口提交特殊的代码，利用返回的错误提示，收集程序及服务器的信息，从而获取想得到的资料。 </P>
<P>　　4. 解决方法：在ASP程序提取数据库表单内容的“select * from”语句前增加一条关闭SQL出错信息的显示语句“on error resume next”，如 </P>
<P>　　on error resume next </P>
<P>　　rs.Open "select  from xinwen where xw_id="&amp;&amp;request.QueryString ("xw_id"),conn,1,3 </P>]]></description>
</item>
</channel>
</rss>