基于C#的结对编程的分析和设计

时间:2022-08-23 10:42:01

基于C#的结对编程的分析和设计

摘要:编程对每个计算机从事者来说都是不可或缺的,程序员们往往需要通过合作来完成一个规模较大的项目。如何高效的完成团队任务就成为亟待解决的现实问题。基于此种情况,提出了结对编程的分析与设计方案。在Visual Studio 8.0的平台上,设定倒计时功能,于规定的时间对导航者和驾驶者进行角色互换。这样既可以提高双方的编程效率,也可以改进代码的质量,同时还能够培养程序员之间的团队精神。

关键词:结对编程;相容性;设备号;角色;团队合作

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)10-2270-02

The Analysis and Design of Pair Programming Based on c#

YIN Jing

(Computer College, Nanjing Normal University, Nanjing 210046, China)

Abstract: Computer programming is essential to every computer pursuer. Programmers usually accomplish a large-scale project by cooperation. It becomes an urgent matter how to complete a team task efficiently. The analysis and design of pair programming is raised in this condition. In the development platform of Visual Studio 8.0, the countdown function is set up. And the system will exchange the roles of navigator and driver within the set time. In this case, not only the programming efficiency is improved but also the quality of code is advanced. Meanwhile, it develops the team spirit of programmers.

Key words: pair programming; compatibility; device number; role; teamwork

在传统的模式下,程序员独立编写各自的程序模块。长时间的工作让程序员被疲劳,厌烦等不利因素所困扰。一旦产生瓶颈,就会延迟工作并降低程序员编程的信心,不利于培养程序员的编程兴趣。此外,传统模式下,程序员们也很少交流,团队意识较弱。

相反的,结对编程由于有了双方的合作,同一段代码被反复检查,保障了代码的可读性和可维护性,减少了修改的成本。结对编程时,由于对方的监督,带给编程者潜意识的压力,让编程者不得不思想高度集中,这就提高了编程的效率。两人合作时可能对问题产生不同的看法,这就迫使程序员频繁的交流意见,加深了彼此对问题的了解。最终还会增强程序员的信心感和成就感。

该文的目的就在于为程序员提供这样一个高效的编程平台。下面将从总体架构设计,主要模块和设计方案等三个方面具体阐述结对编程的设计思想。

1总体架构设计

采用Visual Studio 8.0以及SQL SERVER 2005实现结对编程的主要功能。整体的架构则可以从硬件和软件两个方面来描述。

从硬件的角度来看,需要准备一台电脑,两个鼠标,两个键盘,两个显示器以及一个共享器。两个显示器可以通过共享器连接同一台电脑上,以方便程序员同步地接受程序编写的进度。主机上还需配套两人份的鼠标和键盘,这样程序员就可以单独地对程序进行编写和修改。

如果从软件的角度考虑,可以按照用户操作的顺序来划分。首先是程序员的身份验证。在程序员输入用户名和密码后,系统通过与数据库中信息的比对来判断是否为会员用户。此处登录成功是指结对编程双方的登录信息都为正确,否则,视为登录失败。

与之相配套的是注册界面,和其他注册不同,注册界面提供了一个新的内容:从题库中随机地抽取固定数量的选择题,规定为必做项目。程序员完成后提交给系统,系统算出程序员的得分,满分为一百分。系统根据程序员的得分划分等级。结对双方在登录之后,系统自动调用数据库中所存等级进行相容性分析,大致判断是否适合合作,并给出建议。程序员点击按钮开始编程,系统就进入倒计时状态,规定时间到达后强制交换角色。程序员也可以主动提出交换请求。

2主要模块

2.1相容性分析

两个程序员合作之前,需要了解双方的编程风格,编程能力和性格倾向。如果性格都是内向,就可以初步断定为不适合合作编程,这就是所谓的相容性分析。为了保证结对编程的效率,在开始编程之前,系统给出结对双方相容性测试结果,让双方了解是否 适合结对,以避免程序编写效率的低下。

注册中提供的相容性分析问卷还包含程序员要完成的项目的难度,这也是决定相容性分析结果的重要因素。一般来说,项目难度较高时,适合两个编程能力都突出的程序员合作完成,这种搭配可以提高双方效率。中等难度的项目可以让一个能力较强和一个能力中等的合作,这样可以提高能力中等的程序员的水平。如果项目简单,可以让能力都一般的合作,完成任务的同时积累双方的编程经验。

2.2角色转换

当负责键入代码的驾驶者在编程时出现低级的错误或自己并未察觉的方向性的偏差时,监看的导航员可以点击角色转换,纠正错误,写入正确的代码。此外,若驾驶者工作时间过长,可能会出现过度思考并影响观察力和判断力。若驾驶者有意转换,就可点击角色转换按钮,让领航员接手编程的任务。

2.3强制转换

由于每个人每天的有效工作时间只有3-4个小时,因此在结对编程中需要强调的一点是限制程序员的工作时间。系统给定固定的时间,程序员们也可以根据自己的需求在系统设置中修改这个时间。程序员在编程时,系统将处于后台运行状态,只留下悬浮窗供程序员了解剩余时间。在系统强制转换之前,会给出提示,若程序员不同意,系统将在5分钟之后再给出提示。

3设计方案

3.1登录和注册

事先在SQL SERVER 2005中建立名为pair的表,用于存放注册信息。在Visual Studio 8.0操作平台上,调用using System.Data. SqlClient命名空间,建立与数据库的连接,并对数据库进行读写操作。注册模块中,拖动textbox等控件以便让程序员填写用户名,密码以及相容性分析的问卷题目。下面是部分代码:

SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;

Integrated Security=SSPI;database=pairs");

SqlCommand cmd = new SqlCommand("select * from m", conn);

conn.Open();

try{SqlDataReader dataReader = cmd.ExecuteReader();

while (dataReader.Read())

{

string str5 = (string)dataReader[0];

string str6 = (string)dataReader[1];

int n= (int)dataReader[2];

if(str1==str5.Trim()&&str2==str6.Trim())count++;

if(str3==str5.Trim()&&str4==str6.Trim())count++;

}

if (count == 2 ){ Index f = new Index(); f.uname = str1;f.pwd = str3;}

3.2鼠标和键盘的切换

结对编程最为核心的设计就是设备的启动和禁用。程序员通过主动交换或强制交换两种方式转换角色。转换之后,导航者的鼠标和键盘被禁用,驾驶者的变为有效状态。对设备的操作需要使用到微软所提供的与驱动程序相关的API函数,这些需要使用的函数就封装在Hardware类中。使用[DllImport("user32.dll", CharSet = CharSet.Auto)]语句,用非托管动态链接库作为静态入口点公开。设备禁用的实现思想主要是通过managementobjectsearcher类查找微软提供的设备类并获得所要禁用的鼠标或键盘的设备名称,获取控件绑定到的窗口句柄,并清理非托管的资源。最后将设备的状态置为false。部分代码如下:

using System.Runtime.InteropServices; using Hardware;

HardwareClass hc = new HardwareClass();

ManagementObjectSearcher searcher = new ManagementObjectSearcher

("select * from Win32_usbcontroller");

foreach (ManagementObject share in searcher.Get())

{string[] dev = new string[1];

dev[0] = share["name"].ToString();

hc.SetState(dev, false);

hc.Dispose(Handle);}

4存在的问题及可能的方向

结对编程技术能够为两个程序员提供合作编程的平台,保证代码的高质量,增强程序员对于编程的兴趣。但是,由于程序员并不是总能方便的约好时间和地点一起编程的,这就导致了空间和时间上的局限性。

现代的网络通信技术较为发达,异地结对编程不失为一个很好的发展方向。程序员们不需要并排坐在一起使用同一台电脑,而是借助互联网在距离较远的电脑之间远程通信。面对面的交流也可以通过视频,语音,白板等方式来替代。使用异地结对编程,程序员不用出门到指定的地点也能够远程地结对编程。

参考文献:

[1]窦万峰.软件工程方法与实践[M].北京:机械工业出版社,2009.

[2] Laurie Williams Robert Kessler.结对编程技术[M].杨涛,译.北京:机械工业出版社,2009.

[3]洪奎,窦万峰.一种分布式网络环境下虚拟结对编程的设计方案[J].南京师范大学学报, 2010(1).

上一篇:基于物联网技术木材物流园系统的设计与实现 下一篇:试论软件项目管理中的需求管理