﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-傻瓜纯洁思想里的沙子-文章分类-工作</title><link>http://www.blogjava.net/bubaishui/category/13064.html</link><description>愿意当傻瓜的人都快乐</description><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 11:46:21 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 11:46:21 GMT</pubDate><ttl>60</ttl><item><title>软件开发的基本策略</title><link>http://www.blogjava.net/bubaishui/articles/73958.html</link><dc:creator>哈迪尤</dc:creator><author>哈迪尤</author><pubDate>Mon, 09 Oct 2006 01:20:00 GMT</pubDate><guid>http://www.blogjava.net/bubaishui/articles/73958.html</guid><wfw:comment>http://www.blogjava.net/bubaishui/comments/73958.html</wfw:comment><comments>http://www.blogjava.net/bubaishui/articles/73958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bubaishui/comments/commentRss/73958.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bubaishui/services/trackbacks/73958.html</trackback:ping><description><![CDATA[
		<p>人们在探索软件工程方法的几十年里，提出了许多软件开发的方法，但这些方法都不是严密的理论。我们不应该教条地套用方法，更重要的是学会"选择合适的方法"和"产生新方法"。<br />　 软件开发中的三种基本策略：<font color="#990000">复用、分而治之、优化与折衷</font>。</p>
		<p>1.<font color="#990000">复用 </font></p>
		<p>
				<font color="#990000">   </font>
				<font color="#000000">对于建立软件系统而言，所谓复用就是利用某些已开发的、对建立新系统有用的软件元素来生成新的软件系统。在一个新系统中，大部分的内容是成熟的，只有小部分内容是创新的。一般地，可以相信成熟的东西总是比较可靠的，而大量成熟的工作可以通过复用来快速实现，人们应该把大部分的时间用在小比例的创新工作上，而把小部分的时间用在大比例的成熟工作中，这样才能把工作做得既快又好。<br />　　我们将具有一定集成度并可以重复使用的软件组成单元称为软构件（Software Component），软件复用就是直接使用已有的软构件，即可组装（或加以合理修改）成新的系统，而可以不必每次从零做起。一方面，软件复用方法合理化并简化了软件开发过程，减少了总的开发工作量与维护代价，既降低了软件的成本又提高了生产率。另一方面，由于软构件是经过反复使用验证的，自身具有较高的质量，因此由软构件组成的新系统也具有较高的质量。</font>
		</p>
		<p>2.<font color="#cc0033">分而治之</font></p>
		<p>　分而治之是指把大而复杂的问题分解成若干个简单的小问题，然后逐个解决。这种朴素的思想来源于人们生活与工作的经验，也完全适合于技术领域。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。 </p>
		<p>3.<font color="#cc0000">优化与折衷</font></p>
		<p>软件的优化是指优化软件的各个质量因素，如提高运行速度、提高对内存资源的利用率、使用户界面更加友好、使三维图形的真实感更强等等。我们应该树立这样的正确认识：优化工作不是可有可无的事情，而是必须要做的事情。<br /><br />　　当优化工作成为一种责任时，程序员才会不断改进软件中的算法，数据结构和程序组织，从而提高软件质量。著名的3D游戏软件Quake，能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致，例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级，其技术水平已经远胜于目前国内领先的图形学相关科研成果。 <br />　　优化工作是十分复杂的，有时很难实现所有目标的优化，这时就需要"折衷"策略。软件的折衷策略是指通过协调各个质量因素，实现整体质量的最优。<br />　　软件折衷的重要原则是不能使某一方损失关键的职能，更不可以象"舍鱼而取熊掌"那样抛弃一方。例如3D动画软件的瓶颈通常是速度，但如果为了提高速度而在程序中取消光照明计算，那么场景就会丧失真实感，3D动画也就不再有意义了。<br /><br />　　折衷是有原则的，如果滥用折衷的话，那么一旦碰到困难，人们就会用拆东墙补西墙的方式去折衷，不再下苦功去做有意义的优化。所以，我们应当坚持这样的折衷立场：在保证其它因素不差的前提下，使某些因素变得更好。 </p>人们对软件存在着许多错误的观点，这些观点表面上看起来很有道理，符合人们的直觉，但实际上给管理者和开发人员带来了严重的问题。许多人认识到下述观点是错误的，但遗憾的是旧的观念和方法培植了拙劣的管理和技术习惯。 
<table bordercolor="#9900cc" cellspacing="1" cellpadding="1" width="90%" align="center" border="1"><tbody><tr><td width="13%" height="35"><font color="#ff0000">观点之一</font></td><td width="87%" height="35"><p align="left">我们拥有一套讲述如何开发软件的书籍，书中充满了标准与示例，可以帮助我们解决软件开发中遇到的任何问题。 </p></td></tr><tr><td width="13%"><div align="center"><font color="#0033cc">客观事实</font></div></td><td width="87%">好的参考书无疑能指导我们的工作，充分利用书籍中的方法、技术和技巧，可以有效地解决软件开发中大量常见的问题。但实践者并不能依赖于书籍，因为在现实工作中，由于条件千差万别，即使是相当成熟的软件工程规范，常常也无法套用。另外，软件技术日新月异，没有哪一种软件标准能长盛不衰。</td></tr><tr><td width="13%"><font color="#ff0000">观点之二</font></td><td width="87%">如果我们已经落后于计划，可以增加更多的程序员来赶上进度。</td></tr><tr><td width="13%"><div align="center"><font color="#0033cc">客观事实</font></div></td><td width="87%">软件开发不同于传统的机械制造，人多不见得力量大。如果给落后于计划的项目增添新人，可能会更加延误项目。因为新人会产生很多新的错误，使项目混乱，并且原有的开发人员向新人解释工作和交流思想都要花费时间，使实际的开发时间更少，所以制定恰如其分的项目计划是很重要的。</td></tr><tr><td width="13%"> </td><td width="87%"><font color="#0033cc">【讲解】<br />　　假设一个项目估计需要12人月工作量，指定由3个人在4个月内完成，如果第一个月的任务花了两个月才完成，那么增加人力的结果如何？假设增加2个人参加项目，不论新增加的人适应能力有多强，总需要有人去帮助了解熟悉情况，如果这些工作占用了一个月的时间，这样又有3个人月工作量在新计划之外。由于人员增加，工作任务需要重新划分，到第3个月结束时虽然有5个人在工作，实际上余留下7个人的工作量。</font></td></tr><tr><td width="13%"><font color="#ff0000">观点之三</font></td><td width="87%">项目需求总是在不断变化，但这些变化能够很容易地满足，因为软件是灵活的。</td></tr><tr><td width="13%"><div align="center"><font color="#0033cc">客观事实</font></div></td><td width="87%">软件需求确实是经常变化的，但这些变化产生的影响会随着其引入时间的不同而不同。对需求把握得越准确，软件的修修补补就越少。有些需求在一开始时很难确定，在开发过程中要不断地加以改正。软件修改越早代价越少，修改越晚代价越大，就跟治病一样道理。 </td></tr><tr><td width="13%"><font color="#ff0000">观点之四</font></td><td width="87%">有了对目标的一般描述就足以开始写程序了，我们以后可以再补充细节。</td></tr><tr><td width="13%"><div align="center"><font color="#0033cc">客观事实</font></div></td><td width="87%">不完善的系统定义是软件项目失败的主要原因。关于待开发软件的应用领域、功能、性能、接口、设计约束和标准等需要详细的描述，而这些只有通过用户和开发人员之间的通信交流才能确定。越早开始写程序，就要花越长时间才能完成它。</td></tr><tr><td width="13%"><font color="#ff0000">观点之五</font></td><td width="87%">一旦我们写出了程序并使其正常运行，我们的工作就结束了。人们有时认为，只有差的软件产品才需要维护。</td></tr><tr><td width="13%"><div align="center"><font color="#0033cc">客观事实</font></div></td><td width="87%">从如图1.12所示的统计数据来看，软件投入的50%～70%是花费在交付给用户之后。品质差的产品被丢弃，只有好的产品才需要维护和改进。</td></tr><tr><td width="13%"><font color="#ff0000">观点之六</font></td><td width="87%">一个成功的项目唯一应该提交的就是运行程序。<font color="#0033cc">　　</font></td></tr><tr><td width="13%"><div align="center"><font color="#0033cc">客观事实</font></div></td><td width="87%">软件包括程序、数据和文档，其中文档是成功开发的基础，为软件维护提供了指导。 </td></tr></tbody></table><br /><br /><p> </p><p>摘录自：<a href="http://www.360doc.com/showWeb/0/0/225654.aspx">http://www.360doc.com/showWeb/0/0/225654.aspx</a></p><img src ="http://www.blogjava.net/bubaishui/aggbug/73958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bubaishui/" target="_blank">哈迪尤</a> 2006-10-09 09:20 <a href="http://www.blogjava.net/bubaishui/articles/73958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>smpp 和 cmpp 协议</title><link>http://www.blogjava.net/bubaishui/articles/58228.html</link><dc:creator>哈迪尤</dc:creator><author>哈迪尤</author><pubDate>Fri, 14 Jul 2006 09:34:00 GMT</pubDate><guid>http://www.blogjava.net/bubaishui/articles/58228.html</guid><wfw:comment>http://www.blogjava.net/bubaishui/comments/58228.html</wfw:comment><comments>http://www.blogjava.net/bubaishui/articles/58228.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bubaishui/comments/commentRss/58228.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bubaishui/services/trackbacks/58228.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在温少的日志（http://jobs.cnblogs.com/）中看到他的一篇文章，平时我只接触cmpp协议，乘机补一下smpp 。             CMPP和SMPP都是短信协议中的一种，但它们不是同一类型的协议。SMPP和ESME和SMC（短信中心）之间的协议，而CMPP是SP   和中国移动ISMG之间的通讯协议。   名词解释：      SMPP ：Short Message...&nbsp;&nbsp;<a href='http://www.blogjava.net/bubaishui/articles/58228.html'>阅读全文</a><img src ="http://www.blogjava.net/bubaishui/aggbug/58228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bubaishui/" target="_blank">哈迪尤</a> 2006-07-14 17:34 <a href="http://www.blogjava.net/bubaishui/articles/58228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>长短信</title><link>http://www.blogjava.net/bubaishui/articles/58214.html</link><dc:creator>哈迪尤</dc:creator><author>哈迪尤</author><pubDate>Fri, 14 Jul 2006 08:23:00 GMT</pubDate><guid>http://www.blogjava.net/bubaishui/articles/58214.html</guid><wfw:comment>http://www.blogjava.net/bubaishui/comments/58214.html</wfw:comment><comments>http://www.blogjava.net/bubaishui/articles/58214.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bubaishui/comments/commentRss/58214.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bubaishui/services/trackbacks/58214.html</trackback:ping><description><![CDATA[   超长短信：短信内容超过70个汉字，提交给网关时候需要分成多条，但是用户手机接收时候是一条（sp角度，手机发送长短信概念一样）。<br /><br />      在cmpp协议里，<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">CMPP­_SUBMIT</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">消息定义中有相应的参数配置：   <br />        <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">TP_udhi ：0代表内容体里不含有协议头信息 1代表内容含有协议头信息（长短信，push短信等都是在内容体上含有头内容的）<br />               当设置内容体包含协议头，需要根据协议写入相应的信息，长短信协议头有两种：<br />               6位协议头格式：05 00 03 XX MM NN<br />                     byte 1 : 05, 表示剩余协议头的长度<br />                     byte 2 : 00, 这个值在GSM 03.40规范9.2.3.24.1中规定，表示随后的这批超长短信的标识位长度为1（格式中的XX值）。<br />                     byte 3 : 03, 这个值表示剩下短信标识的长度<br />                     byte 4 : XX，这批短信的唯一标志，事实上，SME(手机或者SP)把消息合并完之后，就重新记录，所以这个标志是否唯<br />                                 一并不是很 重要。<br />                     byte 5 : MM, 这批短信的数量。如果一个超长短信总共5条，这里的值就是5。<br />                     byte 6 : NN, 这批短信的数量。如果当前短信是这批短信中的第一条的值是1，第二条的值是2。<br />                     例如：05 00 03 39 02 01 <br /><br />               7位的协议头格式：06 08 04 XX XX MM NN<br />                     byte 1 : 06, 表示剩余协议头的长度<br />                     byte 2 : 08, 这个值在GSM 03.40规范9.2.3.24.1中规定，表示随后的这批超长短信的标识位长度为2（格式中的XX值）。<br />                     byte 3 : 04, 这个值表示剩下短信标识的长度<br />                     byte 4-5 : XX XX，这批短信的唯一标志，事实上，SME(手机或者SP)把消息合并完之后，就重新记录，所以这个标志是否唯<br />                                    一并不是很重要。<br />                     byte 6 : MM, 这批短信的数量。如果一个超长短信总共5条，这里的值就是5。<br />                     byte 7 : NN, 这批短信的数量。如果当前短信是这批短信中的第一条的值是1，第二条的值是2。<br />                     例如：06 08 04 00 39 02 01        <br /><br />            到此，长短信的发送设置基本完成，但是有一点要注意：<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Src_Id 协议里这个字段在一条长短信中必须要一样，不然手机会解析成三条，   <br />      并三条都 是错误短信。</span>    <br />            对于sp来说，长短信上行，按照协议反过来解析：<br />                       
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 88.48%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 131px; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[] contentBytes </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> msg.getMsgContent();<br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> headLen </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> contentBytes[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 内容头的长度<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 超长短信总条数</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> pk_total </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> contentBytes[headLen </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 超长短信第几条</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> pk_num </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> contentBytes[headLen]; <br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 超长短信序号</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">8</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000"> serial </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> contentBytes[headLen </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]; </span></div><p>   <a href=" http://jobs.cnblogs.com/AddToFavorite.aspx?id=445584">http://jobs.cnblogs.com/AddToFavorite.aspx?id=445584</a></p><p>    </p></span> </span><img src ="http://www.blogjava.net/bubaishui/aggbug/58214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bubaishui/" target="_blank">哈迪尤</a> 2006-07-14 16:23 <a href="http://www.blogjava.net/bubaishui/articles/58214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>