posts - 7,  comments - 3,  trackbacks - 0
 

需求

 

应积极主动的同客户进行各种方式的沟通,每次沟通都要有一定得目的性,在沟通时,首先要了解客户所处行业相关领域的基本知识,对该行业或该公司存在的现状,已有的软件产品做到心里有底。以便能更好的同客户沟通,在客户进行描述时,我们能适当的进行引导,改进,给客户一种专业的感觉。有时客户对软件功能实现的提出不是很正确,我们应该通过客户的描述,了解这些功能到底是为了解决什么问题,或是为客户能带来什么效益,我们自己有没有更好的解决方案,能提供给客户进行探讨。有时客户对需求说明不能做到完全的正确,就算能做到完全正确,我们在理解吸收的时候也会产生一定的误解。所以我们有不明白的地方要马上提出来,不能按照自己的想象去理解,有时我们认为自己理解了,结果做出来,跟客户想象的完全不同,要按照自己的理解整理客户的需求,对产品的实现及需求都要提供有效的建议,再让客户进行确认。在经过几次反复之后会得到一个相对稳定的需求。把所有的需求,沟通交流的结果要用文档的方式保存下来,做到需求文档的管理,后期需求的变更,用邮件方式通知相关人员。

 

设计

 

制订开发规范,包括文档的规范,数据库设计规范,编码规范以及各种命名规则。对系统整个架构分析和做技术规划,根据代码重用,需求变更,功能扩展进行软件架构设计。运用UML建模工具,设计出业务流程图,组件图,类图,顺序图,状态图等。用ERWIN等数据库建模工具进行数据库建模。充分考虑到用户的操作习惯,方便用户使用为原则进行界面设计。设计时需要及时的沟通,包括与客户的反馈,与其他项目组成员的讨论。

 

编码

 

明确分工,数据层、逻辑层、界面层,以及界面的各个功能分工,都需要责任到人。根据编码规范以及命名规则编写代码,并且所有类和函数甚至变量都有关键的注释说明,以便日后维护。重用或开发公共类库,把优先级高的一些功能完成后,做出一个演示版给客户,让客户尽量早的发现正在开发的项目和用户想要的结果的之间的偏离和差距,以便尽早的做出调整,然后再慢慢把软件完善起来。

 

测试

 

在了解需求的前提下,进行软件测试,加强测试人员和开发人员之间的沟通。尽量使用真实数据,测试的结果,所描述的问题要保存成文档。

 

开发进度

 

对各个阶段的工作结果进行审核。通过早会,周会以及每天的日报,跟踪项目的进展情况,判断实际的进度是否与计划出现偏差。

 

Bug管理

 

要有具体的文档,包括哪个项目,哪个模块,bug是怎么产生的,哪个人产生的,以便用来做统计分析,防止再有类似情况发生。

 

项目后总结

 

项目总结报告,总结分析整个项目开发期间出现的问题以及产生问题的原因和解决的方法,成功的经验,为以后的项目的开发提供借鉴。并整理项目信息资料入档

posted @ 2010-02-23 08:33 老虎爱吃鱼 阅读(20) 评论(0) 编辑

 

代码
[DllImport("user32.dll", EntryPoint = "GetWindowLong")]
public static extern long GetWindowLong(IntPtr hwnd, int nIndex);
[DllImport(
"user32.dll", EntryPoint = "SetWindowLong")]
public static extern long SetWindowLong(IntPtr hwnd, int nIndex, long dwNewLong);
[DllImport(
"user32", EntryPoint = "SetLayeredWindowAttributes")]
private static extern int SetLayeredWindowAttributes(IntPtr Handle, int crKey, byte bAlpha, int dwFlags);
const int GWL_EXSTYLE = -20;
const int WS_EX_TRANSPARENT = 0x20;
const int WS_EX_LAYERED = 0x80000;
const int LWA_ALPHA = 2


SetWindowLong(
this.Handle, GWL_EXSTYLE, GetWindowLong(this.Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT | WS_EX_LAYERED);
SetLayeredWindowAttributes(
this.Handle, 0128, LWA_ALPHA);  

 

 

posted @ 2010-01-14 19:56 老虎爱吃鱼 阅读(17) 评论(0) 编辑
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace Key
{
    
class Hook
    
{
        
public delegate int HookKeyProc(int code, IntPtr wParam, IntPtr lParam);
        
private HookKeyProc hookKeyDeleg;

        
private static int hHookKey = 0;
        
public Hook()
        
{ }
        
public methods

        
protected and private methods

        
P/Invoke declarations

    }

}

应用时,可以将这个类添加到自己的项目中,在要用的地方直接调用,方法如下:

Hook hk=new Hook();
hk.Start();
hk.Stop();

http://www.devdiv.net/viewthread.php?tid=15006&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D25
posted @ 2009-09-22 09:21 老虎爱吃鱼 阅读(98) 评论(0) 编辑
[DllImport("coredll.dll", EntryPoint = "BitBlt")]
        
extern public static bool BitBlt(
                                    IntPtr hdcDest, 
// 目标 DC的句柄 
                                    int nXDest,
                                    
int nYDest,
                                    
int nWidth,
                                    
int nHeight,
                                    IntPtr hdcSrc, 
// 源DC的句柄 
                                    int nXSrc,
                                    
int nYSrc,
                                    RasterOperation dwRop 
// 光栅的处理数值 
        );
[DllImport(
"coredll.dll", EntryPoint = "GetDC")]
        
public static extern IntPtr GetDC(IntPtr hwnd);
//截取屏幕图像
        public static Image GetScreenShot()
        
{
            
try
            
{
                IntPtr srcHdc 
= GetDC(IntPtr.Zero);
                Rectangle rect 
= System.Windows.Forms.Screen.PrimaryScreen.Bounds;
                Bitmap image 
= new Bitmap(rect.Width, rect.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                
using (Graphics graphics = Graphics.FromImage(image))
                
{
                    IntPtr dstHdc 
= graphics.GetHdc();
                    BitBlt(dstHdc, 
00, image.Width, image.Height, srcHdc, 0,00x00CC0020);
                    graphics.ReleaseHdc(dstHdc);
                    
return image;
                }

            }

            
catch (System.Exception e)
            
{
                MessageBox.Show(e.Message, 
"GetScreenShot Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                
return null;
            }

        }
转自
http://www.devdiv.net/viewthread.php?tid=12128&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D25
posted @ 2009-09-04 16:33 老虎爱吃鱼 阅读(277) 评论(3) 编辑
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        
{
            
if (e.Button == MouseButtons.Right)
            
{
                
if (e.RowIndex >= 0)
                
{
                    dataGridView1.ClearSelection();
                    dataGridView1.Rows[e.RowIndex].Selected 
= true;
                    dataGridView1.CurrentCell 
= dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                    contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
                }

            }

        }
posted @ 2009-08-11 16:28 老虎爱吃鱼 阅读(659) 评论(0) 编辑
摘要: 在VS 2005中设置和读取配置文件已经变的很简单了,而且是强类型的,读取的值可以直接赋值给相应的变量,无需强制转换。 例如:DateTime userDateTime1 = Properties.Settings.Default.userDateTime1; 真是方便了很多。但是你有没有发现,使用 Properties.Settings.Default.Save() 保存了设置后,Applica...阅读全文
posted @ 2009-08-05 23:26 老虎爱吃鱼 阅读(159) 评论(0) 编辑
摘要: [代码]阅读全文
posted @ 2009-08-05 23:19 老虎爱吃鱼 阅读(41) 评论(0) 编辑
昵称:老虎爱吃鱼
园龄:2年6个月
粉丝:1
关注:0

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜

推荐排行榜