请介绍一次做手工的过程活动的流程,注意把动作写清楚。

先说项目开发过程中团队人员的汾工协作

  毕业至今的大部分项目都是独立完成,虽然也有和其他同事协作的时候但自认为对团队协作的了解和认知都还有所欠缺。很清楚团队协作的重要性但尚未有很好的机会在相对成熟的团队中锻炼实践。

团队中人员的具体安排不讲单纯的看软件开发工作的汾工。在上面设想的开发架构中宏观上可将一个项目划分为前端、程序、

三个模块。由此可推导出团队中需要的成员:美工、程序员和項目经理

  认为理想的软件开发团队由四个专业技能过硬的成员组成:一个美工,熟悉UI的设计并具备将效果图转换成前端页面的能力也就是得同时精通PhotoShop、HTML、CSS、jQuery等前端知识;一个程序员,熟练掌握代码的编写重构;一个项目经理具备

的能力、数据库设计维护的能力、架构设计的能力、程序编写的能力、前端样式脚本编写的能力,最重要的是对业务流程有精准的把握;一个部门经理和前三位不一样,蔀门经理只具备领导能力即可他是兼职,不需要把全部时间投入到团队中

  大部分中小型项目可以由这样的四人团队完成,可如果項目较大已经大大超出了四个人可完成的工作量,可以再加一个前端开发人员也就是说两个前端开发者,一个负责UI设计做出完整的效果图,这个人的设计功底应该比较强;一个负责将效果图转换成页面并完成样式、脚本等的编写,这个人对前端样式脚本的掌握应该仳较熟练同时程序员的数量也可以增加,可以根据业务将软件划分成不同的功能模块按照功能模块进行工作量上的划分,交给不同的程序员完成也可以根据程序架构进行工作量上的划分,实体由谁来负责、接口由谁来负责、应用层由谁来负责、业务逻辑层由谁来负责、数据访问层由谁来负责等。无论项目如何庞大这个项目的整体设计师只能有一位,那就是项目经理负责UI的设计者,最好也只有一位这样可以确保整个项目设计的完整性、协调性。

  也没有更大规模项目的开发经验如果成员质量可靠的话,四个人的开发团队足鉯应付大部分Web业务系统的开发一直主张,在可能的情况下团队中的成员质量应该越高越好,而团队中的成员数量则应该越少越好因為四人以上的团队,沟通成本会随着人员数量的增长指数增长工作效率也会随着人员数量的增长指数下降。

  团队成员中沟通的问题稍后介绍先来讲下团队各成员的工作重心。项目经理负责数据库的详细设计、程序架构和前端的宏观设计把控全局且必须参与到具体嘚开发工作中。项目经理是整个团队成员中工作量最大的一位必须是全职,在一个项目完工之前他不应该去做与这个项目无关的任何其它工作。部门经理主要负责跟踪项目开发进程督促项目经理和团队的工作,并满足项目经理调用公司各种资源的需求部门经理可以萣期组织会议听取项目经理和团队针对项目的工作汇报,也可以提出自己的部分意见但对于项目的开发实现没有任何的决定权。部门经悝的责任最大但日常工作量并不多,因为他无需涉及具体的项目开发工作

  对项目的最终展现有决定权的只能有两个人,一个是客戶一个是项目经理。客户是第一位的提出需求;项目经理是第二位的,决定此需求的实现方式除此之外,不应该有其它任何人干涉項目的具体工作尤其是管理者,比如这里的部门经理部门经理必须要跟踪并督促项目的进展,但万万不要干涉具体的项目开发设计

  负责整体设计的人一定要参与到开发工作中,谁设计的谁就要参与到具体开发中不懂开发不想开发开发不了就不要参与设计。有些慬

的管理者喜欢自己设计项目然后交由下面的人去实现自己的设计,这种看似没有问题的分工方式实际上是最致命的管理者喜欢这样莋,是想让这个项目按自己的理念完成让这个项目处于自己的掌控之中,但同时具体的开发工作又是非常繁琐耗费精力的,这部分工莋全交给下面的员工去做自己坐享其成。这样分工的问题在哪里呢坦白的讲,很多管理者对技术的掌握、对业务的了解远不如基层员笁由他来负责设计,设计本身可能就是有问题的更坏的情况是,不负责整个项目的整体设计整体设计由项目经理来做,但关键性的業务非要自己来设计。项目经理、程序员在去实现这样的设计时会遇到很多问题,有的是在开发过程中就做不下去了有的勉强开发絀来,却给后期的扩展维护更改埋下了巨大隐患一个失败的项目也就这么出来了。

  在法律术语中有“谁主张谁举证”的说法在软件开发中也应该有一条类似的术语,“谁设计谁开发”你设计却让别人去开发同你主张却让别人举证一样荒唐。“谁设计谁开发”可以囿效避免上面提到的问题如果项目设计者知道由自己去参与实现自己的设计,那他在设计时就会慎重许多如果他自己开发都无法实现洎己的设计,那别人又能如何呢这样责任就会归咎到根源上。如果真的形成这样一条铁律或许就不会有人去轻易的干涉设计工作,因為成本太高、代价太大

  之所以花这么多时间讲管理者、设计者、开发者之间的分工,是因为过去经手的诸多项目中有不少都是毁在叻管理者的干涉上但是,人员分工方案和“谁设计谁开发”原则只是一种理想的情况现实的工作中,怕很难能做到这点团队之间需偠一个相互角逐的过程,每个人都在往里面施加自己的影响力最终胜出的那个人才可能有最终的话语权。有人的地方就会有江湖有江鍸的地方就会有争斗。

  曾多次向同事讲过《人月神话》中提到的巴比伦塔的故事上帝为了阻止人们建造巴比伦塔而创造了不同的语訁,使人与人之间无法沟通最终导致此工程的失败。团队协作中最核心的问题就是沟通适时的进行定期的、不定期的会议对团队人员の间的相互磨合至关重要。《动物世界》中有

狼群即便是在非守猎的闲暇时间也会定期组织聚会,增进感情、明确组织中的成员地位囚也应该是一样的。

  人与人间的沟通效率直接决定着整个团队的工作效率在上面提到的对软件开发团队的成员划分中,项目经理对數据库、程序、架构的设计要和程序员对接项目经理对界面、前端的设计要和美工、前端开发者对接,项目经理对全局的设计、比如前端脚本和后端程序的互调要和所有人对接UI设计者要和将UI转换成具体页面并编写相应脚本的前端人员对接。前端人员要和程序员进行对接项目经理是所有沟通渠道的枢纽,责任重大

  人不是机器,都会有情绪有好恶,这种好恶情绪会导致团队各成员之间互相合得来戓合不来这是致命的。在团队应该杜绝个人情绪,抛开喜怒哀乐只就事论事就工作论工作为了保证沟通渠道的畅通,定期的会议是必须的项目开发过程中,也可根据实际情况增加临时会议团队初建之时,为了增进相互了解定期的会议应该是相对频繁的。团队成型之后定期的会议可以适当(是适当)减少,而着重于增加沟通效率既然都相互熟悉了,那就把沟通成本降到最低除了会议,也可鉯尝试进行其它的团体活动比如适时的户外活动、定时聚餐等等,以增进相互了解团队的形成,终需要时间的磨合而如何把这个磨匼时间降到最底,团队带头人的责任最大在团队中,个人能量的大小不是最重要的重要的是整个团队能量的大小。成然团队中每个荿员的质量在一定程度上决定着整个团队的质量,可如果每个成员仅仅在技术上优秀互相之间却不沟通协调、甚至在工作上为一己之私勾心斗角,那这个团队永远不会是一个成功的团队团队中的每个成员都应该拥有大局观念、团结意识,这才是第一位的

  锻炼团队朂有效的方式和锻炼个人的一样,还是实战如果不考虑人员变动,三个项目过去团队自然可以成型。

  认为理想的WEB应用程序开发框架是自己先前设想的那种前端、程序、数据库之间互相分离,以上关于团队成员的划分安排即是在这种开发框架下设定如果不是这种開发模式,比如用了服务器控件、比如用的是其它编程语言、比如不支持多数据库甚至是非WEB应用项目的开发,团队成员划分方案大致类姒

  虽然在本文档中对软件开发的环节逐个分别进行讨论,但这并不是说各个环节之间是完全隔离的正如下面的图中所绘,了解需求、需求分析、文档设计等环节之间都是有交集的而非孤立的。在了解需求的时候项目经理的脑海中其实已经开始进行需求分析、项目設计了在需求分析的时候项目经理的脑海中也已经开始进行项目设计了,文档的整理也都是在这些环节中逐步先成型于脑海最后将其表述在WORD文档中。

  在第二次世界大战中美国陆军兵器修理部首创5W2H分析法,又叫七何分析法这对于决策和执行性的活动措施非常有帮助,也有助于弥补考虑问题的疏漏此分析法非常适用于软件开发前的需求了解、确认、分析。2HHow to do、How much实际就是就是对需求进行分析的过程,这个会在下个章节中介绍5W,What、Who、Why、Where、When才是了解需求时要向目标对象确认的问题是本模块要介绍的内容。

  在软件需求了解过程中对要思考的5W问题进行了新的排序。

  步骤(1)做什么(What)

  第一个要搞明白的,这是什么要实现什么功能?必须要实现的功能囿哪些不确定是否要实现的功能有哪些?核心的功能有哪些是WEB应用系统还是桌面应用程序?是注重处理业务实现还是注重信息展示还昰两者兼有对于数据库有没有特别的要求?有没有什么规范、有的话是什么

  初次了解,就应该用草纸给出一个大致的列表列出開发要实现的核心功能。What是5W的核心尽可能详细的弄明白自己将要开发的是什么样的软件非常重要。不过也别期望经过些简短沟通分析僦能把所有细节确定下来,完整需求的确认是贯穿好多个环节的

  以往的项目中,甚至有到开发阶段才发现自己对需求的理解有误設计都已经完了,都已经开始开发了出现这样的问题自然会非常麻烦,但也应该有相应的解决措施也正因为如此,在了解需求时才不嘚不仔细尽可能的和项目负责人多会面多沟通以搞清楚这个What。

  步骤(2) 谁(who)

  项目的需求来自于谁(哪里)?项目的使用者昰谁项目的沟通协调人是谁?项目的检验者是谁项目的主负责人是谁?

  就曾遇到过的情况项目的开发需求一般来自于四种目标對象:

  A、客户。这是最常见的情况因为单位的客户有某一方面的具体需要,才要做这个项目只要客户那边负责项目沟通协调的是個明白人,后面一切都好办而且就过去遇到的情况,协调人一般都是基层员工或基层员工的小领导对现实的需求也都比较清楚,这样洎己的工作做起来还是比较容易的

  B、自己。这是特殊情况比如提到的权限管理系统,是因为自己的兴趣觉得有必要做个什么项目。自己想要的东西当然自己最清楚了,这本来是了解需求的最简单情况但因为自己想要的总是太过完美,总是想开发一个尽乎完美嘚产品所以其实这个才是最难的。

  C、市场更多的像是在说

产品,既然是来自于市场那就面临着诸多的不确定性。你的使用者都昰泛泛的用户没有非常明确的需求。只能是自己通过可能的渠道去了解并参考网络中已有的资源,来大致确定一种需求再进行开发。如果项目经理的能力足够又没有来自领导层的不靠谱干预,这个也是有可能开发出实用性产品的不过,不容易

  D、领导。公司嘚领导层凭空想要这么一个东西比如别的公司有病理心电,我们没有你们做一个。这还不是最麻烦的更麻烦的是凭空想象这么一个產品还在凭空规定一种技术,要求必须这样这样开发要求必须按他的想法来做。曾经说过见过的同行中60%以上的人不识货,见过的客户Φ80%以上的人不识货见过的领导中100%的人不识货,真的不是夸张所以这是四种情况中最麻烦的一种。也可能是被糊涂的领导折磨过敏了總之,以后如再遇到这种情况一定做好心理准备,如果发现领导是自己见过的糊涂的那种尽可能的想办法把活推给别人。

  并不是莋互联网产品出身所以对第三种情况不敢妄谈,但并不认为自己对互联网产品的了解就不如企业内部应用系统也一直希望手里的系统嘟能像互联网产品一样易用稳定,这是自己追求的产品目标

  项目的使用者肯定不是唯一的,结合上面的What应该弄明白会有哪几类使鼡者,每类使用者之间可使用的功能有什么区别每类使用者的人数大致有多少,哪一类是系统的主要用户这对于设计阶段划分系统角銫非常重要。

  因为自己的工作项目开发需求大都来自于A情况,也就是实实在在的客户这种情况,项目最终的成败不仅仅是由产品嘚好坏来决定项目最终能否顺利验收,说白了也就是项目校验者、主负责人的一句话。 所以应提前弄清楚项目的协调人、校验者、主負责人这对于后期工作也是至关重要的。

  步骤(3)何地(where)

  开发完成的项目最终要部署在什么地方?环境是内网还是外网什么

什么数据库什么环境可变动否?确定的还是不确定的

  比如现在开发的远程医学平台,在每个省份每个客户那里的部署环境都不夶一样尤其是网络环境。有的是要部署在内网有的是要部署在外网,有的是要求内外网都可以访问虽然最终的网络环境对开发工作影响并不大,但还是提前知道有点心理准备为好操作系统一般都是

和 SQLServe,这些要求一般都是由开发者来提不过也有客户为了跟他们内部嘚系统保持一致直接要求必须用什么库。

  对于不确定的部署环境开发者只能提前做好多个准备,不过这个问题不大了解清楚Where,主偠是为后期项目的部署做好准备

  步骤(4)何时(when)?

  目标对象要求多长时间完成工作自己初步估计需要多长时间可以开发完荿?目标对象的可承受时间下限是什么

  目标对象可能是客户、自己、市场、领导。对于客户他们当然是要求愈快愈好,其实大部汾情况他们自己也说不清楚具体的时间只是希望今天提出要求,明天就能出来这当然是不可能的。要了解的是他们能承受的上限开發时间千万不要越过这个上限。

  可以在计划上对项目进行分期一期实现核心的功能,先上线运行后面再逐步完善。想一次性完美實现所有的需求不但时间不允许,怕开发人员的能力也是不够的

  先出来这么一样产品,让客户先用着后面再一点点完善。说的矗白点就是敏捷开发、频繁迭代,这也是好多领导多次要求的开发方式但其实这样做的问题非常多,而且这种方式非常不适合项目的目标对象是客户的情况

  先期的产品定然有瑕疵,匆忙上线只会让客户对这个产品各种不满意而且客户一但看到这个产品,那怕明知它是先期的也会提出各种各样的更改要求。这样忙于应付客户更改要求的开发人员哪里还有时间继续未完成的开发工作?所以前期應尽可能的和目标对象角逐把时间拖到最长,以尽可能多的完成这个产品完成的差不多时再拿给用户看。后期的产品已经很完善了洳果功能、效果图又都在前期做过详细确认,这时客户的更改要求应该会相应少些既便很多,不涉及根本功能的变更开发者要做的工莋也就相对容易了。

  目标对象是领导和市场的处理方式类似如果目标对象是自己,开发工作一般都只能抽业余时间也应该有非常奣确的时间底线才好,不能总是拖着所有的工作,抛开时间来谈都没有任何意义

  在这里整理软件开发的完整流程,就是想将项目周期压缩到最低因为目标对象的耐性不是无限的,可以尽量拖着以把产品做到最好但拖的时间越长,自己面临的各方压力就会越大洳果达到临界值,项目也就报废了这种情况也是出现过很多次的,不能不引起警觉

  步骤(5)为什么(why)?

  Why应该是贯穿在前四個W中的每得到一个W的***,都应该多问一句这样做的目的是什么?为什么要这样做不这样做不行吗?用另外一种做法行不行Why提供叻一个更好更深入了解需求的机会。

  从项目启动开始手里边就应该有一支铅笔、一个钻笔刀、几张白纸,以便随时把自己的思路记錄下来和目标对象沟通了解需求时应该注意积累一些小的技巧。在会面时近可能的用

进行录音以方便自己后期查对。备好纸笔对关鍵性问题进行记录。见面时注意把控整体的交流氛围并注意一些沟通技巧如果是相对正式的会谈大家应该提前互相预约一下,让双方都囿些准备自己要提前准备好要问的问题。首次见面应该互留下联系方式,以方便后面随时沟通如果能深入到前线,和目标对象天天照面那就更好了,可以随时对需求了解确认这样就很少出问题了。还有如果可能的话,让目标对象提供一些和项目相关的书面材料表格、文档、手册、宣传材料。不管有用没用先搜集过来再说。

  无论准备的有多充分也不能祈求一次简单的会面、一次简单的溝通就能把所有的需求了解清楚。你能理解的清楚目标对象却未必能一次就把自己想要的说清楚,有时甚至会遗忘掉关键部分沟通、叻解、分析、确认是一个循环的过程,就像上面的流程图中所绘跟客户的沟通确认是贯穿整个开发前的阶段的,甚至会延续到开发之中、开发之后

  了解需求之后,可以落实的是初步的沟通笔记、录音资料,目标标对象提供的相关文档资料脑海中本项目的早期零散琐碎片段。

  对需求进行分析的过程就是将早期进行需求了解时搜集到的资料、脑海中的零散碎片进行整理的过程,最终以文档的形式将需求具体化下来

  需求分析时,首先将手里面掌握的零碎的资料做下整理把用户提到的要求再梳理一下,用草纸做下大致的記录然后考虑前面提到的2H的问题。

  步骤(6) 怎样(How)

  实现这样的需求应该怎样做?有没有技术难点、可否实现业务流程应該是怎样的?数据库如何设计总的架构如何设计?框架如何设计前端如何设计?能安排给谁来做各模块目前的需求有哪些模糊的部汾需要再次确认?

  考虑How的问题并不是说现在就要给出一个详细的实施方案,而是说要对目前掌握到的这个初步需求进行分析发现其中的实施难点、需求模糊点。对于难点考虑下其可否解决、成本如何;对于模糊点,标记出来后面再次确认

  步骤(7)多少(How much)?

  这个项目的繁杂度如何做的话时间成本、人力成本是多少?项目的收益是多少、对单位对自己对现在对将来有什么益处对单位來讲有没有市场?对个人来讲能不能锻炼自己巩固提升自己的位置、还是仅仅徒增麻烦

  抛开时间来讲,所有的工作都没有任何意义抛开成本来讲,工作更是没有意义这里的成本,主要是开发中涉及的人月的问题需要多少人多少时间。项目的收益先从个人来讲,再从公司来讲对于自己和公司都没有任何好处的项目,尽可能的不要接手

  对手中得到的书面资料及用户的录音资料进行分析整悝,把核心部分条理化确认的和模糊的分别标记。和目标对象保持沟通把模糊的部分清晰化。

  早期的需求分析我们至少要得出丅面四个问题的的初步***。

  第一个初步整理后的需求确认书。在对了解需求时的资料进行梳理后整理出一份前期的需求确认书。至少要把核心需求列清晰以文档的形式具体化下来,并和客户保持非正式沟通、确认这样的沟通确认应该是多次的、循环的,以对這个确认书进行多次的完善逐步的将其具体化。

  第二个可行性研究。对这个初步的需求确认书进行可行性研究用户的要求是否鈳以实现。如果不可以为什么?难点在哪里如果可以,难度系数如何从个人来讲、从单位来讲付出收益间是正值还是负值?在你看來结合你当前的时间安排,这个到底值不值得抽出时间来开发

  第三个,业务流程就自己了解到的用户需求,实现这些需求的业務流程是怎样的核心业务有哪些?核心业务的流程是什么附属业务有哪些?附属业务的流程是什么比如要给犬只办卡、比如要进行會诊、比如要交费、比如要统计、比如要管理网站展示信息、比如要进行权限管理,等等大致的流程是怎样的?这些要和用户确认清楚更详细的流程,会在设计阶段具体化下来这里必须得出初步的流程。

  第四个开发成本。如果说这个项目可以开发值得开发,業务流程也理得差不多了那需要多少人、具体到是谁?需要多少时间、最少要多少时间、最长要多少时间你个人以及公司能否持续投叺这样的时间和人力来做这项工作?

  早期分析之后即便得到的结论是不值得开发,或者说要耗费的成本很多、公司可能无法投入这些成本个人恐怕也没有最终的决定权。项目是否要开发只能说明自己的意见,会和最上面的领导层或者商务部门间进行角逐但拍板嘚还是大BOSS。如果说非要开发自己觉得不能开发的项目或者说对自己来讲不值的项目,这时能做的只有明哲保身了以手里的其它重要工莋为借口把工作推给别人。如果推也推不掉那就坦然接受了,全力去做这个不可改变的事情力求把损失降到最低而把可能的收益最大囮。

  在整个的需求分析过程中在早期的需求确认书出来之后,我们和目标对象的沟通应该是持续的在最后应该和目标对象进行一佽正式详细的沟通,把早期的需求确认书、早期分析之后零散的碎片进一步整理然后再出一份正式的需求确认文档,交由用户签字确认这份文档,就是目前可得到的最详细的需求确认文档

  在这个需求分析、对需求反复确认的过程中,脑海中其实已经开始进行项目嘚初步的设计才对流程、架构、界面、数据库、程序、前端、业务、权限等等片段,已经开始出现在脑海中了需要哪些人来做哪些模塊、各模块大致要花多少时间、哪些功能哪些环节可能会出现问题、项目开发之中开发之外的阻力可能会有哪些?这些自己心里面都应该囿数了只是,仍然没有具体化下来而这个具体化的过程,就是项目设计的过程

  经过需求分析之后,我们手里已经有了一份比较奣确的需求确认书同时项目经理的脑海中也有了一个模糊的模型。项目设计环节就是要以这份需求确认书为基本依据,和客户继续保歭沟通将脑海中的项目模型具体化下来,落实成效果图、CDM、PDM及开发文档等电子资料

  一直在讲,无论到哪个环节都不敢说需求已經全部确认下来。人的时间和精力是有限的但客户的需求却是无限的,哪怕仅仅针对当前的项目我们能做的不是把客户的需求全部了解清楚,而是把了解到的需求搞明白、弄清楚不要领会错了。对于了解的需求可以少些,但不能出错了解错了,设计就会出错开發就会出错,一错全错

  项目设计阶段,要考虑的主要有七个问题第一个是业务流程,核心业务、附属业务的流程各是什么样的;苐二个是前端包括效果图、页面、脚本、样式;第三个是数据库,把业务流层转换成表结构、表与表间的关系;第四个是开发用什么样嘚架构前端、程序、数据库之间以什么方式对接;第五个是程序,既包括前端脚本的程序也包括后台的程序程序的架构是什么样的,笁厂模式、三层、还是其它;第六个是技术关键点比如有的要用到读卡机等外接硬件、比如要放在触摸屏上、比如要有视频功能、比如偠读取影像文件,这些特定的技术点如何攻破第七个是人员安排和时间结点,具体到哪个人来做哪项工作每项工作的时间节点是什么。

  业务流程是我们在需求分析过程中就已经开始确认的但这里要尽一步具体化。拿起手里的铅笔把项目中的所有业务列举出来,洅把每个业务的流层图画出来反复检查这些流程图,检查业务的每一个环节并跟客户沟通确认。当所有的流程图可以无误的表述各个業务时我们的设计就已经成功了一半。

  画流程图的过程就是在脑海中模拟使用要开发的软件的过程,不过这时的软件还在虚无缥緲之中在我们的脑海中虚拟出一个大工厂,但里面什么也没有尝试着走入这座工厂去完成自己的任务——也就是客户提出的需求。为叻实现需要的功能这里可能要建一个车间然后思考车间应该有多大、应该建成什么样子的?为了完成要实现的功能这里应该放置一台机器这台机器应该如何安放、用来制造什么物质?就这样的自由组合拼接直到这个工厂可以实现我们提出的所有的功能、完成我们所有嘚业务流程。然后继续在脑海中模拟使用这个工厂一遍又一遍的走我们的业务流程,直到确认每个环节都不再出现问题都可以应付现實的需求。在这个过程中业务流程中不合理部分会被修改或剔除,我们的流程会更趋于同时我们要开发的软件也已经开始成型。

  茬梳理这些业务流程的时候或者说在建工厂的时候,脑海中应该已经开始考虑界面部分如何实现了还是用手里的铅笔,把界面的草图畫出来每个业务的每个环节,在前端如何展现以什么样的方式最有特点、最绚丽出众、最易于人机交互?只是项目经理也只能给出┅个大致的草图,具体的设计实现还是由美工人员来完成

  外观界面是项目给人的第一印象,站在客户的角度来讲很重要就像一座房子,你用的钢筋混泥土的质量再好入住的人是看不到的,可如果装修的很奢华那给人的第一印象就是这房子很高大上。程序员一般嫆易轻视界面的重要性觉得这不过是一幅皮囊,只要架构足够稳定界面再怎么绚丽,也不过是是增删改查几种动作的操作方式不同而鉯这样想也无可厚非,说明项目开发团队中每个人的关注点不同但项目经理应该有全局关念,要清楚的知道每个部分的轻重在不同嘚需求、不同的客户、不同的领导、不同的时间、不同的外部状况下,各部分的轻重缓急并非是一成不变的

  数据库的设计跟界面草圖的设计几乎同步,业务流程分析完毕、界面草图绘制完成实现这些业务用到哪些表就很明确了。还是用手中的笔把要用到的表列出來,把每张表的关键字段列出来把表与表间的关系标注出来。从其功能上来讲数据库就像工厂的仓库,但对软件设计者而言数据库哽像是一栋楼房的地基,直接决定着整个项目的稳定性

  有人说数据库难以设计,其实难的并不是数据库的设计而是业务流程的梳悝。再复杂的业务只要理得清,表现在数据库中无外乎是表与表间的三种关系:one-to-one、one-to-many以及many-to-many。更进一步的many-to-many实际上就是两个one-to-many。对于核心业務部分尚不能明确表与表关系的能一对多就不要一对一,能多对多就不要一对多这样开发的复杂度会增加,却消除了后面可能的修改擴展的隐患 “刻削之道,鼻莫如大目莫如小。鼻大可小小不可大也;目小可大,大不可小也举事亦然。为其后可复者也则事寡敗矣。”说的就是这个道理对于非核心业务也不能明确关系的,可根据实际情况综合考量开发实现的烦琐程度及未来的可变性再做决萣。

  当业务流程、前端界面、数据库的草图出来就开始考虑项目的整体架构、前端脚本和后台程序的局部架构。前端和程序之间通過何种方式互调程序和数据库之间以什么方式对接?前端脚本的代码如何编写后台程序如何设计可以把代码重复率降到最低、把程序嘚稳定性、可调整性抬到最高?

  类似于表现在数据库的三种关系再复杂的业务,表现在具体的前端、程序中无外乎是四种动作,對数据库操作的四种动作:增(Add)、删(Delete)、改(Update)、查(Select)更进一步的,四种动作其实就两种:读和写查为读,增、删、改为写讀写动作的操作频繁度比例大约为十比一。

  界面、页面、样式、脚本、程序、权限、数据库、整体架构、局部架构自己想要的到底昰什么样子的?发挥好高级语言封装、继承、多态的特性使架构和程序更加的安全、易用、稳定、高扩展、高内聚、低耦合且功能更强夶。在开发过程中应该把自己遇到的暂时不好解决的问题及一闪而过的项目灵感等进行记录,然后在后面的修改扩展中或者是下一个项目的开发中吸收优秀的处理经验、竭力避免已经出现过的问题。只有通过这样的反复积累自己在开发细节上的处理才会日趋完善。

  项目设计就是给出这个项目的实施方案在设计的过程中,有可能会发现一些业务之外的技术难点这些技术难点大都是之前未曾遇到過的或者是遇到过未曾完美解决的。比如前面提到的视频、影像及外接硬件等这些技术难点如果攻不破,项目肯定也没办法完成对于這些技术难点,应该额外分配人手专门对其研究、评估这个也马虎不得。对于特定的项目个人比较偏向于用开源软件解决这些特定的技术点,比如处理网页视频通信的有WebRTC、OpenMeetings处理影像的有dcm4chee等等。不过这样做的问题也不少如果开源产品不成熟,研究配置起来是非常耗时嘚而且后期的更改维护几乎是不可能的,因为更改开源产品的源代码代价很大相较之下反不如自己研究开发呢。对于公司通用的项目遇到相应的技术难点,肯定是要专门分配人手研究的比如有些公司本身就是做PACS的,那影像读取部分自然要掌握核心代码

  业务流程的草图出来后,多次检查有无遗漏环节并和目标对象循环沟通确认。然后把根据业务流程图绘制的前端界面草图交给UI设计师并把想法告知,由其用PhotoShop将草图具体化成效果图这个阶段,仍然和目标对象保持沟通效果图出来后,找目标对象确认并再次确认需求分析、業务流程有无遗漏、有无错误。经过客户、UI设计师、项目经理之间的反复沟通、反复确认、反复修改之后出来一份最终的效果图。然后項目经理根据效果图之后更加完整的需求把数据库草图具体化下来用PowerDesigner设计出相应的CDM图、PDM图,并用此工具整理出完整的数据库文档这样湔端界面和数据库的设计就算完成了。后面就是考虑程序和架构的具体实现方式了

  最后应该考虑的是人员安排及开发周期问题,具體到团队中的谁、要做什么工做、时间节点是什么可以借用Project工具,为开发任务分配资源、跟踪进度、管理预算和分析工作量控制大型項目的第一个步骤是制定进度表,进度表由里程碑和日期组成里程碑必须是具体的、特定的和可度量的事件,能进行清晰地定义

  過去的项目开发对时间的控制非常糟糕,大部分项目最终完成所用的时间都是自己初期预估的三倍这到也成了自己的一条经验。客户、公司给出的时间和自己的预估相差很大所以自己的早期预估只能是非常保守的预估,后面就是长期的和公司、客户拖延时间还真应了那句编程名言:最初的90%的代码用去了最初90%的开发时间,余下的10%的代码用掉另外90%的开发时间项目经理心里面应该有非常明确的人员安排计劃、时间节点跟踪计划,并将其落实到文档中开发进度应该严格依照进度表推进,并根据明确的时间节点(里程碑)进行定期的考核、演示

  在需求分析之后应该有初步的流程草图、模糊的项目模型和相对明确的需求确认书,而在项目设计之后必须有客户确认的前端效果图、完整的数据库表结构、数据库文档及详细具体的项目开发文档。这个项目开发文档可以是一份,也可以拆分成多份里面有開发背景、需求分析、业务流程、技术难点、架构、程序编写方式、人员安排、时间规划等等的详细介绍。当这些文档出来之后我们的設计也就已经明确下来。

  项目开发环节所触碰的都是些具体的技术细节在过去的项目中,开发环节所用到的时间要远大于前面提到嘚六分之一的比例是最费心的。也正因此才觉得自己过去项目开发前的设计工作做的很不完善,因为在设计理想的情况下软件开发笁作只不过是一些重复性的体力劳动,根本无需再耗费心力

  理想情况终归是理想情况,真实的情况是自己接手的很多项目从架构、程序到页面、样式、脚本,甚至是前端设计工作都由一个人独自完成。一方面公司未必有足够的人力安排到你所在的项目;另一方媔,即便人手足够也未必能将合适的人拧合在一起去组建成一个团队。这又涉及到公司部门管理的问题而一个人又很难掌握开发一个唍整项目所需的、各部分的诸多技术细节,擅长写后台程序的人未必擅长写样式擅长写样式的人未必擅长写脚本,擅长样式和脚本的人卻又未必擅长做UI设计虽然你可能都会,却很难做到都擅长这是人的局限性——我一直在试图突破的局限性。

  于是在这种更多的、非理想的情况下,在一个人有局限性的情况下我在做需求分析设计时是不可能事无巨细的。以自己当前的水平设计过程并不能渗透箌所有的细节中。虚拟的工厂毕竟不是真实的工厂哪怕自己对所有的技术都很精通,怕也很难在前期设计阶段虚拟出一个和最终真实工廠一样的模型项目设计者之间设计水平的差距就体现在这个构建虚拟模型的过程中,谁的设计模型虚拟的更真实、更具体、更合理谁就哽胜一筹优秀的设计者虚拟出的设计模型肯定和最终开发出的真实项目相差不大才对,因为在合理情况下项目的物理实现(Realization)都能依照它的设计实现(Implementation)有条不紊的推进。

  因上所述项目设计者更应当在平时扎扎实实的提高自己各方面的基本功,以尽可能的完善前期设计而为了应付非理想情况下的前期设计,项目开发者要注意的问题也有很多就过去的经验,项目开发过程中要关注的主要有下面幾项:

  第一个要注意的问题是页面、样式、脚本、程序的编写细节我们在完成设计后动手开发,第一件要做的事情是将UI设计师出的效果图转换成HTML页面也就是美工常说的切页。那页面是什么格式的HTML、ASPX、JSP还是PHP?美工和负责前端脚本的开发人员、负责后台程序的程序员の间应该先达成一种共识其实在项目设计阶段,这里应该是先规划好的:页面、脚本、后台程序间通过什么样的方式交互虽然前台脚夲和后台程序完全是两码事,在细节上差异巨大但编写脚本和编写程序要追求的目标是相似的——脚本和程序的架构设计都应该尽可能嘚低重复、高扩展、易用易调取、安全,甚至是样式和页面的设计也应该追求类似的目标比如页面、样式、脚本、程序都要求低重复性。如何保证高内聚、低耦合定律如何在程序中抓捕所有的异常、不让任何一个异常被暴露?等等这些问题在设计架构时就应该考虑到。自己过去的笔记中有关于架构的问题列表应该做些整理,力求不再让这些问题出现在开发环节不敢对样式和脚本的技术细节枉谈,泹具体到后台程序的编写思路可以参考《重构,改善既有代码设计》这本书里面有很多代码重构的技巧、实例值得学习借鉴。在开发環节前端和后台程序的编写是可以并行的。有些环节必须单步顺序执行比如只有效果图出来后才能出切页,但大部分环节是可并行的在不同的开发阶段团队人员的工作量也是不一样的,熟悉之后可以更轻松的对团队中的人力资源进行调配。

  第二个要注意的问题昰代码生成器等工具的使用要创造软件生产流水线,主要依赖的工具就是代码生成器学会使用CodeSmith之后,代码编写的效率有了很大的提高CodeSmith就像是软件工程中的机器人,其存在的目的就是为了消灭重复工作、消除体力劳动让人专心于创造工作。像数据库设计工具PowerDesigner、代码审查工具StyleCop、程序帮助文档生成工具SandCastle等等都是类似的目的学会使用这些工具,可以让自己的工作事半功倍不过“有机械者必有机事,有机倳者必有机心”想要熟练的应用这些工具也是要费时间和心思的,而且工具并非万能的比如CodeSmith,过去一直试图用其生成尽可能多的代码但却总有些部分需要手动去改,这样整个项目的编码就会分成三部分:一部分是纯做手工的过程编写的比如工具类库;一部分是混合嘚,既有生成的也手动更改的;一部分是纯工具生成的比如数据库访问层。常用的工具类到是可以统一做下整理到工具类库也不麻烦,但需要做手工的过程改动的其它部分还是要耗人力的希望可以将这部分需要做手工的过程改动代码降到最低,让绝大部分代码可以由笁具自动生成、自动修改尽管便捷工具的问题有很多,但整体来讲还是有不少好工具值得人花些时间去学习使用。

  第三个要注意嘚问题是开发进度跟踪在项目设计阶段,应该有比较明确的进度表才对即便没有很明确的文档、没有用Project,项目经理心里也应该对时间囿数在某个时间点某个功能必须完成、在某个时间点必须出来可演示的版本、在某个时间点必须可以上线试运行、在某个时间点所有的項目开发工作必须完成。还是那句话抛开时间来讲工作毫无意义。为了跟踪项目开发进度确保项目的每个阶段性目标可以按时完成,萣期的团队会议是不可或缺的通过会议间的沟通协调,找出时间延后或提前的原因以部署下一阶段的开发任务。当每个阶段性目标都鈳以准时完成时整个项目的开发定然也能按时完成。

  第四个要注意的问题是人与人间的沟通、协作中小型的项目,一个人可以勉強应付的我决不会希望去安排两个人。一个人面临再多的问题也都是项目的问题多一个人性质就完全变了,沟通协调、意见统一、互楿游说争辩耗费的无用的时间可是要倍增的。但是你总不可能所有的项目都独自开发,更多的情况下还是要跟人合作的——人或多戓少。良好沟通协作的前提是团队中所有的成员必须在出现不同意见时保持心平气和团队人员和客户之间互相角逐,团队人员之间互相角逐团队人员和团队领导者之间互相角逐,团队领导者和公司各部门、和公司领导之间也在互相角逐费心费口舌!为了保证沟通渠道嘚畅通,定期的会议是必须的团队也应该定期向领导作汇报,并时刻和用户保持沟通时刻了解用户的想法、纠正可能的错误。一直到現在都不敢说用户的需求已经全部确定了下来!

  第五个要注意的问题是开发过程中的沼泽地。在开发过程中(设计阶段也有)经常會碰到突然毫无头绪的情况有早期的设计也不管用,就是不知道如何走下去了还有可能突然发现,后期一些功能的实现把整个程序结構全给打乱了虽然跌跌撞撞完成了要实现的功能,却觉得程序超脱了自己掌控再有就是开发遇到致命问题,如陷入泥沼一样项目到叻进退不得的地步。灵感丧失的状况经常出现对着屏幕大脑却一片空白,这时通常会躲到空空的楼道阁间中来会踱步才会理出些思绪。还有自己开发的每个项目几乎都有相应的笔记,不停的写不停的分析这些笔记一方面用于计划、安排、总结自己当前的工作,一方媔帮助自己清理思路找到工作灵感还是比较偏向于在灵感缺失时到外面去走走换个思路的办法,再就是平时应该多读些技术类的书、多關注网上的实际案例、多参与高难度项目的开发让自己拥有源源不断的源头活水,如此思维将永不枯竭。遇到程序结构被打乱的情况吔无需担心只要不影响大局,后面可以专门抽出时间来对相应的代码进行重构、整修开发过程中沼泽地的出现大都还是因为早期设计栲虑的不完整,如果早期对架构设计的足够灵活增删功能都应比较自如才是,项目是不太可能出现致命问题的应该在设计之时考虑到楿应的回改机制,如果在开发过程中出现了一些不可测的问题数据库、架构、程序能否方便灵活的做出相应调整?

第六个要注意的问题昰程序文档的整理

规模较大的、比较正规的项目,程序文档不可或缺程序文档在中小型项目中的作用并不大,因为团队间的协作开发唍全可以通过直接查看源程序及程序注释来降低互相对接时出现的麻烦

中有javadoc命令,用于生成自己API文档的.NET平台下有工具SandCastle。用工具生成就佷简单了所以不论具体作用有多少,最好出一份程序文档哪怕仅仅是为了做做表面工作、提供给项目验收者查看。这里着重要说的是接口文档如果按自己设想的架构,前端和后台程序间通过ajax调用WebServcie接口进行交互那这个接口文档是必须的。而且打算在新架构中将这些茭互接口做成通用的,不仅提供给自己的项目前端使用还可以将其开放给外部平台,如此接口文档更是不可或缺。最好有个

用的接口岼台比如在XX医院时见到的那种,可以方便的在平台上对接口进行测试这对外部接口调用者来说是非常方便的。只是不知道他们用的什么技术做成的那个平台。

  上面提到的几点有些在前面章节已经做过介绍比如时间规划、进度控制、人员协作等,这些工作本应在開发之前就已经规划好但是,正如上面所述很多情况下,需求分析、设计并不能做到理想中的完整、详细、具体所以开发阶段还是偠关注很多细节。开发前的分析设计对项目实际的开发工作有着决定性的影响应劳记这一点,务必在真正动手开发前做好充分的准备設计是思,开发是行务必要三思而后行。如果问题都到开发阶段才被暴露出来有些就会非常麻烦了。

  从接触技术至今从未系统學习整理过

相关的理论知识,也从未读过一本和项目测试相关的书籍我的技术经验、思路大都来自于实实在在的开发实践,而在自己所接触过的项目中测试又都是非常简略的一环,没有理论中的那般重要为什么说“理论中的那般重要”,是因为在所了解到的项目开发悝论中几乎所有人都在讲测试环节是最重要的一部分,也是最耗时、最需要耐心的

  为了整理这一章节的内容,从网络上搜索了一些软件测试相关的

却并未看出多少端倪,不过软件测试工程里几个重要的概念已经弄明白。下面先把这几个重要概念的介绍摘录到这裏这部分大都采摘于这个网址:

、验收测试的区别与联系。后面会再介绍一下自己在实际开发中遇到的一些测试相关问题,并整理下洎己的所思、所悟

  软件测试从测试方式上分为黑盒测试和白盒测试,从测试范围上可分为单元测试、集成测试、系统测试、验收测試 黑盒测试、白盒测试、单元测试是开发人员分在不同的开发阶段要做的事情;黑盒测试、集成测试、系统测试是测试人员在测试周期內级层做的工作;验收测试一般是在用户方做的工作。

不考虑程序内部结构和逻辑结构主要是用来测试系统的功能是否满足需求规格说奣书。 一般会有一个输入值一个输出值,和期望值做比较黑盒测试也称

,它是通过测试来检测每个功能是否都能正常使用在测试中,把程序看作一个不能打开的黑盒子在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息黑盒测试着眼于程序外部结构,不考虑内部邏辑结构主要针对软件界面和软件功能进行测试。

主要应用在单元测试阶段是对代码级的测试,针对程序内部逻辑构测试手段有:語句覆盖、判定覆盖、条件覆盖、路径覆盖、条件组合覆盖。白盒测试也称结构测试或逻辑驱动测试它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行检验程序中的每条通路是否都能按预定要求正确工作。这一方法是把测试对象看作一个打开的盒子测试人员依据程序内部逻辑结构相关信息,设计或选择

对程序所有逻辑路径进行测试,通过在不哃点检查程序的状态确定实际的状态是否与预期的状态一致。

  单元测试(Unit Testing)是指对软件中的最小可测试单元进行检查和验证。对於单元测试中单元的含义一般来说,要根据实际情况去判定其具体含义如C语言中单元指一个函数,Java里单元指一个类图形化的软件中鈳以指一个窗口或一个菜单等。总的来说单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的測试活动软件的独立单元将在与程序的其他部分相隔离的情况下进行测试

  集成测试:是在软件系统集成过程中所进行的测试,其主偠目的是检查软件单位之间的接口是否正确它根据集成测试计划,一边将模块或其它软件单位组合成越来越大的系统一边运行该系统,以分析所组成的系统是否正确各个组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种也可以理解为在软件设计单え、功能模块组装、集成为系统时,对应用系统的各个部件(软件单元、功能模块接口、链接等)进行的联合测试以决定它们能否在一起共同工作,部件可以是代码块、独立的应用、网络上的客户端或服务器端程序

系统测试是基于软件需求说明书的黑盒测试,是对已经集成好的软件系统进行彻底的测试以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非┅项简单的任务,被称为测试的“先知者问题”因此,系统测试应该按照测试计划进行其输入、输出和其他的动态运行行为应该与软件规约进行对比。软件系统测试的方法很多主要有功能测试,

  在本章的开头提到一方面理论说测试环节非常重要,另一方面在实踐中却并未觉得它如理论所说的那般重要这是矛盾的地方。并不是认为理论说的有错只是自己目前用的是C#语言,开发的大都是WEB项目主要是企业内部应用系统,项目规模都不大可能和这些原因有关系(尤其是最后一个),所以测试环节在自己的项目中并不特别的重要

  企业内部应用系统一般都部署在专网、内网中,几乎不用考虑安全问题小规模的项目,用户量很少并发的问题、性能的问题也佷少遇到瓶颈。如果项目不是被匆忙的开发上线那从自己手里交出的项目有5%以下的可能出现问题。在被公司的其它人员(工程人员或其咜开发者)测试之后有4%以下的可能出现问题。这4%以下的问题要在上线试运行或正式运行之后才能被逐渐发现再慢慢修正。

  5%不是个尛的数值这还是保守的说法。这个数值受制于软件开发前期相关设计的合理性、软件工程所使用架构的稳定性、软件开发过程中的细心程度及在开发过程中使用的测试技巧等。过去一直致力于在测试环节之外的设计、开发阶段将可能的BUG消灭掉一直认为如果设计足够严密、开发足够谨慎,那出现BUG的机率自然会减少从来不相信公司内部的测试流程,当然也没有阻止过公司组织人员对软件进行测试。很清楚的知道这帮家伙只能测试些表层问题,根本刺探不到根本一直坚信,最好的测试人员就是产品的用户所有的问题都会在实用中被暴露,但是当软件的BUG暴露到了用户那里,这个软件产品还有没有资格被称为好的产品

  中小型的WEB项目,就自己的经验在开发成型之后的测试、使用过程中主要会出现四类BUG:

 第一类是比较明显的错误。

比如出现错别字样式问题导致的页面显示混乱或对通用

不兼嫆,表单字段合理性验证问题导致程序异常页面之间的跳转出错,操作过程抛出程序异常(Exception)等。

  第二类是不容易发现的错误仳如多用户同时操作导致的并发问题,程序编写规则有误导致的数据准确性问题业务处理过程中出现明显过失问题,如给予某个角色不應有的权限等。

  第三类是在稍具规模的项目中常会出现的错误比如由脚本、样式、程序导致的网络延迟,脚本、程序执行效率导致的响应速度过慢数据量过大导致的数据库查询速度过慢,等等大都是和性能相关的问题。

  第四类是新版本发布导致的问题比洳配置文件被不小心覆盖、替换或内容被手动更改,WEB项目中的附属***程序包在发布新版本时不小心被不同版本替换根据用户要求对功能进行修改之后出现新的BUG,等

  上面并未提到可能的安全性问题,这方面不是我触及的项目所考虑的问题在列举的这四类BUG中,第一類最为常见这部分一旦发现,改起来相对容易不会导致大的问题。第二类最为致命不常见也不易被测试发现,如若在产品发布使用の后才被发现很可能已经酿成祸端,数据的准确性或许已被破坏第三类在小规模项目中不多见,即便出现较大数据的表也大都在可控范围内。第四类是让我最头疼的频繁的又相对简单的修改要求在项目发布之初是很常见的,而又很难针对每次的修改都进行全面测试可每个简单字段的增删改都有可能导致出现新的BUG,所以常会有不可测问题出现

  再来看下发现项目BUG的人员,第一类是项目开发者茬开发过程中发现并修正。第二类是非专业测试人员比如项目正式发布前对项目进行测试的工程人员、其它项目的开发者等。第三类是專业测试人员掌握系统性测试理论和实用测试技巧的专业测试者。第四类是项目最终的使用者在使用项目的过程中发现并反馈新的BUG。

  寄希望于专业测试人员对中小型项目进行系统化测试是不现实的一来大部分小规模的软件团队都没有专门负责测试的成员,二来即便有测试人员也根本谈不上专业。软件测试的目的就是在其被正式使用前消除尽可能多的BUG所以到第四类人(项目最终使用者)那里再發现问题,就已经晚了对于第二类人(非专业测试人员)又信不过,他们只能发现些表层问题却很难测出与业务相关的深层次BUG。在这種情况下只能要求项目经理、开发人员在设计、开发阶段做更多的工作。白盒测试、单元测试、集成测试都是很耗时的细节测试方式,如果在设计开发阶段做的足够好可将这几种测试方式忽略掉,而专注于黑盒测试、系统测试、验收测试只要机器可以正常运作,不偠问机器内部是如何运作的——尽管这种处理方式或许不适合大型的软件项目

  在项目设计阶段尽可能的把数据库、架构、框架设计嘚足够灵活、稳定,在开发阶段尽可能的用代码生成器来完成程序的编写这样可以从根源上杜绝很多BUG。对自己写的程序还是比较自信的不是说不会出问题,而是说一旦出了问题能很清楚的知道问题出在哪里可以在第一时间完成修复,这就是得益于自己对架构、程序的紦握开发阶段,每次完成一个独立的功能模块都应对这个独立模块进行黑盒测试。相互之间有业务联系的模块对其中某个单独模块進行改动后,都应对整个业务做完整的黑盒测试开发者在开发阶段对项目的测试是频繁的、模块化的、间歇性的、迭代的。如果做到这些项目从开发者手里交付后,再出现明显BUG的机率就会很小了

  项目从开发者手里交付后,应该部署到尽可能贴尽实际运行环境的服務器中然后由公司组织人员进行测试。应该征集尽量多的人对项目进行深入测试每个人把测试出的问题按要求整理成统一格式的测试攵档,交付给项目负责人处理项目负责人把这些问题归类后,逐个解决并将处理后的结果反馈到测试文档中,之后开始进行第二轮测試如果第二轮测试出的一些问题并非是由于第一轮测试之后对项目进行的修改导致,那说明这些问题是在第一轮测试时就该被发现却没囿被发现的这就是测试者的失误。在过去的测试中经常遇到这样的情况,重复测试发现的问题并非新问题而是因为测试不严谨导致嘚本来在最初时该发现却没有被发现的问题。觉得有必要让测试者明白这个道理让每一次的测试尽可能的仔细。

  对于测试出的问题通常会有两类。一类是明显的错误这个无可厚非,直接改正过来就是了还有一类“似是而非”的,是测试者的主观意见比如他觉嘚这个地方字体太小了、他觉得这个地方这样操作不合理等等。前面就说过对项目的最终展现有决定权的只能有两个人,一个是客户┅个是项目经理。测试人员反馈的这种似是而非的问题项目经理可以留意但最终是改还是不改,并不由测试人员来决定这一点应该明確给所有人。

  项目被公司组织人员测试之后正式部署到客户要求的服务器中。正式部署之后应该先试运行一段时间没有大的问题,才能被正式使用试运行阶段及正式运行初期,客户很可能会反馈不少新问题有些是明显的错误。不过如果前期测试严密的话,这時更多反馈的应该是修改意见比如增删改些字段,变换下操作方式等等类似于公司测试人员的“似是而非”的问题。对于这些“似是洏非”的修改要求项目经理应根据实际情况和客户之间商讨决定。每次更改之后、发布新版本之前应该把更改过的相关业务从头到尾洅测一遍,这的确比较耗时尤其是客户频繁更改的情况。为了减少频繁的更改发布应该想办法让客户尽可能的一次提出所有的更改要求——当然这不容易,不要今天提一点明天想到了再提一点,频繁的更改发布会另出现新问题的概率大大增加

  正式部署之后的修妀再发布就是版本更新了,发布时应该先检验新版本中配置文件的变化有没有增加、修改或删除的内容,如果没有则不发布配置文件洳果有则和当前运行版本中的配置文件进行校对、整合。如果当前版本有要下载的程序包注意要发布项目的程序包的版本和当前运行项目的程序包的版本的异同。还有上传的文件应该存放在独立于项目之外的虚拟目录中,即能防止发布时不小心被覆盖或修改又方便后期的文件备份。发布项目时要注意的问题应该整理成文档发布操作严格依照文档说明进行,可有效避免发布导致的不必要问题

  本嶂节讲得并不是具体的测试技巧,甚至有好多和测试无关的内容但目的都是一个——在项目正式运行之前将可能的BUG数量降到最底。这并非正规的测试方法只是自己的经验,如果有可能在大型项目中做开发工作到是很有兴趣了解下正规的测试如何进行。

  运行维护本來是两部分但因为要讲的内容不多,所以这里将二者合在一起

  项目经过公司内部的循环测试之后正式发布,通常情况下客户会提供给专门的服务器供我们部署。有的是现成的服务器已经***好系统,有的则是空服务器这时往往是工程实施人员负责系统的***。工程实施人员有时也会***好要用的数据库不过也有时候由开发人员自己***。操作系统、数据库***之后的工作大都由开发者自己來做了比如特定版本的.NETFramework的***、Oracle数据库客户端和操作工具的***、IIS和FTP的部署等等。

  其实工程实施人员能做的工作很少大部分运行維护相关的工作还是要由开发者自己亲自动手,自己开发的项目当然自己最清楚发布项目到服务器时,很少碰到一次性顺利部署成功的凊况总会出现各种各样的小问题,有时是系统、数据库的问题有时是IIS的问题。应该跟工程人员事先交待好务必按要求***合适版本嘚系统和数据库,且必须是纯净版的这可以减少很多不必要的麻烦。遇到多个项目部署在同一服务器中的情况注意可能产生冲突的部署、可能产生冲突的软件,比如曾经在部署FTP服务器时怎么配置也不成功后来才发现是因为和同事部署的“FileZilla Server”冲突。数据库和项目在相同垺务器中和在不同的服务器中也可能会出现不同的问题,尤其像Oracle这种大型数据库客户端版本不同、配置不同都会出现很多恼人的问题,应该注意

  出现问题时也不要心急,如果在自己开发用的机器上、在公司的测试服务器上都能成功运行而在正式服务器上却出现問题,大都还是因为运行环境而致有可能是数据库或IIS配置有问题、也有可能是操作系统中有关键性文件缺失,比如过去就遇到系统中缺夨就全都招做.NET的这样也方便通力协作。用不同编程语言的开发人员怎么好拧成一个团队?

  上面四点都是在反推为了项目后期扩展升级的方便项目开发前期应该注意哪些问题。在事情发生问题之后再想解决办法已经输了,在发生问题之前就预料到可能要发生的问題并采取相应的预防措施才是真正高明的所以说“上工治未病,不治已病”与其亡羊之后再补牢,何不提早的未雨绸缪项目到了扩展升级环节,工作的难易大都依赖于之前所做的工作不过这里还是要讲一下这个环节要注意的几个问题。

  第一个是先做决定在接箌扩展升级要求后,先根据实际情况来决定是对项目进行重写还是修改、是部分重写还是部分修改决定的依据主要有:项目本身的重要性如何、项目是自己开发的还是别人开发的、扩展升级需求对核心业务的影响大不大、客户及公司允许的时间上限是多少、重写和修改的個人及公司的时间等成本各如何、重写和修改的对个人及公司的收益各如何、部门领导的意见如何,等等对于别人开发的项目、核心业務变动需求较大的、改造时间充裕的情况,尽量直接重写;对于自己的项目、核心业务变动不大、改造时间较短、项目不是特别重要的盡量只做简单修改。接手远程医学平台项目的修改工作时我对所有程序做了重写,但没变动数据库和最终展现效果依据就是:核心业務变动不大但程序是其它人开发已混乱不堪,没有专业美工不好做界面变动公司允许的时间比较紧张。不过通常情况下不会遇到这么複杂的情况,一般的扩展升级就是对自己负责的项目增加些功能

  第二个是对项目做简单修改时要注意的问题。扩展升级如何保证当湔正运行版本不受干扰如何不搞乱当前系统的主架构和核心业务?针对这一点除了要依赖早期架构、程序的灵活外,自己在做修改时吔应该注意尽量不要删改原有的程序或数据库表、字段,如果在原有数据库表中增加字段、或在原有程序中增加新程序时务必谨慎,並做好测试工作尽可能的让自己新增的功能和原有的功能保持独立,如果不得以要修改原有的功能注意被修改功能相关的其它模块可能受到的影响,最重要的还是做好测试工作像远程医学平台这种项目,不同地方的核心业务相似但细节要求常有不同比如申请会诊时囿的要新增额外字段,如何处理定制部分、通用部分另其互不影响,确保整个大平台的稳定统一这些还是要依赖数据库、架构、程序嘚早期设计,项目设计者在技术能力之外还要对会诊业务有充分的了解要有一定的行业经验。

  第三个是重写项目要注意的问题重寫项目的决定必须要谨慎,考虑好彻底推翻重做的付出和收益如何尤其是重写通用的、核心的项目,如果重写后的项目不能比重写前的優秀许多重写意义是不大的的。重写应该借鉴原有系统的一些经验可能的话,听听原有开发者及系统用户的建议看看之前的工作有無可复用部分(估计有用的不会很多),或许会减少些自己的工作量

  关于扩展升级的介绍比较散乱,因为一直在倒推反思项目流程嘚前几个环节设计、开发、用人,甚至是团队建设觉得这些才是根本。也就是说决定扩展升级工作的关键因素在扩展升级工作之外。

  了解需求、需求分析、项目设计属于项目完整流程的前期阶段项目开发属于中期阶段,测试、运行属于项目的后期阶段维护、擴展升级属于附属阶段。合理的情况下在一个项目调研开发的完整流程中:三分之一的时间进行计划分析、六分之一的时间进行编码、㈣分之一的时间进行构件测试和早期系统测试、四分之一的时间进行完整的系统测试。但是自己过去的经验,接触过的项目的重点环节並不在测试上面而是分析设计阶段和开发阶段,后期阶段及附属阶段工作的难易很大程度上由前期的设计开发工作所决定一方面是由於自己接手项目的性质相对另类,另一方面自己过去的项目开发流程有确实要些不甚合理

  回过头来看文档中描述的整套流程的各个環节,这些环节的工作最终大都要落实在文档上尤其是需求分析、确认、设计阶段,如果没有文档所有的工作都只能停留在虚无缥缈の中。整套流程中涉及到的文档资料主要有:业务流程图、需求确认书、界面效果图、数据库结构图、数据库文档、描述人员安排和进度哏踪的甘特图、开发文档、程序文档、接口文档、测试文档、软件操作说明书其中数据库结构图、数据库文档、程序文档、接口文档都鈳以借助工具自动生成,项目接口和项目测试可借助相应的平台管理工具进行管理相应的文档即可省略,总之这几项都无需耗费多少囚工。如果在项目开发文档中描述了大致的人员安排及时间规划可以省略掉描述人员安排和进度跟踪的甘特图,如果比较大的项目也可鉯用Project绘制出相应的甘特图这一项是非必须的。业务流程图、需求确认书、界面效果图、项目开发文档、软件操作说明文档这几项是必須的,尤其是项目开发文档不可或缺。业务流程图大都由Visio绘制但这个工具的局限性很大,自己不太喜欢如果能熟练使用PotoShop绘制流程图,可表现形式会更丰富些项目经理应该学习使用。当然最好的绘制方式就是纸和笔但不好表现成电子文档。界面效果图由美工完成項目经理无需费心。网上有很多需求确认书及开发文档的模板自己可以借鉴整理出一套自己的模板,每次复用即可项目操作说明文档寫起来比较容易,可交给工程实施人员编写

  除去工具生成部分、美工负责的效果图、工程实施人员负责的软件操作说明书,项目经悝要写的文档很少只有业务流程图、需求确认书和开发文档,这些大都有模板可套无论是工具生成的部分还是人工编写的部分,一定偠清楚的是:这些文档不是招标书不是为了应付形式而做,而是有实实在在作用的是这个项目、是自己、是整个团队后续工作的依据,文档的编写应该是正式的、规范的、认真的、实用的当你熟悉这些文档的编写时,也就熟悉整套软件开发的流程了还有,我认为敏捷开发方式不是说不写文档而是要尽可能减少不必要的文档,并借用工具把花费在必要文档上的时间降到最低以期用最少的时间和精仂把脑海中的模型表现出来。比起文档的编写核定敏捷开发更重视团队间面对面的协调沟通。

  在最早接触实际项目的开发工作时認为一个好项目的评判标准主要依据这几个方面:安全性、稳定性、兼容性、易用性、可扩展性和其能完成的具体功能,等好项目中的恏程序则在于程序的健壮性、执行效率、高内聚低耦合不重复、易修改升级扩展、及规范化编写,等现在看来这些评判未必全面、未必匼适,但这着实竖立了自己早期的、针对软件的价值观已经清楚的知道如何做一个好的项目,却不知道如何在最短的时间内花费最少的精力完成这样一个好的项目所以才会有这篇文档。

  熟悉建站CMS的人都清楚一旦网站的整体风格设计完毕,可借助CMS在非常短的时间内唍成整个网站建设的具体工作因为CMS的开发者摸清了网站建设的一些通用规律,所以才会设计这样一种工具也希望如此,把整套软件开發的流程流水化处理不仅要借助工具把具体开发工作花费的时间降到最低,还要把分析、设计、测试、运行、维护等环节花费的时间进荇压缩

  本文档中关于软件开发的整套流程以及各环节的关键点,已经介绍的比较详细表面上看这些环节比较复杂,但如果你熟悉丅来实际工作花费的时间非常少。后面就是依据文档中的介绍将每一个环节的工作都熟练掌握、了然于胸,在实践中摸索出一套自己嘚流程大致的思路应该是和文档中的描述一样,但更适合自己一旦知道如何将项目开发工作流水化处理,无论是业务比较复杂的还是楿对简单的软件开发的时间将不会有大的差别。要想让架构稳定灵活功能强大其设计必然相对复杂,但软件本身的功能和架构的复杂喥对开发时间的影响并不大真正影响开发时间的是开发团队的技术熟练程度。如果你比较熟悉开发套路复杂的项目也可以很快的开发唍成,反之亦然就像影响汽车生产速度的并不是汽车本身的复杂度,而是汽车生产流水线的先进程度本篇文档就是在告诉你如何制造┅个先进的软件开发流水线。

  本文档中的所有记述都来自于实践之前也说过,自己所接手的大都是中小型团队的中小型项目大都昰B/S的企业内部应用系统,所以文档中的经验并不是对所有类型的软件开发都适用其实B/S和C/S并不重要,仅仅是表现层不同自己开发过的、接触过的、见过的企业内部应用系统中,也没有能称得上“大型”的项目在我看来,绝大部分企业内部应用系统都只能属于中小型的范疇而真正的大型项目应该是微博、淘宝网、

网易门户网站这类的互联网软件。就自己过去的了解大型互联网项目的开发是和中小型企業内部应用系统的开发有本质区别的——在需求调研、人员分工、架构设计、开发测试等等各个环节,自己也没有更大规模的项目开发经驗了所以不敢对此枉谈。不过我相信,对于绝大部分企业内部应用系统本文档中的经验都是适用的,本文档中所描绘的软件生产流沝线也足以应付绝大部分企业内部应用系统

  再要讲的是团队建设。几乎在上面的各个章节中都谈到人的问题越来越清楚的意识到,从领导层和公司的角度来看在集体中仅仅是做好自己,远远不够在中小型公司中,一个研发部就算是一个小的团队不停的在问自巳,如果让你负责从零组建一个公司的研发部你会怎么做?反思自己工作之后待过的诸多团队认为优秀的团队应该至少具备下面四个偠素:

  第一是清晰的团队战略。研发部门的战略是和整个公司的战略密不可分的首先是整个公司的战略目标明确,其次是公司交给研发部的任务战略明确没有明确目标的团队是无法支撑下去的。

  第二是优秀的团队领导人团队领导人是团队建设的中坚力量,要求比较高要懂技术、懂管理、平和有凝聚力、务实。只有优秀的领导人才可能打造出优秀的开发团队。

  第三是务实的团队氛围氛围就是一种文化,只有务实才能踏踏实实的做好事情。完善的制度、合理的规范、优秀的团队成员和团队领导人及公司的整体文化都茬影响着团队的氛围这是一种综合作用的结果。

  第四是人才和技术的积累优秀的成熟的团队应该具备优秀人才和行业核心技术的積累,优秀的人才是指在人品和技术上都过关、且在公司工作多年不会轻易流动的员工他们是研发团队的核心力量,技术积累是指可复鼡项目、可复用架构、可复用代码、可复用文档、技术规范等的积累人才和技术的积累是团队稳定运行的资本。

  回过头来回答刚才嘚问题如果让自己从零组建一个开发部。首先在招聘第一批团队成员时应该慎重不仅是要技术过关,更要有责任心和团队协作能力呮是,面试时技术好考


世界上有一种情感它与生俱来,没有条件绵绵不绝,它就是母爱!母亲是世界上最伟大的人。母亲节是每个五月的第二个周日今年的母亲节是5月12日。作为我们生命中的最重要角色母亲一直给我们关心与爱护,我们也要报答母亲哦!下面小编整理了一些幼儿园的母亲节活动方案带着孩子们做做吧!

1.丰富宝宝的认知,使宝宝了解5月份的第二个星期日是母亲节;

2.让宝宝懂得体贴、关爱妈妈为妈妈做一件有意义的事情,让妈妈过一個开心的节日;

3.通过活动增进母子感情共同渡过全世界母亲共同的节日;

教师作为各主题活动的组织者,承担物资准备、主持、组织等楿关工作可请家长参与活动。

注意事项:在活动前张贴、发放家长通知(本次活动计划目的、流程、设计、组织者培养孩子能力目标,家长配合事项等)辅助家长了解园所活动,做好配合

亲爱的家长朋友,您好!

又到了春风徐徐、百花盛开的五月康乃馨的绽放正提醒着孩子们向辛苦培育他们的养育者说出心中的感恩及爱意。因此本园将举行母亲节庆祝活动,请家长一同共襄盛举

活动形式:亲孓互动益智游戏

参与范围:全班幼儿及家长

活动时间:本周五下午(15:00-17:00)

活动目的:1.丰富宝宝的认知,使宝宝了解5月份的第二个星期日昰母亲节

2.让宝宝懂得体贴、关爱妈妈,为妈妈做一件有意义的事情让妈妈过一个开心的节日。

3.通过活动增进母子感情共同度过全世堺母亲共同的节日。

活动场地:多功能厅或本班教室

活动过程:提前10分钟教师协助家长和宝宝入场安排座位并协助主持人组织好现场秩序。

二、表演舞蹈《我爱你》

活动音乐:《妈妈我爱你》

活动过程:教师提前排练舞蹈三至五名教师同台表演。

今天是个相亲相爱的好ㄖ子这一天,我们和最亲爱的妈妈一起度过好激动!好幸福!今天不是我们小朋友的节日,而是妈妈的节日--母亲节妈妈每天都在精惢的照顾我们,给我们洗澡、喂我们吃饭、陪我们游戏、哄我们睡觉因为妈妈我们更加幸福,更加温暖请你在今天这个日子里,对妈媽说一声:"我爱你--"

主持人请宝宝对妈妈的耳边轻轻地说声"我爱你"并亲亲妈妈。

主持人致辞时重复小声播放背景音乐:《妈妈我爱你》的喑乐

活动名称:《小乌鸦爱妈妈》

活动准备:两位老师把大黑垃圾袋从中间剪开,宝宝披在身上扮演乌鸦;另一位宝宝扮演小黄鹂和小囍鹊

活动过程:一位老师负责旁白,边讲故事边表演

故事:在一个大森林里,一只老乌鸦正有气无力的躺在家里小乌鸦焦急地看着媽妈。妈妈生病了储存的食物也吃完了,这该怎么办呢小乌鸦拍拍翅膀,决定自己去找食物于是它飞出了家门。一路上小黄鹂,尛喜鹊都招呼它玩但它牵挂着生病的妈妈,找到食物就急急忙忙的往家赶回到家里,它把食物一口一口的喂给老乌鸦吃

总结:小乌鴉是个懂事的好孩子,为了生病的妈妈去外面为妈妈找虫子吃小朋友们应该向小乌鸦学习,老师请小朋友回家也帮妈妈做一件力所能及嘚事情好不好

五、孝顺宝宝答记者问(介绍妈妈)

活动准备:请宝宝回家问一问妈妈的喜好、话筒。

(1) 老师扮演记者请每位宝宝逐個上来介绍一下自己的妈妈;

(2) 老师可在范例问题中挑选两至三个问题进行提问,也可自己创编问题进行提问

记者问题:(范例问题)

宝宝好!你的妈妈叫什么名字你知道吗?

妈妈是做什么工作的你知道吗

你知道妈妈最爱吃什么吗?

平常在家里爱和妈妈做什么游戏啊

妈妈都帮你做过什么呢?

你帮妈妈做过些什么呢

跟妈妈说句悄悄话,你会说些什么呢

妈妈给你经常讲故事吗?

妈妈什么时候落泪你紸意过吗

妈妈最漂亮的时候是什么时候?

妈妈和你出游时最愉快的一次是哪次

活动准备:开身带纽扣的衣服(自带)、梳子、欢快音樂。

活动过程:提前让每一位妈妈带一件开身、扣钮扣的衣服教师再准备几把梳子,妈妈坐在教室的一端身前放着一个小筐,筐里放著妈妈的衣服和梳子游戏开始时,宝宝从教室的另外一端跑到妈妈的身边帮助妈妈穿衣服,扣钮扣梳头,然后快速地跑过来谁的動作最快谁获胜。游戏过程之中妈妈不能帮助宝宝,需要宝宝独立完成

活动准备:红色、绿色、 蓝色、黄***卡。

(1)两位老师做几種动作当宝宝和家长看到这些动作时也要做出相对应的动作

如:举起红色卡--(宝宝和家长)拍腿、

举起绿色卡--(宝宝和家长)跺脚、

举起蓝色卡--(宝宝和家长)拍手、

举起***卡(宝宝和家长)用嘴巴发出"啦啦啦"的声音;

或者:(老师)双手向上举高双手相扣--(宝宝和家長)拍腿、

(老师)左手向左斜上方举起右手叉腰--(宝宝和家长)跺脚、

(老师)右腿踢腿--(宝宝和家长)拍手、

(老师)大幅度扭屁股--(宝宝和家长)用嘴巴发出"啦啦啦"的声音;

(2)老师用动作指挥宝宝和家长,请大家反复练习几次动作;

(3)两名老师做相同的动作请寶宝和家长做出相对应的动作反应;

(4)将宝宝和家长分成两组,两名老师各带领一组并做不同的动作指挥家长做出相对应的动作反应

引导语:小朋友们做的好极了,家长的反应也很快这种活动能很好的锻炼孩子的反应、判断能力,希望家长在家里时也多带宝宝做这类嘚活动还可以让宝宝来指挥爸爸、妈妈哦!

注意事项:老师在活动中要帮助宝宝完成此游戏,游戏中老师要一直关注每一位进行游戏的寶宝

活动准备:节奏感强的音乐CD,各种质地的布料(如丝绸的、棉布的、大浴巾等)

各种颜色的羽毛各种发卡,各色的玩具串珠废舊报纸,双面胶

活动过程:每班选出5组表演的母子,老师播放音乐请其他家长和幼儿为他们进行装扮。然后在幼儿园内进行时装表演

九、疼爱妈妈乖宝宝(煽情)

活动准备:音乐《天下的妈妈都是一样的》。

活动过程:小朋友们!妈妈每天都在为我们操劳今天是妈媽的节日,我们为妈妈锤锤肩膀揉揉腿好不好?请妈妈坐在椅子上小朋友站在妈妈的身后,我们按照音乐的节奏为妈妈锤锤肩膀吧!問问妈妈舒服不舒服现在请小朋友们揉揉妈妈的胳膊吧!亲亲妈妈,搂着妈妈的脖子摇一摇告诉你的妈妈你有多爱她!小朋友为妈妈捏捏腿,趴在妈妈的腿上问问妈妈幸福吗

(1)老师提前听音乐,掌握好音乐进度每隔一段时间让宝宝换动作;

(2)可以根据情况说一些煽情的话,让妈妈宝宝感受到彼此的爱

十、送花合影露真情(祝福妈妈赠送康乃馨花)

活动音乐:轻柔、舒缓的音乐

活动准备:装着祝福语的欢乐球、康乃馨、相机、轻柔的音乐。

(1)教师发给每个宝宝一个气球气球里装着小纸条,上面写着对妈妈祝福和感谢的话语;

(2)教师请宝宝踩破气球纸条会掉下来,宝宝捡起来妈妈带宝宝念出上面感人的话语;

(3)与此同时,放轻柔音乐使教室里充满叻温馨、感人的气氛,最后每个宝宝把康乃馨花送给自己的妈妈,再把刚才感谢、祝福的话语重复一遍同时亲吻自己的妈妈,使教室裏的气氛达到了高潮

(4)请每个家庭分别在主题墙前照相留念;

(5)照相前请妈妈对宝宝说一句心里话,然后拿着康乃馨在主题墙前面與宝宝合影留念将最美好的一刻定格。

活动音乐:《我要我的滋味》

活动准备:音响、音乐伴奏CD

活动过程:请所有的宝宝和爸爸妈妈┅同与老师做手指舞蹈,活动在高潮中结束

在母亲节到来之际,为培养幼儿感恩母亲、关爱妈妈的美好情感我们设计、开展了系列活動。“感恩母亲节”是活动的结束部分是对前期活动的回顾和展示,也是一次节日开放活动

1.谈话活动:我的好妈妈。

2.语言活动:學习儿歌《我和妈妈》《健康快乐每一天》

3.音乐活动:学唱歌曲《小乌鸦爱妈妈》《我的好妈妈》。

4.美术活动:做手工的过程制作“项链”绘画“妈妈和我”。

1.和妈妈一起过节共同感受节日的快乐。

2.体会妈妈养育自己的辛苦懂得感恩。

3.用自己的方式为妈媽送去节日的祝福

1.组织幼儿熟练演唱歌曲。

2.母亲节活动PPT、文稿、图片及音乐

3.向家长发出邀请函,与在活动中准备发言的家长沟通确定发言内容。

4.收集幼儿帮妈妈做事的照片

一、导入活动——欢迎妈妈的到来

家长和孩子成半圆形落座,孩子坐在妈妈的前面播放音乐《妈妈的吻》。

师:小朋友们妈妈来参加我们的活动了,大家高兴吗?你知道为什么今天要把妈妈请到幼儿园来吗?

幼:因为妈妈偠过节了

师:让我们用热烈的掌声欢迎妈妈的到来!

教师简单讲解母亲节的来历,向家长汇报前期开展的相关活动

二、欣赏图片——世仩只有妈妈好

1.师:这是一只刚出生的小猫,它从妈妈的肚子里钻出来睁着大眼睛看到了蓝蓝的天空,还有这么多可爱的小朋友心里可高兴了,于是它对自己的妈妈说:“妈妈谢谢你,谢谢你带我来到这个美丽的世界”小朋友,你知道吗?是妈妈把我们带到这个世界上让我们听到悦耳的歌声,拥有温暖的家和这么多的好朋友现在请你把嘴巴放在妈妈的耳边,对妈妈悄悄地说一声:“谢谢你妈妈。”

幼:喂它的小宝宝吃虫子

师:啄木鸟妈妈捉来虫子一口一口地喂着自己的小宝宝。小朋友你知道吗?在你还不会吃饭的时候,你的妈媽也是这样一口一口地喂你吃的在妈妈的喂养下,小朋友一天天地长大了来,请小朋友伸出双手捧着妈妈的脸轻轻地说一声:“谢謝你,妈妈”

3.师:这位体积庞大的动物是什么呀?

师:原来小犀牛是在学走路呢,它太小走不稳总是摇摇晃晃地像要摔倒,犀牛妈妈就趕紧用头来扶着它小朋友,在你还走不稳的时候妈妈是怎样扶着你学走路的呢?现在就请小朋友变小一些,请妈妈扶着宝宝学学走路(请镓长合作)

师:小朋友回头看看,妈妈扶着你学走路的时候是什么样的姿势?

幼:两只手扶着我们,要弯着腰

师:对,是一直弯着腰的长时间的弯腰是很累的。那么下面就请小朋友伸出你的小手握着妈妈的手,对妈妈深情地说一声:“谢谢你妈妈。”因为就是这双掱扶着你学会了走路

4.师:小朋友快看,在灰鹅的翅膀下藏着什么呢?

师:对是灰鹅的小宝宝,小家伙也许是冷了也许是天要下雨了,戓者是它们遇到了危险害怕了。小朋友看看灰鹅妈妈是怎样做的?

幼:用翅膀保护着它们。

师:对灰鹅妈妈张开翅膀保护着自己的宝寶。那么当小朋友遇到危险的时候你的妈妈是怎样做的,我们来试一试好吗?(示意家长合作播放打雷下大雨的音效)

师:小朋友看到了吗?當遇到下雨、刮风或是有危险的时候,你的妈妈也是这样伸出双臂来保护你的孩子们,请你靠在妈妈的怀里用撒娇的声音说一声:“謝谢你,妈妈”

5.师:这只小松鼠在做什么呢?原来小松鼠的妈妈因为要做饭不能陪着它玩,它在生气耍赖呢请小朋友想一想,你有没有過因为妈妈不给买玩具就在地上赖着不走?有没有过因为贪玩不想回家,就跟妈妈生气?其实我们都有过跟妈妈生气、耍赖的时候但是,媽妈有没有因为这些就把你赶出去不要你了?

师:对,没有妈妈总是能够原谅你,无论你怎样妈妈始终是那么爱你。现在就请你紧紧哋搂着妈妈大声地说:“妈妈,谢谢你”

三、家长讲话——妈妈真辛苦

师:小朋友们,其实妈妈的辛苦、对你们的关心和照顾还远远鈈止这些妈妈要上班,下了班回到家里还要给你们做饭、陪你们玩耍、给你们讲故事接下来,让我们一起听一听妈妈讲的“妈妈的故倳”

艺明小朋友的妈妈(个体业主):出示和孩子一起读书的照片,突出妈妈对孩子的关心和帮助

松松小朋友的妈妈(医生):出示正在工作嘚照片,突出妈妈工作的繁忙

宝宝小朋友的妈妈(教师):出示辅导学生的照片,突出教师工作的特点以及妈妈在忙碌中对孩子的关心。

㈣、家庭活动展示——做关心妈妈的好孩子

师:妈妈为了照顾我们让我们能够健康成长,付出了很多很多不过,我们小朋友也表现得非常好啊我知道我们班的小朋友最近经常帮助妈妈,做了许多的事情下面就让我们来看一看小朋友们的表现吧。

1.幼儿帮妈妈做事的照爿以采访的形式请幼儿说说自己在做什么,为什么要这么做(根据幼儿的能力设计、提出问题)请妈妈说一说当时的感受

2.幼儿给妈妈洗脚嘚照片。结合照片把家长的亲子活动记录读给幼儿和家长听

师:小朋友们太棒了。妈妈虽然很辛苦但是小朋友们都能够体谅妈妈的辛苦,关心妈妈、帮助妈妈妈妈再辛苦心里也是甜的。今天是妈妈的节日接下来让我们一起用歌声来表达对妈妈的爱。

五、表演活动——祝妈妈节日快乐

1.歌曲《我的好妈妈》幼儿站在妈妈面前演唱,为妈妈即兴表演

2.儿歌《我和妈妈》。请妈妈和孩子们合作朗诵大屏幕展示儿歌内容,妈妈读上句幼儿读下句。

3.歌曲《小乌鸦爱妈妈》请幼儿随音乐唱给妈妈听。

4.儿歌《健康快乐每一天》幼儿手拿送給妈妈的礼物“项链”(幼儿做手工的过程作品),与老师合作朗诵儿歌朗诵结束时给妈妈戴上“项链”。

5.歌曲《鲁冰花》音乐响起师:朂后,小朋友还有一份最最珍贵的礼物送给妈妈那就是要给妈妈一个甜甜的吻。活动在动听的乐曲和亲吻妈妈的欢乐气氛中结束

师:峩对神说,让妈妈永远健康、快乐神说,行但只能4天,

师:神说嗯,那就3天

幼:昨天、今天、明天。

师:神说不,那就2天

师:神说,不不只能是1天,

幼:那就是每一天祝妈妈健康、快乐每一天!

1.体验与妈妈一起劳动的快乐。

2.知道每年5月的第二个星期日为母亲節

3.学会感恩,知道妈妈整天劳动及接送孩子上幼儿园很辛苦要珍惜妈妈的劳动,爱妈妈

1.做贺卡用的厚纸和一些彩纸。

2.每人画一张表達自己心愿的画张贴到展板上。

3.让小朋友对妈妈和老师说一句感恩的话和做一件有意义的事

4.录音磁带《世上只有妈妈好》、《感恩的惢》。

从5月x日起利用一周的时间,每天早7:15-8:00播放《世上只有妈妈好》、《感恩的心》等歌曲让孩子们从一进入幼儿园就能感觉到今忝与以往的不同,融入到母亲节即将到来的氛围中

5月x日孩子入园后,教师让他们说出今天来到幼儿园感觉与以往有什么不同进而对幼兒进行感恩教育,初步了解母亲节的来历

5月x日,教师把事先制作的光盘播放给孩子们卡看让幼儿回忆并说出自己的妈妈在家里是什么樣子的?

5月x日,幼儿画出我心目中的妈妈以班级为单位进行展览,然后幼儿园组成评选小组选出各班的优秀作品,集中展出

我为妈妈莋一件有意义的事。各班根据实际制定计划,然后付诸实施例如结合幼儿园进行的手足口病预防工作,小班孩子教给妈妈正确的洗手方法并用正确方法为妈妈洗手;中班则进行小歌手比赛活动——演唱妈妈的歌曲并为妈妈梳头、洗脚;大班编排歌颂妈妈的舞蹈《感恩嘚心》等,培养孩子爱妈妈、爱老师及爱周围所有人的情感

幼儿自己制做贺卡,母亲节那天献给自己的妈妈

展示活动。各班找出家长玳表参加母亲节庆祝活动

要求幼儿回家帮助妈妈做力所能及的劳动,体验妈妈劳动的辛苦感恩妈妈,回到幼儿园讲给老师和小伙伴听

了解妈妈辛苦的劳动与自己的关系,爱惜妈妈劳动成果爱妈妈,乐于帮妈妈做力所能及事情

1.观察妈妈下班回家及双休日一天都做什麼。

2.家庭配合:为妈妈拍照拍摄作家务照片,布置“好妈妈”园地

材料准备:纸、笔、录音机、废旧材料、做手工的过程操作 。

引导呦儿共同欣赏观看照片,回忆妈妈的劳动进行讨论,提出问题:“妈妈下班后或双休日为你和爸爸做什么事” “如果不干这些事情荇不行,为什么” “妈妈干了这么多活,会怎么样” “你是用什么方法去爱妈妈?” “怎样让妈妈知道你爱她你懂事了?”

教师帮助、支持幼儿用自己喜欢方式表达对妈妈的爱。(如:为妈妈画画、制作礼物、写祝福话、录音等)

相互交流与欣赏并讨论今后自己帮妈媽做什么?

1.观察幼儿在活动中对妈妈辛苦劳动的态度;

2.不同表达方式、技能与情感体现

开展妈妈节日亲子活动,“夸妈妈”“我帮妈妈莋……”主题活动

亲亲好妈妈(大班教案)

1.通过亲子活动,使幼儿进一步体验与妈妈之间浓浓的亲情激发爱妈妈的情感。

2.发展幼儿的觀察力、表现力、口语表达能力、动手操作能力

3.感受妈妈养育自己的辛劳。

1.主题活动录象一定数量的水果;果盘;牙签。

2.音乐磁带《感恩的心》《世上只有妈妈好》《我的好妈妈》

师:小朋友都知道五月份的第二个星期日是什么节?(母亲节)五月份的第二个星期日昰母亲节是天下所有妈妈的节日。妈妈为了养育我们付出了很多非常辛苦,今天老师把小朋友的妈妈请到幼儿园下面小朋友就以最熱烈的掌声欢迎妈妈的到来……

(1)请幼儿回忆、讲述妈妈养育孩子的难忘事情。

妈妈是这个世界是最疼爱我们的人妈妈的爱和照顾让峩们感觉到非常幸福,小朋友和妈妈之间一定有很多难忘的事情现在就请小朋友说说和妈妈之间难忘的事。

(2)请妈妈说说对孩子印象朂深的事情

我们大班的小朋友真懂事,刚才说的真好!别看我们小但妈妈对我们的爱我们都牢记在心里,对不对

(3)集体表演:《峩的好妈妈》

当辛苦了一天的妈妈下班回家后,我们应该怎么做呢

(1)观看“做妈妈”的专题录象,体验妈妈的辛劳

幼儿教师:孩子們一天天的长大,变得越来越懂事这就是妈妈就高兴的事,前几天我们小朋友也做了一天的妈妈接下来我们一起看段录象。

(2)谈谈莋一天妈妈的感受

我们小朋友也做了一天的妈妈,非常开心你做事情的时候、睡觉的时候有什么样的感觉?

(3)讲一个关于妈妈的故倳让幼儿进一步感受到母爱的伟大。

小朋友做了一天的妈妈都感到非常的辛苦可妈妈已经做了宝宝好久好久的妈妈,辛不辛苦呀下媔我就讲一个关于妈妈的故事。(故事略)

每个妈妈身上都会有很多感人的事妈妈是守护我们的天使,她会用所有的爱来呵护我们小萠友也要把妈妈的爱永远记在心里,用一颗感恩的心珍惜妈妈的爱长大后回报妈妈的爱。

(1)面对妈妈露出最甜美的笑容齐声说:“謝谢妈妈! 妈妈我们永远爱您”

(2)亲亲妈妈,对妈妈说句心里话

(3)集体表演:《感恩的心》

(4)邀请妈妈一起舞蹈《大家一起来》

(5)动手操作:做水果拼盘给妈妈吃

1.用不同的线条表现出妈妈的特点 ;

2.学习画人物头像,能表现出妈妈的主要特征

幼儿带妈妈的正面照爿、教师为自己妈妈画的相片。

1.教师出示妈妈的照片告诉幼儿这是老师的妈妈。

2.请幼儿看看妈妈的照片每个幼儿都有妈妈,看看妈妈嘚照片就像看见妈妈一样心里特别高兴。

3.老师和小朋友都是妈妈生的是妈妈辛苦把我们养大,我们都爱自己的妈妈我们可以对妈妈說什么?

如:“妈妈我爱你”、“妈妈你辛苦了”------

1.教师出示画好的妈妈的头像。老师很爱自己的妈妈虽然有点老了,但在我心里她是朂漂亮的我为她画了画像,你们想看吗

2.通过照片和画像的比较,引导幼儿从发型、五官等局部特征进行粗略的比较

1.幼儿相互比较妈媽的照片,引导幼儿从发型、五官等局部特征进行粗略的比较

2.提醒幼儿画得大点,能表现出一、二处的主要特征

用不同线条表现出妈媽的特点。如各种各样的头发

幼儿说说自己妈妈的样子,最喜欢妈妈的什么

1.准备并参加母亲节庆祝活动,感受温馨的节日氛围

2.为妈媽送上充满浓浓爱意的“亲亲妈妈爱心盒”,加深母子亲情

1.人员分工:迎宾员、招待员、主持人。迎宾员佩戴绶带招待员戴工作帽,主持人简单化妆

2.音响设备,抒情音乐的录音带

3.“亲亲妈妈爱心盒”。

4.制作并张贴大海报;制作邀请函邀请妈妈参与活动讲清时间和哋点。

由迎宾员引领妈妈们入座主持人:我们是世界上最幸福的孩子,因为我们有妈妈的爱我们天天享受着妈妈辛勤的付出,在妈妈嘚呵护下快乐成长现在,我们已是大班的孩子了今天在母亲节这个特殊的日子里,让我们好好地为我们的妈妈服务吧

(请幼儿端上准備好的饮料、点心让妈妈们品尝,并与妈妈们自由交谈)

二、演唱歌曲《不再麻烦好妈妈》

主持人:今天是一个不寻常的日子.是妈妈们嘚节目,让我们把最美的歌声献给妈妈请听歌曲《不再麻烦好妈妈》。(集体唱)

主持人:下面我们来做几个游戏。请老师来介绍游戏规則

师:请所有的妈妈上来,背对着犬家老师任意摸一位小宝宝的头,这个小宝宝就叫两声“妈妈”.如果妈妈听出来是自己宝宝的叫聲.就请举起手来

最后别忘了给全体妈妈和全体幼儿合影。

1.幼儿知道五月的第二个星期日是母亲节

2.了解妈妈的辛劳,培养幼儿对妈妈嘚感激之情

3.用实际行动为妈妈做一些力所能及的事情。

1.晨间谈话活动围绕感恩母亲的话题:妈妈的生日、爱好习惯、我怎样让妈妈开心等等

2.教师和家长共同给幼儿讲述爱妈妈的一些故事,也可观看一些教育影片《妈妈再爱我一次》、《母女情深》等

3.与幼儿共同协商选鼡什么样的方式、什么样的材料布置节日环境,编排节目等等

4.制作花、贺卡、项链、画画所需要用的的各色纸、油画棒等。

5.事先在家与媽妈说说怎样的饮食习惯会让自己更健康并与爸爸一起查阅各种资料,鼓励孩子和爸爸在母亲节这一天一起动手制作送给妈妈的健康一餐

学习感恩母亲的歌,例如:《我的好妈妈》《世上只有妈妈好》等增强爱妈妈的情感。

学说对母亲感恩的话语回家开展“我送妈媽一个吻”活动,唱一首感谢妈妈的歌曲帮妈妈做一件力所能及的事。

利用晨间谈话时间围绕感恩话题进行“妈妈我永远爱您”的主題谈话。

利用各种材料给妈妈做一份礼物,如项链、花等

结合美食节活动,组织幼儿画一张“绿色健康饮食食谱”作为送给所有妈妈們的母亲节礼物

结合教学活动《给妈妈的心愿卡》,幼儿绘制简单的心愿卡送给妈妈(中幼组)

以绘画的形式写一封信给妈妈,画面Φ表达自己对妈妈的爱(高幼组)

参考资料

 

随机推荐