2007年3月1日
#
Introduce to Updater Application Block
The Updater Application Block provides a "pull model" solution to automatically download application updates from a single location.Updater Application Block, version 2.0 is a reusable and extensible source code-based guidance that shows you how to add self-updating capabilities to .NET-based smart client solutions.
Downloads
Updater Application Block version 1.0
http://www.microsoft.com/downloads/details.aspx?FamilyID=c6c17f3a-d957-4b17-9b97-296fb4927c30&DisplayLang=en
Updater Application Block version 2.0
http://www.microsoft.com/downloads/details.aspx?FamilyID=c6c09314-e222-4af2-9395-1e0bd7060786&DisplayLang=en
Microsoft Developer Networks Articles' Links
Introduction to the Updater Application Block
Updater Application Block - Version 2.0. Microsoft Corporation March 2005. Summary: This introduction chapter to Updater Application Block provides the audience requirements, highlights of this ...
Design of the Updater Application Block
Updater Application Block - Version 2.0. Microsoft Corporation March 2005. Summary: The Updater Application Block is designed to provide a simple out-of–the-box experience at the same time it is ...
Updater Application Block Version 2.0 FAQ patterns & practices Developer Center. Updater Application Block Version 2.0 - Home Page. Microsoft Corporation. September 2005. Summary. This page answers frequently asked questions about the Updater ...
Extending the Updater Application Block Updater Application Block - Version 2.0. Microsoft Corporation March 2005. Summary: Updater Application Block is designed to be flexible enough to let you customize the application update solution.
Developing Applications with the Updater Application Block Updater Application Block - Version 2.0. Microsoft Corporation March 2005. Summary: This chapter describes how to integrate the Updater Application Block into your solution and configure it for your ...
Updater Application Block - Version 2.0 patterns & practices Developer Center. Microsoft Corporation. March 2005. Summary. This page provides an overview of the Updater Application Block, version 2.0.
2007年2月3日
#
翻译:Ricktroy (
ricktroy@126.com,
http://ricktroy.cnblogs.com/ )
工程师个体软件过程(PSP):第一部分
(卡内基梅隆大学软件工程学院)
教学:使用PSP0
教学目标:
在此教学之后,你将:
l 明白PSP0过程
l 知道如何使用PSP0过程脚本和表单
l 准备好将PSP0应用于程序1
PSP0过程:
PSP0是一个简单的、定义的、个体过程。
l 制作一个计划
l 使用你现有的设计和开发方法去编写一个小程序
l 在你的工作过程中收集时间和检测数据
l 准备一个总结报告
PSP0目标:
PSP0的目标是:
l 在编写程序的过程中演示定义过程的使用
l 将基本的测量使用于开发过程
l 需要最小化对于你个体实践的变化
PSP0过程步骤-1:
PSP0有六个步骤。
计划(Planning)-制作用来开发通过需求定义的程序的计划
设计(Design)-为通过需求定义的程序制作一个设计规范
编码(Coding)-转化设计规范到程序设计语言语句
PSP0过程步骤-2:
编译(Compile)-翻译程序设计语言语句到可执行代码
测试(Test)-检测可执行代码是否满足需求
检讨(Postmortem)-总结和分析项目数据
步骤顺序:
步骤顺序由步骤之间的依赖来决定。
l 你不能在编译代码之前测试它。
l 你不能在编写代码之前编译它。
l 如果设计在编码之后产生你就无法使用设计进行编码。
l 没有理由在实施之后去做计划。
你应该由此开始:计划->设计->编码->编译->测试->检讨
过程流:
为了程序以最小规模产生并容易理解,应该以如下顺序执行。
需求->计划->设计->编码->编译->测试->检讨->程序和项目数据
制订一个计划。
设计所有模块。
编写所有模块。
编译编写好的程序。
在检讨的时候总结项目数据。
周期化过程流-1:
一些代码可能需要一个迭代方法。
在这个例子中,设计在一个步骤中完成。
设计确认了两个模块,模块A和模块B。
然后两个模块分开进行编写、编译和测试。
这个例子使用PSP0步骤和两个编写-编译-测试周期。
例子过程:
需求->计划->设计->
[模块A]编码->编译->测试->
[模块B]编码->编译->测试->
检讨->程序和项目数据
周期化过程流-2:
在这个例子中,可能会存在两个以上的周期并且周期也可能包含设计步骤。
注意每个周期都关注于程序的生产部分,例如:模块A,模块B,模块C。
部件规模是决定周期的关键因素。
l 一行代码太少
l 程序也许又太长
一个或者更多的类、方法、过程、函数等是对于一个周期部件合适的规模。
例子过程:
需求->计划->
[模块A]设计->编码->编译->测试->
[模块B]设计->编码->编译->测试->
[模块C]设计->编码->编译->测试->
检讨->程序和项目数据
过程脚本:
过程脚本提供“专家级别”向导来介绍如何使用过程。
它们有一到两页长。
它们描述了:
l 目标
l 入口参数
l 公共说明
l 步骤
l 出口参数
PSP0脚本-1:
计划(Planning):估计开发时间
开发(Development):使用你现在的方法开发产品
检讨(Postmortem):通过记录每个步骤的时间消耗和缺陷增长来完成项目计划总结
PSP0脚本-2:
设计(Design):使用你现在的设计方法设计程序。
编码(Coding):实现程序。
编译(Compile):编译直到无缺陷。
测试(Test):测试程序直到修复所有缺陷。
在缺陷日志中记录缺陷并且在时间日志中记录每个步骤花费的时间。
使用过程脚本:
过程脚本指引你通过过程。
你应该:
l 在开始一个步骤前检查入口参数
l 记录步骤的开始时间
l 执行步骤的过程和说明
l 记录发现和纠正的缺陷
l 在终止一个步骤之前检查出口参数。
l 记录步骤的终结时间
l 执行下一个步骤
迫使你自己使用这个规约,直到这变成一种习惯。
PSP0测量和表单:
PSP0测量:
l 时间(Time)-步骤的跟踪时间。
l 缺陷(Defects)-记录发现的和修正的缺陷。
PSP0有四个表单:
l PSP0项目计划总结-分步骤总结计划的和实际时间,还有缺陷。
l PSP0时间记录日志-用来记录时间。
l PSP0缺陷记录日志-用来记录缺陷。
l PSP0缺陷分类标准-用来定义标准缺陷分类。
PSP学生用书:
PSP学生用书提供对PSP的支持。
l 脚本
l 表单
l 测量
l 计算
l 计划
l 跟踪
l 质量管理
l 分析
l 历史数据
l 访问课程材料
总是提供对使用PSP后继课程的支持。
安装PSP学生用文件:
创建一个文件夹来存放学生CD内容。
复制CD的内容到此文件夹。
内容:
l PSP课程材料
l PSP脚本和表单
l PSP学生用文件
打开PSP学生用文件:
打开PSP学生用文件。
在欢迎界面之后是学生资料的输入界面。
完成学生资料:
输入如下信息:
l 名字
l 初始信息
l 日期
l 你的组织或者公司的名字
l 指导教师的名字
回答如下标签下的问题:
l 雇员状况
l 软件经验
l 程序设计经验
l 教育背景
点击“完成”。
打开一个PSP项目:
选择第一个过程,作业1。
点击打开项目。
注意:当你没有完成前一个项目的时候不要打开一个项目。
PSP0表单-1:
这是PSP0项目计划总结。
通过点击PSP0菜单的PSP表单项目来打开其它PSP0表单。
选择表单来打开:
l 时间日志
l 缺陷日志
l 缺陷分类标准
PSP0表单-2:
(画面演示)
PSP0时间记录日志-1:
步骤:选择你曾经工作的步骤。
开始:输入你开始工作的日期和时间。
双击输入现在的日期和时间。
中断:输入任何中断的时间,以分为单位。
停止:输入你停止工作的日期和时间。双击输入现在的日期和时间。
时间差:自动计算出来的时间差。
注释:描述中断,正在执行的任务或者任何对你的工作有影响的事情。
缺陷记录日志-1:
分类:选择缺陷分类
日期:输入缺陷发现的日期。双击输入现在的日期。
注射步骤:选择你认为缺陷发生的步骤。
移除步骤:输入你发现和解决缺陷的步骤。
缺陷记录日志-2:
修正时间:输入你找到和休整缺陷的时间。你可以使用准确的时间,或者可以自己来裁决。
修正缺陷:如果这个缺陷是在修正另外一个缺陷的时候产生的,输入这个缺陷的号码。
描述:输入缺陷的解释(不是符号,是缺陷)。
缺陷分类标准:
缺陷分类标准提供了一个缺陷分类的公共集合。
你可以添加和移除这个标准中的项目,通常在你获得数据指导你进行变化之前严格按照那些简单的定义是十分明智的。
PSP0项目计划总结:
输入你认为开发需要总体时间的最好估计。
剩余的项目都是自动计算出来的。
步骤的时间:
l 实际时间
l 截止的日期时间
l 截止日期到时间的换算
步骤中注入和移除的缺陷:
l 实际缺陷
l 截止日期的缺陷数
l 到截止日期每日的缺陷
完成一个PSP项目:
选择项目,例如:作业1
输入一个日期到完成字段或者单击完成选择复选框来输入今天的日期。
测量提示:
总结和记录你工作使用过程的数据,记住不要把这件事情向后拖。如果你忘记,尽量回忆起你认为最佳的答案。
得到总结并且精准的答案:
l 跟踪时间详细到秒
l 查出所有的缺陷
你将使用你自己的数据去管理你的过程;总结值得你信赖的数据。
缺陷修复时间:
缺陷修复时间经常是不容易被人理解的。
它记录的是发现缺陷到修正缺陷所花费的时间。
例如:
8:05 编译程序1,得到“23行-类型不匹配”
8:06 用编辑器打开程序1
8:15 修改第六行的声明语句,由整行修改为实型
8:16 运行编译器,“没有错误”
Q:什么是缺陷修复时间?
A:10分钟
缺陷步骤注入:
注入步骤是指缺陷进入程序的时间是在哪个步骤。
例如:
Tom在测试期间在程序中发现一个主要逻辑错误。他重新设计和编写了部分程序。
Q:Tom的程序到了哪个步骤?
A:测试
Tom在他写的新代码中找到一个缺陷。
Q:在PSP的哪个步骤中注入的缺陷?
A:测试
周期化过程中的测量:
考虑:
l 在时间日志入口标记一个程序部分修饰符。
l 添加一个类似的注解到缺陷日志的入口。
l 当缺陷是在上一个测试部分发现的时候,使用如“Test”作为移除步骤。
Tom在进行B部分编码的时候,发现并且修正了一个A部分的接口错误。
Q:在PSP哪个步骤移除缺陷?
A:测试
需要牢记的信息:
在使用PSP0的时候,你的原则目标是学习如何收集和总结你工作的精准和完整的数据。
当你完成这个课程的时候,你将知道如何调整和扩展PSP来满足你未来的需要。
请尽力跟随PSP过程脚本和说明。
2007年2月2日
#
翻译:Ricktroy(
Ricktroy@126.com ,
http://ricktroy.cnblogs.com/ )
软件工程师个体软件过程 第一部分
(课件提供:卡内基梅隆大学软件工程学院)
个体软件过程(PSP)和团队软件过程(TSP)简介
课件主题:
变化的需求
个人软件过程(PSP)和团队软件过程(TSP)原则和目标
什么是团队软件过程(TSP)?
管理支持的需求
什么是个体软件过程(PSP)和它有什么作用?
课程总结
软件世界的变化:
现今,软件控制着大多数商业、政府和军事系统。
l 工厂由软件来管理
l 大多数高级商品由软件控制
l 金融、集中管理和商业操作大部分由软件来操作
软件的花费、安排和质量现在都属于商业范畴。
软件产品规模越来越大:
摩尔定律:18个月增长为两倍,5年增长为19倍。
大规模的软件项目经常失败:
随着尺寸的增长,项目越来越麻烦。
这是一个扩展性的问题:现在的软件实践并不适合扩展,随着尺寸增大,项目就会陷入困境。
(Standish混乱报告[1999年])
为什么项目失败-1:
无论大小软件项目失败主要有四个原因。
项目提交的报告中描述的经常是不现实的。
l 越大的项目,冲突和问题怎么可能越少?
l 如果我们没什么可说的,谁又会去听呢?
规模大的项目控制起来很困难。
l 现今,越来越少的开发人员有个人计划。
l 没有计划,你不可能知道工作的状态。
l 如果你不知道你处于什么位置,管理层就不可能了解工作状态。
l 如果管理层不了解工作状态,他们就不能管理项目。
为什么项目失败-2:
质量问题随着项目尺寸而越来越糟糕。
l 在软件系统中,如果任何部分出现质量问题,软件系统将会出现质量问题。
l 如果开发人员不管理质量,他们的团队不可能管理质量。
l 当处于无管理的状态时,质量就经常会变得很糟糕。
为了更有效率,团队需要领导和训练。
l 领导让团队有动力和有输出产品。
l 训练开发人员团队成为能解决问题的团队。
l 能解决问题、有效率、有提交产品的团队的工作是相当出色的。
变化的需求:
许多个人和企业都依赖于软件。
我们需要提前获得大型的、更复杂、更安全的软件系统。
但是不同的软件实践下,却可能无法实现这个目标。
团体软件过程(TSP)标示了这个需求。
个体软件过程(PSP)提供了开发人员需要的知识和技能,来满足开发人员在实行团队软件过程(TSP)团队中工作的需要。
管理支持-1:
团队软件过程(TSP)的最初目标是提高管理信心使你的团队获得导向性。
一个自导向的团队:
l 设定一个它自己的目标
l 拥有并划分它拥有的角色
l 决定它自己的开发策略
l 定义它自己的软件过程
l 开发它自己的计划
l 测量、管理和控制它自己的工作
自导向的团队会工作得很出色。
管理支持-2:
管理层将支持你直到你
l 达到他们的需要
l 提供你工作的正规报告
l 你的计划听起来增加他们的信心
l 做有质量的工作
l 响应变化的需求
l 你遇到困难的时候找他们以获得帮助
管理支持-3:
自导向的团队是优良的团队。
管理层将认同你管理自己的工作,因为他们相信你会做得非常出色。
为了让他们有这样的信心,你必须:
l 维护花费和记录计划
l 测量和跟踪你的工作
l 适当地向让他们展示你可以做出色的工作。
个体软件过程将向你展示如何做到这些。
个体软件过程(PSP)原则-1:
一个软件系统的质量决定了它最差的组件的质量。
一个软件组件的质量取决于开发它的个体。
一个软件组件的质量取决于开发它所使用的过程的质量。
质量的关键是个体开发人员的技巧、提交产物和执行什么样的个体过程。
个体软件过程(PSP)原则-2:
作为软件专业人士,你应该积极寻找自己的个体过程。
你应该测量、跟踪和分析你的工作。
你应该从你的能力差异中吸取经验和教训。
你应该将独立学习的课程应用到你的个体实践中。
个体软件过程(PSP)提供什么:
稳定、成熟的个体软件过程(PSP)允许你:
l 估计和计划你的工作
l 发现你所需要的提交物
l 免受无原因提交物的困扰
你也将会:
l 明白你现在的能力
l 更好地装备自己以提高你的能力
个体软件过程(PSP)提供什么:
个体软件过程(PSP)提供:
l 一个已经被证实从个体角度出发的个体过程进行开发和使用的基础。
l 展示如何提高你的个体过程的经验。
l 持续提高你工作的生产性、性能和可预期能力的数据。
什么是个体软件过程(PSP):
个体软件过程(PSP)是一个为了开发软件或者执行任何其它定义活动的个体过程。个体软件过程(PSP)包括:
l 定义步骤
l 表单
l 标准
它提供了用来发现和管理你工作的测量和分析框架。
它也是一个定义的过程来帮助你提高你的个人能力。
个体软件过程(PSP)过程流:
由脚本(Scripts)来支持过程。
过程包括:计划(Planning)->设计(Design)->代码(Code)->编译(Compile)->测试(Test)->项目管理(PM)
过程的输入为需求(Requirements)。过程的输出为最终产品(Finished Product)。
过程还要产生日志(Logs)和项目总结(Project Summary)。
而项目总结(Project Summary)输出项目和过程数据总结报告(Project and Process data summary report)。
个体软件过程:
个体软件过程(PSP)过程是设计来为个体使用。
它是基于向下扩展的个体软件实践。
个体软件过程(PSP)课程演示了使用一个定义和可测量过程的价值。
它帮助你和你的组织了解高质量和长时间开发的软件会遇到的持续增长的破坏。
学习个体软件过程(PSP)-1:
个体软件过程(PSP)基于六个向上兼容的阶段。
你在每个阶段写一个或者更多模块级别的程序。
你总结和分析你工作的数据。
你使用分析的结果来提高你个人的能力。
学习个体软件过程(PSP)-2:
PSP0:Current process、Time recoding、Defect recording、Defect type standard
PSP0.1:Coding standard、Size measurement、Process improvement proposal(PIP)
PSP1:Size estimating、Test report
PSP1.1:Task planning、Schedule planning
PSP2:Code reviews、Design reviews
PSP2.1:Design templates
TSP:Team development
学习个体软件过程(PSP)-3:
PSP0:你将获得一个可测量能力的基线
PSP1:你创造规模、资源和时间表计划
PSP2:你练习检测和领域管理
课程结论:
你将可以练习面向个体能力的软件过程的关键元素。
你将了解那些方法对你来说更有效。
你将做出更加出色的工作。
你将有长期提高的目标。
课程结果:
我们现在有数据显示超过300000个程序是使用个体软件过程编写的。
其他人都在如何在个体软件过程(PSP)过程中提高自己。
l 影响估计
l 编译和测试时间
l 生产性
需要牢记的信息:
个体软件过程(PSP)是定义过程来帮助你更好的工作。
当你完成了课程,你将知道如何让个体软过程(PSP)加入并满足你个人的需要。
你将会获得在一个执行团队软件过程(TSP)团队中工作的知识和技能。
通过PSP0,目标是集中计算和完成你的工作数据。
2007年1月9日
#
作者:Ricktroy (ricktroy@126.com, http://ricktroy.cnblogs.com/ )
问题:表A为部门表,表B为员工表,数据库中存在表C为部门-员工对应关系表(为了阐述问题所以使用部门、员工两种数据实体,实际在设计的情况下可以把这个关系设计在员工表中。项目中遇到的是两种关系特殊,即业务逻辑连接比较脆弱的两个数据实例,这里只是拿部门、员工两种数据实例来举个例子)。
因为是Web应用程序,表C的数据早已经从数据库中取出放在了会话变量中,在经过了长时间的业务操作后,要通过存储在会话变量中的表C中的一条数据检索出表A的一条数据和表B的0~n条数据的组合,要求表B数据为0条的时候,检出数据一条为表B的一条数据。
以上就是我昨天所遇到的一个业务问题,为了减少数据库访问,虽然是两个逻辑关系十分脆弱(脆弱的原因是联系两张表数据的数据不在数据库中,而是在应用程序侧),最后的解决方案是,用会话变量中的数据作为限定条件(Where子句),检出的两张子表用左外连接。左外连接的使用根据问题的最后一条就可以想到,但是两张表却没有明确的连接关系,实际上因为会话变量作为检索条件的原因,两张表检出的数据一定是符合业务要求的,那么我们需要做的就是进行“硬性连接”方法如下:
Select A.*,B.* From (Select *, 1 as Conn From Table1 Where Table1.Var1=[SessionVariable1]) A Left Outer Join
(Select *, 1 as Conn From Table2 Where Table2.Var2=[SessionVariable2]) B On A.Conn = B.Conn
OrderBy A.SortOrd1 ASC,B.SortOrder DESC
黑体的内容就是“硬性连接“的方法。SessionVariable1、SessionVariable2 是联系两张表的会话变量。最后排序的时候要注意OrderBy不能出现于子查询中要写在最外面。
2006年12月20日
#
总结: Ricktroy ( ricktroy@126.com ,
http://ricktroy.cnblogs.com/ )
上午因为IIS故障,在IIS的重新安装上浪费了很多时间。现在总结一下重新安装的方法。
故障发生原因: .NET Web 应用程序多次调试后系统冷启动(未保存系统数据)
故障错误消息:错误1392,内容为“文件或目无法访问或读取”
解决方法:
1、网络上的一般解决方法:
To resolve this problem, you must correctly register the Msxml3.dll file. To register the Msxml3.dll file, click Start, click Run,type regsvr32 Msxml3.dll, and then click OK.
2、检查COM+服务是否正常,如不正常恢复COM+服务。
如果以上都不成功,请重新安装IIS,但是并不能通过简单的在Windows组件添加/删除中进行删除后重新安装。正确的重新安装步骤如下:
1、在Windows组件列表中取消Internet Information System的勾选,进行IIS的卸载。
2、重新启动系统,进入安全模式,删除以下目录:
%System_Root%\Windows\iis6.log
%System_Root%\Windows\\System32\inerserv
%System_Root%\inetpub
3、重新启动系统(正常状态),在Windows组件中勾选IIS进行组件安装,可解决故障。
2006年11月23日
#
摘要: 1PartialClass_Default2InheritsSystem.Web.UI.Page34''Label1isinsideUpdatePanel.5''Button1isinsideUpdatePanel.67''TextBox1isoutsideUpdatePanel.8''Button2isoutsideUpdatePanel.910ProtectedSubButton1_Click...
阅读全文
2006年10月30日
#
摘要: 使用ASP.NET AJAX扩展改善现有应用程序简介ASP.NET Web页面提供了基于用户页面操作的从客户端到服务器端的回发机制。当服务器渲染回发后页面的新版本的时候,它经常重新渲染在前后两次回发之间没有设么变化的用户界面。这样用户就不能从实际出发选择那些真正改变的用户界面去进行渲染。 此教程将向你战线的是Microsoft ASP.NET 2.0 AJAX扩展如何通过创建AJAX风格的交互We...
阅读全文
2006年10月28日
#
摘要: 安装ASP.NET AJAX简介本主题描述如何安装ASP.NET AJAX Beta测试版本并且可选择安装ASP.NET AJAX社区技术预览(CTP)发布版本,还有ASP.NET AJAX控件工具集(ASP.NET AJAX Control Toolkit)。ASP.NET AJAX让你有能力创建局部页面更新的动态Web页面。ASP.NET AJAXASP.NET AJAX包括Microsoft...
阅读全文
2006年10月25日
#
摘要: ASP.NET AJAX 概述简介ASP.NET AJAX让你能发挥出浏览器中Web应用程序处理最出色的一面,而不需要去跟服务器端交互来更新页面。ASP.NET AJAX开发集成了ECMAScript (JavaScript)客户端脚本库和ASP.NET 2.0基于服务器端的开发平台。 ASP.NET AJAX依赖于AJAX策略来创建Web应用程序,这样就能使你通过客户端脚本向基于Web的应用程序...
阅读全文
2006年10月23日
#
摘要: ASP.NET AJAX 路线图简介Microsoft ASP.NET AJAX 文档包括概述、教学、样例和API参考等主题。我们建议从如下文档帮助你开始学习。 新的ASP.NET AJAX开发人员 将想从阅读如下主题来了解如何使用ASP.NET AJAX特性来增加AJAX功能到ASP.NET Web页面的背景知识。 Asynchronous Communication La...
阅读全文