| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1419 人关注过本帖
标题:[求助]团队如何开发
只看楼主 加入收藏
zh520
Rank: 1
等 级:禁止发言
帖 子:58
专家分:0
注 册:2007-8-24
收藏
 问题点数:0 回复次数:8 
[求助]团队如何开发
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 团队 开发 个类 员工 
2007-12-13 23:55
垃圾的沉默
Rank: 1
等 级:新手上路
威 望:2
帖 子:511
专家分:0
注 册:2007-6-25
收藏
得分:0 
各行其职..相互协调沟通.. 如果你明白了..团队开发的精神你也掌握了

人们笑我太疯癫...我笑人们太正经
2007-12-14 12:15
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
典型的分工协作团队可控制在3-4人以内。
以三层构架作为团队开发模式,
以明确各层的分工。
一般让一到两个人负责一层(如果项目并不大的话),
分工不以页面来分,而是以层来分。
用一个《留言本》作例,
所有人员必须对留言本需求有一个明确共识,
也就是说都知道要干什么,也即客户要求得到什么。

■ 数据访问层
若数据库选择 SQL Server 或 Oracle,支持存储过程,
则可分配一名数据库设计师专门设计数据库表及存储过程。
一切与数据库相关的工作交由数据库设计师负责,
该数据库设计师可以一行 C# 的代码都不用写,
甚至他连 C# 是什么都不知道也是可以。
若采用 Access,需要由一位熟悉编程的人来封装所有SQL查询语句。
若要同时支持 Access/SQL Server/Oracle 等数据库,
可为每种数据库分别编写访问的封装类,
使用接口进行统一调用接口。

例程:
SQL Server 支持存储过程,其数据访问类仅需要提供一个简单的存储过程调用的封装类即可(该类是可重用的)。
Access 因为需要将语句直接给出,所以无法做到SQL代码与程序代码分离,需要一个既懂数据库编程及C#编程的人来封装(或者分配一个数据库设计师与其合作)。

namespace DAL
{
    //接口用于统一调用。
    public interface ILeave
    {
        //实现所需要的接口,例如:
    void Add(Leave lv);
        bool Remove(Guid id);

        //实际中可能提供更多复杂的操作。若.NET已提供的接口符合要求可直接使用。
    //例如:ICollection 接口
    }
    //静态即可,每个访问封装类均实现 ILeave 接口
    public static class SQLProvider : ILeave
    {
        private DataTable Execute(....)  //封装执行存储过程的方法。
        public void Add(string name, string content, string ip ...)
        {
                Execute("Leave_Add",....); //调用存储过程
        }
    }

    public static class AccessProvider : ILeave
    {
        //Access 的数据访问程序虽然与SQL的不同,
    //但是接口依然是一样的,仅是实现方式不同。
        public void Add(string name, string content, string ip ...)
        {
            string connStr=".....";
            OleDbConnection conn = new OleDbConnection(......);
            conn.Open();
            ....... // 执行一些 SQL 语句
    }
    }

    public static class OracleProvider : ILeave
    {
        
    }
}

一般喜欢使用工厂设计模式来实现数据相关对象(如:Connection)的创建,
至于到底是否使用工厂来创建可自行选择。
PetShop 4.0 里还使用了动态添加程序集的能力,
将各个数据访问类分别编译为 DLL,
通过配置使用指定的程序集。
这样提供更彻底的封装技术,有兴趣可去参考一下。

因为每层仅需要对其上一层负责,
而向上一层提供当前层的设计信息是必须的(使用数据字典,在开始工作前就应该计划制定好这份信息文件,因为其上一层的设计依赖该文件)。
所以数据访问层只需要提供所有存储过程的调用详细方法(如果使用支持存储过程的数据库),
包括存储过程名、参数、所期望的结果。
例如:
--------------------------------------
存储过程名 参数    说明
leave_Add   ....            .......
................
--------------------------------------

封装类的说明
--------------------------------------
统一接口: ILeave
方法与属性列表及其说明罗列在此

其他类:
类名:SQLProvider(静态): ILeave
属性列表(不用包含基类的属性信息):
.............(罗列于此)
方法列表(不用包含基类的方法信息):
..............(罗列于此)
--------------------------------------

■ 业务逻辑层

业务逻辑主要职务在于功能抽象,向数据访问层请求数据并向界面层提供数据,
其实说白了就是调用数据库层封装的类。
有了数据访问层的封装,
可使业务逻辑层避免与数据库“短兵相见”。
在业务逻辑层仅使用接口,它的好处是只要接口不变,
不管使用的是哪个数据访问层封装类(如 OracleProvider 或 AccessProvider 或 SQLProvider),业务逻辑层不变,当需要修改数据访问层的类时,
业务逻辑层的代码不受影响。

例如:
根据数据访问层所提供的数据字典及设计信息,
得到这份信息文件后,业务逻辑层的程序员可以开工了。
public class Leave : ICollection
{
     public void Add(Leave id)
    {
        //可使用工厂模式进行更好的封装。
        ILeave leave = new SQLProvider(); //到底要创建的是 SQLProvider 还是 AccessProvider
       //最好由外部指定,例如在 Web.config 文件里指定。
   //因为使用了 ILeave 接口,所以无论创建的是哪种 Provider,要添加一个内容,下面的
   // 这句代码是不变的:
   leave.Add(......);
    }
}

业务逻辑层也需要通过数据字典及设计信息向上一层(界面层)提供一些设计基础,
业务逻辑层主要提供已编写的类的信息,例如 Leave 类,有什么方法和属性,
及各个方法与属性的使用说明。

■ 界面层

若要各层尽可能快地开始工作,
项目的设计需要非常合理,
以及各层所依赖的数据字典或信息文件需要事先就制定好,
只要设计好这些数据字典或信息文件,
各层都可以同时开工。

界面层可由界面设计者与美工协作共同完成,
主要设计留言本的 aspx 页面、HTML、JavaScript及CSS等。

界面层只允许调用业务逻辑层包装的类,
例如要添加一条留言,可以这样:

Leave lv = new Leave();
lv.Add(.....)

[[italic] 本帖最后由 ChenMo 于 2007-12-14 13:00 编辑 [/italic]]

欢迎加入 MVC 技术讨论群(新群:90093426)
2007-12-14 12:57
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
每次开始新项目时,业务逻辑的程序员都会针对需求和数据访问层提供的设计信息设计出一个一个的类,
如果界面设计师与业务逻辑程序员是同一个人的话,那尚无问题,
因为类是其自己设计的,自然是最清楚,
倘若分别由两名程序员各人负责一层,
那么,每开始一个项目时,界面设计师就显得非常痛苦,
他需要学习使用业务逻辑程序员的类,
要缩短学习的过程,需要使用接口,
接口虽然不提供任何实现,但是它的用处有几个,
第一个好处是统一命名标签。
因为使用某个接口必须实现该接口提供的成员,
.NET 类库中集合性质的类通常都使用接口 ICollection(及其泛型),
ICollection 里有 Add()、Remove() 等成员,
所有实现了该接口的类都提供这些成员的实现,
所以,只要看见某个类实现了 ICollection,
“添加”操作那就是 Add() 了。

第二个好处是降低耦合(即依赖关系),在上述的数据访问层中,
使用接口来统一调用,
而在业务逻辑层仅使用该接口,
这样可使业务逻辑层对数据访问层的依赖降低。
当然也可以使用抽象类——如果明显看得出有继承的相互关系的话。

当然还有另外一些好处。

欢迎加入 MVC 技术讨论群(新群:90093426)
2007-12-14 13:18
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 
楼上的专业

Flying without wings
2007-12-14 23:12
yms123
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
多人开发设计是关键。
明确网站功能
明确网站结构
明确数据库的表
跟据表来设计类
多人开发写注释很重要。
2007-12-14 23:34
zh520
Rank: 1
等 级:禁止发言
帖 子:58
专家分:0
注 册:2007-8-24
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2007-12-15 19:54
yms123
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
理论上讲
多人开发明确各个功能之后
一般将网站的各个功能分为不同的模块。
美工要按照设计好的结构和模块来设计网页
多个程序员,不同模块的衔接一定要设计好。
因为把模块任务分发给不同的程序员后,要事先
想好如何在写完之后把这些模块都整合在一起成为完整的网站。
数据库标准要统一,多人开发不比单人,改变基础设计之前最好项目组要讨论之后作出修改。
2007-12-15 20:03
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
收藏
得分:0 
正在学习中~~!!

我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2007-12-15 20:45
快速回复:[求助]团队如何开发
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055528 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved