如何写网站建设需求说明书

JavaScript014

如何写网站建设需求说明书,第1张

一个网站项目的确立是建立在各种各样的需求上面的,这种需求往往来自于客户的实际需求或者是出于公司自身发展的需要,其中客户的实际需求也就是说这种交易 性质的需求占了绝大部分。面对对网站开发拥有不同知识层面的客户,项目的负责人对用户需求的理解程度,在很大程度上决定了此类网站开发项目的成败。因此如 何更好地的了解、分析、明确用户需求,并且能够准确、清晰以文档的形式表达给参与项目开发的每个成员,保证开发过程按照满足用户需求为目的正确项目开发方 向进行,是每个网站开发项目管理者需要面对的问题。就这个问题,本文想提出自己的一些看法和建议,希望各位读者批评指正: 一、 那些人应该参与网站开发项目的需求分析活动需求分析活动其实本来就是一个和客户交流,正确引导客 户能够将自己的实际需求用较为适当的技术语言进行表达(或者由相关技术人员帮助表达)以明确项目目的的过程。这个过程中也同时包含了对要建立的网站基本功 能和模块的确立和策划活动。所以项目小组每个成员、客户甚至是开发方的部门经理(根据项目大小而定)的参与是必要的。而项目的管理者在需求分析中的职责有 如下几个方面:1、 负责组织相关开发人员与用户一起进行需求分析。2、 组织美术和技术骨干代表或者全部成员(与用户讨论)编写《网站功能描述书(初稿)》文档。3、 组织相关人员对《网站功能描述书(初稿)》进行反复讨论和修改,确定《网站功能描述书》正式文档。4、 如果用户有这方面的能力或者用户提出要求,项目管理者也可以指派项目成员参与,而由用户编写和确定《网站功能描述书》文档。5、 如果项目比较大的话,最好能够有部门经理或者他授权的人员参与到《网站功能描述书》的确定过程中来。二、 完整的需求调查文档记录体系在整个需求分析的过程中,将按照一定规范的编写需求分析的相关文档不但可以帮助项目成员将需求分析结果更加明确化,也为以后开发过程中做到了现实文本形式的备忘,并且有助于公司日后的开发项目提供有益的借鉴和模范,成为公司在项目开发中积累的符合自身特点的经验财富。   需求分析中需要编写的文档主要是《网站功能描述书》,他基本上是整个需求分析活动的结果性文档,也是开发工程中项目成员主要可供参考的文档。为了更加清 楚的描述《网站功能描述书》往往还需要编写《用户调查报告》和《市场调研报告》文档来辅助说明。各种文档最好有一定的规范和固定格式,以便增加其可阅读性 和方便阅读者快速理解文档内容,相关规定将在本文后面讨论。三、 向用户调查些什么在需求分析的工程中,往往有很多不明确的用户需求,这个时候项目负责人 需要调查用户的实际情况,明确用户需求。一个比较理想化的用户调查活动需要用户的充分配合,而且还有可能需要对调查对象进行必要的培训。所以调查的计划安 排:时间、地点、参加人员、调查内容,都需要项目负责人和用户的共同认可。调查的形式可以是:发需求调查表、开需求调查座谈会或者现场调研。调查的内容主 要如下:1、 网站当前以及日后可能出现的功能需求。2、 客户对网站的性能(如访问速度)的要求和可靠性的要求。3、 确定网站维护的要求。4、 网站的实际运行环境。5、 网站页面总体风格以及美工效果(必要的时候用户可以提供参考站点或者由公司向用户提供)。6、 主页面和次级页面数量,是否需要多种语言版本等7、 内容管理及录入任务的分配。8、 各种页面特殊效果及其数量(js,flash等)9、 项目完成时间及进度(可以根据合同)10、明确项目完成后的维护责任。调查结束以后,需要编写《用户调查报告》,《报告》的要点是:1、 调查概要说明:网站项目的名称;用户单位;参与调查人员;调查开始终止的时间;调查的工作安排。2、 调查内容说明:用户的基本情况;用户的主要业务;信息化建设现状;网站当前和将来潜在的功能需求、性能需求、可靠性需求、实际运行环境;用户对新网站的期望等。3、 调查资料汇编:将调查得到的资料分类汇总(如调查问卷,会议记录等等)。四、 市场调研活动内容通过市场调研活动,清晰的分析相似网站的性能和运行情况。可以帮助项目负责人更加清楚的构想出自己开发的网站的大体架构和模样,在总结同类网站优势和缺点的同时项目开发人员可以博采众长开发出更加优秀的网站。   但是由于实际中时间、经费、公司能力所限,市场调研覆盖的范围有一定的局限性,在调研市场同类网站的时候,应尽可能调研到所有比较出名和优秀的同类网 站。应该了解同类网站的使用环境与用户的诧异点、类似点,同类产品所定义的用户详细需求(需要公司或者项目负责人有一定的关系)。市场调研的重点应该放在 主要竞争对手的作品或类似网站作品的有关信息上。市场调研可以包括下列内容:1、 市场中同类网站作品的确定。2、 调研作品的使用范围和访问人群。3、 调研产品的功能设计(主要模块构成,特色功能,性能情况等等)4、 简单评价所调研的网站情况。调研的目的是明确并且引导用户需求。对市场同类产品调研结束后,应该撰写《市场调研报告》主要包括一下要点:1、 调研概要说明:调研计划;网站项目名称、调研单位、参与调研、调研开始终止时间。2、 调研内容说明:调研的同类网站作品名称、网址、设计公司、网站相关说明、开发背景、主要适用访问对象、功能描述、评价等3、 可采用借鉴的调研网站的功能设计:功能描述、用户界面、性能需求、可采用的原因。4、 不可采用借鉴的调研网站的功能设计:功能描述、用户界面、性能需求、不可采用的原因。5、 分析同类网站作品和主要竞争对手产品的弱点和缺陷以及本公司产品在这些方面的优势。6、 调研资料汇编:将调研得到的资料进行分类汇总。

五、 清晰的需求分析输出——《网站功能描述书》   在拥有前期公司和客户签订的合同或者是标书的约束之下,通过较为详细具体的用户调查和市场调研活动,借鉴其输出的《用户调查报告》和《市场调研报告》文 档,项目负责人应该对整个需求分析活动进行认真的总结,将分析前期不明确的需求逐一明确清晰化,并输出一份详细清晰的总结性文档──《网站功能描述书(最 终版)》以供作为日后项目开发过程中的依据。《网站功能描述书》必须包含以下内容:1、 网站功能2、 网站用户界面(初步)3、 网站运行的软硬件环境4、 网站系统性能定义5、 网站系统的软件和硬件接口6、 确定网站维护的要求7、 确定网站系统空间租赁要求8、 网站页面总体风格及美工效果。9、 主页面及次页面大概数量。10、管理及内容录入任务分配。11、各种页面特殊效果及其数量。12、项目完成时间及进度(根据合同)13、明确项目完成后的维护责任。综上所述,在网站项目的需求分析中主要是由项目负责人来确定对用户需求的理解程度,而用户调查和市场调研等需求分析活动的目的就是帮助项目负责人加深对用户需求的理解和对前期不明确的地方进行明确化,以便于日后在项目开发过程中作为开发成员的依据和借鉴。

当然一次成功的需求分析不仅需要项目负责人甚至是客户等所有项目相关人员的共同努力,还和公司的能力范围有一定关系。需要说明的是本文所述的需求分析活 动内容是建立在较为理想的基础上的。由于各个公司现实情况的不同,读者可以根据自身情况不一借鉴吸收利用。重要的是能构根据本公司的情况,系统的规范此类 文档做好保存和收集,相信对公司以后其他网站项目的进行以及公司自身实力的增强都会有很大帮助。

星想互联 http://www.hbxnseo.com,一个专门从事网站建设与seo优化推广网 http://www.hbxnseo.com/a/wangzhanjianshe/2011/0317/177.html

方法就是把你所需求的js和css放入一个文件夹common下!抄

<link type="text/css" rel="stylesheet" href="common/test.css"></link>

<script type="text/javascript" src="common/test.js"></script>

这样两者引入以后就可以使用了 当然文件夹的路径应该袭要设置好,

我的例子是common文件和你要引用的文件在同一目录下知的!

那你可以把

<link type="text/css" rel="stylesheet" href="common/test.css"></link>

<script type="text/javascript" src="common/test.js"></script>

引用的文件都放入一个文件include.php当中,然后在需要的里面加上

include ("include.php")就可以在里面使用。如果需道要更改的话,只要改include.php里面的就行了!希望是你要的!

本人在开发工作中就曾与不按规范来开发的同事合作过,与他合作就不能用"愉快"来形容了。现在本人撰写此文的目的除了与大家分享一点点经验外,更多的是希望对未来的合作伙伴能够起到一定的借鉴作用。当然,如果我说的有不科学的地方还希望各路前辈多多指教。下面分条目列出各种规范要求,这些要求都是针对同事编码毛病提出来的,好些行业约定的其它规范可能不会再提及。1. 保证代码压缩后不出错对于大型的JavaScript项目,一般会在产品发布时对项目包含的所有JavaScript文件进行压缩处理,比如可以利用Google Closure Compiler Service对代码进行压缩,新版jQuery已改用这一工具对代码进行压缩,这一般会去掉开发时写的注释,除去所有空格和换行,甚至可以把原来较长的变量名替换成短且无意义的变量名,这样做的目的是加快文件的下载速度,同时也减小网站访问带来的额外数据流量,另外在代码保护上也起到了一点点作用,至少压缩后的代码即使被还原还是没那么容易一下读懂的。要想代码能正确通过压缩,一般要求语句都要以分号正常结束,大括号也要严格结束等,具体还要看压缩工具的要求。所以如果一开始没有按标准来做,等压缩出错后再回去找错误那是浪费时间。2. 保证代码能通过特定IDE的自动格式化功能一般较为完善的开发工具(比如Aptana Studio)都有代码"自动格式"化功能,这一功能帮助实现统一换行、缩进、空格等代码编排,你可以设置自己喜欢的格式标准,比如左大括号{是否另起一行。达到这个要求的目的在于方便你的开发团队成员拿你代码的一个副本用IDE自动格式化成他喜欢或熟悉的风格进行阅读。你同事需要阅读你的代码,可能是因为你写的是通用方法,他在其它模块开发过程中也要使用到,阅读你的代码能最深入了解方法调用和实现的细节,这是简单API文档不能达到的效果。3. 使用标准的文档注释这一要求算是最基本的,这有利于在方法调用处看到方法的具体传参提示,也可以利用配套文档工具生成html或其它格式的开发文档供其他团队成员阅读,你可以尝试使用jsdoc-toolkit。如果你自动生成的API是出自一个开放平台,就像facebook.com应用,那么你的文档是给天下所有开发者看的。另外编写完整注释,也更方便团队成员阅读你的代码,通过你的参数描述,团队成员可以很容易知道你编写的方法传参与实现细节。当然也方便日后代码维护,这样即使再大的项目,过了很长时间后,回去改点东西也就不至于自己都忘记了当时自己写的代码是怎么一回事了。4. 使用规范有意义的变量名使用规范有意义的变量名可以提高代码的可读性,作为大项目开发成员,自己写的代码不仅仅要让别人容易看懂。开发大项目,其实每个人写的代码量可能都比较大,规范命名,日后自己看回自己的代码也显的清晰易懂,比如日后系统升级或新增功能,修改起代码来也轻松多了。如果到头发现自己当初写的代码现在看不太懂了,那还真是天大的笑话了。当然,使用有意义的变量名也尽量使用标准的命名,比如像这里:var me = this也许没有var self = this好,因为self是Python中的关键字,在Python中self就是通常语言this的用法。再看下面一个例子,加s显然比没有加来的科学些,这样可以知道这个变量名存的是复数,可能是数组等: var li = document.getElementsByTagName('li') var lis = document.getElementsByTagName('li') 5. 不使用生偏语法JavaScript作为一门动态脚本语言,灵活性既是优点也是缺点,众所周知,动态语言不同层次开发人员对实现同样一个功能写出来的代码在规范或语法上会存在较大的差别。不管怎么样,规范编码少搞怪,不把简单问题复杂化,不违反代码易读性原则才是大家应该做的。比如这语句:typeof(b) == 'string' &&alert(b)应该改为:if (typeof(b) == 'string') alert(b),像前面那种用法,利用了&&运算符解析机制:如果检测到&&前语句返回false就不再检测后面语句,在代码优化方面也有提到把最可能出现的情况首先判断,像这种写法如果条件少还好,如果条件较多而且语句也长,那代码可读性就相当差。又比如:+function(a){var p = a}( 'a')应该改为:(function(a){var p = a})( 'a'),其实function前面的+号与包含function的()括号作用是一样的,都是起运算优先作用,后者是常见且容易看明白的防止变量污染的做法,比如好些流行JavaScript框架就是采用后面这种方式。再说个降低代码可读性的例子,如:function getPostionTxt(type){return type == 2 ? "野外" : (type == 3 ? "商城" : (type == 4 ? "副本" : null))}应该改成:function getPostionTxt(type){var typeData={"2":"野外","3":"商城","4":"副本"}if (typeData[type]) return typeData[type]else return null}。如果type是从0开始不间断的整数,那么直接使用数组还更简单,这种结果看起来就清晰多了,看到前面那种多层三元表达式嵌套头不晕吗。6. 不在语句非赋值地方出生中文语句中不应该出现中文我想一般人都知道,虽然这样做不影响程序运行,但是显然有背行业标准要求,当然我们也不是在使用"易语言"做开发。关于这一个问题,我本来不想把它拿出来说的,但我确实遇到有人这样做的,也不知道是不是因为他的英语实在太烂了,至少还可以用拼音吧,另外寻求翻译工具帮忙也不错的选择。我举例如下,像以下写法出现在教学中倒还可以理解:this.user['名字'] = '张三' 或者 this.user.名字 = '张三'7. 明确定义函数固定数量的参数固定数量参数的函数内部不使用arguments去获取参数,因为这样,你定义的方法如果包含较多的脚本,就不能一眼看到这个方法接受些什么参数以及参数的个数是多少。比如像下面: var $ = function(){return document.getElementById(arguments[0])}应该改成:var $ = function(elemID){return document.getElementById(elemID)} 8. 不必热衷动态事件绑定虽然知道事件可以动态绑定,比如使用addEventListener或者使用jQuery的bind方法,也知道采用动态事件绑定可以让XHTML更干净,但是一般情况下我还是建议直接把事件写在DOM节点上,我认为这样可以使代码变得更容易维护,因为这样做,我们在查看源代码的时候就可以容易地知道什么Element绑定了什么方法,简单说这样更容易知道一个按钮或链接点击时调了什么方法脚本。9. 降低代码与XHTML的耦合性不要过于依赖DOM的一些内容特征来调用不同的脚本代码,而应该定义不同功能的方法,然后在DOM上调用,这样不管DOM是按钮还是链接,方法的调用都是一样的,比如像下面的实现显然会存在问题: function myBtnClick(obj) { if (/确定/.test(obj.innerHTML)) alert('OK')else if (/取消/.test(obj.innerHTML)) alert('Cancel')else alert('Other')} <a herf="javascript:" onclick="myBtnClick(this)">确定</a><a herf="javascript:" onclick="myBtnClick(this)">取消</a>上面例子其实在一个函数内处理了两件事情,应该分成两个函数,像上面的写法,如果把链接换成按钮,比如改成这样:<input type="button" onclick="myBtnClick(this)" value="确定" />,那么myBtnClick函数内部的obj.innerHTML就出问题了,因为此时应该obj.value才对,另外如果把按钮名称由中文改为英文也会出问题,所以这种做法问题太多了。10. 一个函数应该返回统一的数据类型因为JavaScrip是弱类型的,在编写函数的时候有些人对于返回类型的处理显得比较随便,我觉得应该像强类型语言那样返回,看看下面的两个例子: function getUserName(userID) { if (data[userID]) return data[userID]else return false} 应该改为: function getUserName(userID) { if (data[userID]) return data[userID]else return ""} 这个方法如果在C#中定义,我们知道它准备返回的数据类型应该是字符串,所以如果没有找到这个数据我们就应该返回空的字符串,而不是返回布尔值或其它不合适的类型。这并没有影响到函数将来的调用,因为返回的空字符串在逻辑判断上可被认作"非",即与false一样,除非我们使用全等于"==="或typeof进行判断。11. 规范定义JSON对象,补全双引号使用标准肯定是有好处的,那么为什么还是有人不使用标准呢?我想这可能是懒或习惯问题。也许还会有人跟我说,少写引号可以减轻文件体积,我认为这有道理但不是重点。对于服务器返回的JSON数据,使用标准结构可以利用Firefox浏览器的JSONView插件方便查看(像查看XML那样树形显示),另外你如果使用jQuery做开发,最新版本jQuery1.4+是对JSON格式有更高要求的,具体的可以自己查阅jQuery更新文档。比如:{name:"Tom"}或{'name':'Tom'}都应该改成{"name":"Tom"}。12. 不在文件中留下未来确定不再使用的代码片段当代码调整或重构后,之前编写的不再使用的代码应该及时删除,如果认为这些代码还有一定利用价值可以把它们剪切到临时文件中。留在项目中不仅增加了文件体积,这对团队其它成员甚至自己都起到一定干扰作用,怕将来自己看回代码都搞不懂这方法是干什么的,是否有使用过。当然可以用文档注释标签@deprecated把这个方法标识为不推荐的。13. 不重复定义其他团队成员已经实现的方法对于大型项目,一般会有部分开发成员实现一些通用方法,而另外一些开发成员则要去熟悉这些通用方法,然后在自己编写模块遇到有调用的需要就直接调用,而不是像有些开发者喜欢"单干",根本不会阅读这些通用方法文档,在自己代码中又写了一遍实现,这不仅产生多余的代码量,当然也是会影响团队开发效率的,这是没有团队合作精神的表现,是重复造轮子的悲剧。比如在通用类文件Common.js有定义function $(elemID){return document.getElementById(elemID)}那么就不应该在Mail.js中再次出现这一功能函数的重复定义,对于一些复杂的方法更应该如此。14. 调用合适的方法当有几个方法都可以实现同类功能的时候,我们还是要根据场景选择使用最合适的方法。下面拿jQuery框架的两个AJAX方法来说明。如果确定服务器返回的数据是JSON应该直接使用$.getJSON,而不是使用$.get得到数据再用eval函数转成JSON对象。如果因为本次请求要传输大量的数据而不得以使用$.post也应该采用指定返回数据类型(设置dataType参数)的做法。如果使用$.getJSON,在代码中我们一眼能看出本次请求服务器返回的是JSON。温馨提示:jQuery1.4后,如果服务器有设置数据输出的ContentType,比如ASP.NET C#设置 Response.ContentType = "application/json",那么$.get将与$.getJSON的使用没有什么区别。15. 使用合适的控件存储合适的数据曾发现有人利用DIV来保存JSON数据,以待页面下载后将来使用,像这样:<div id="json">{ "name":"Tom"}</div>,显然这个DIV不是用来界面显示的,如果非要这样做,达到使用HTML文件进行数据缓存的作用,至少改成用隐藏域来存这数据更合理,比如改成:<input type="hidden" value=" { "name":"Tom"}" />。其实也可以利用window对象来保存一些数据,像上面的例子,我们可以在AJAX请求页直接包含这样的脚本块:<script>window.userData = { "name":"Tom"}</script>,当在AJAX请求回调函数中执行完$( "#MyDiv ").html(data)后,在window上就马上有了这一变量。如果采用第一种方法,将不可避免eval(document.getElementById("UserData").innerHTML)。如果在window对象存放大量数据的话,这些数据不用时要及时手动清理它们,它们是要等浏览器刷新或重启后才会消失的,这就会增加内存开销。16. 永远不要忽略代码优化工作代码最优化是每个程序员应该努力达到的目标,也应该成为程序员永远的追求。写代码的时候,不应该急着把功能实现出来,要想一下如何写代码,代码的执行效率才是较好的。举个例子:假设有定义getElementById的快捷方法functoin $(elemID){return document.getElementById(elemID)},那么有人可能会写出这样的代码$("MyDiv").parentNode.removeChild($("MyDiv")),其实这里执行了两次getElementById DOM查找,如果改成这样将更好:var myDiv = $("MyDiv")myDiv.parentNode.removeChild(myDiv)。还好getElementById的DOM查找算比较快,如果换成getElementsByTagName则更应该注重优化了。jQuery开发团队也有提醒大家要注意这方面的问题。当然,代码优化技巧也是需要个人不断积累的。曾有朋友跟我说他写网站后台代码从来不用考虑优化的,因为他们网站用的是至强四核服务器,我觉得这是很可笑的。17. 会分析策划文档,能用面向对象方法进行接口定义和代码组织这一能力对于每一个程序员来说都是非常重要的,这也是决定一个程序员水平高低的一个重要因素。能够把需求细化并抽象出不同的类,然后有条理地编写代码,使代码结构清晰,可读性高,代码易于维护,不至于太过程化而且杂乱无章,这样才算是一个优秀的程序员。