kissIT!: 快速敏捷开发,SQL、C# & VB.NET 混合开发实践指南





0/5 (0投票)
软件开发过程可能耗时且压力大。本文将介绍一些实用技巧,指导如何在 SQL、C# 和 VB.NET 的原型设计/敏捷方法框架内,通过 kissIT!® 应用程序减轻压力。
引言
作者拥有超过 18 年的 Windows 软件开发经验,从中提炼出了一种实用且高效的工作方法。这种务实的方法,辅以少量试错,似乎与扎实的商科信息系统学位理论背景相结合效果良好。这与 SQL、C# 和 VB.NET 的原型设计/敏捷开发非常契合。
一些关键领域在开发和交付过程中被证明能节省大量时间、精力和减少压力,本文将对此进行详细阐述,并说明 kissIT!® 应用程序如何提供帮助。
更多信息请访问 www.rapidagiledevelopment.com
安装程序
原型设计或采用敏捷开发方法依赖于持续的测试/最终用户(客户)反馈。为此,客户必须能够评估产品的每个迭代。考虑到这一点,对于 Windows 应用程序,产品安装程序应作为最先启动的项目。随着产品复杂性的增加,安装程序的复杂性也可能需要增加,但初期只需最基本的功能。
有人可能会说,只有当有东西可安装时(即成品),才需要安装程序。实际上,安装程序是产品的交付系统,也是给客户的第一印象,因此应将其视为一个独立的开发项目。
是否要生成?
代码生成器(针对 C#、VB.NET 和 SQL)通常承诺一切。有些过于复杂,难以使用,并产生大量未使用的输出,而另一些则生成不足,需要过多的用户输入和配置。如果广告属实,只需将代码生成器指向数据模型并点击构建,就能让客户完全满意。但现实并非如此。kiss!® 的设计宗旨是将核心功能集成到高效、直观的用户界面中。
更多信息请访问 www.rapidagiledevelopment.com
如果使用得当,并且有一个好的代码生成器,代码生成可以非常高效。在项目开始之前,应评估并选择一个代码生成器。应确定项目中适合代码生成的各个部分,并在开发团队内部保持一种观念,即代码生成器是一个开发辅助工具,而不是万能药。
如果代码生成适合项目,请确保构建的数据模型(可以是空数据库)符合所选代码生成器的要求。一些简单的考虑因素包括:
- 确保所有表都有一个系统级别的、自动增量的 ID 列。
- 确保所有表和列的名称不包含空格,并且不是目标编程语言的保留字/关键字。
- 为每列使用正确的数据类型,以最小化记录大小。
- 在命名列时,使用表名作为作用域分隔符,例如
Customer.FullName
而不是Customer.CustomerFullName
。 - 尽量在表中组织列,以便可以生成(如果支持)或手动编写辅助例程。例如,如果具有 ID、Name 和 Description 列的表在相同的顺序下具有(同名的)相同列,则可以轻松编写用于查找等的辅助例程。
- 使用表和字段枚举来按索引或名称访问返回数据集中的数据字段。如果这些生成的枚举保持最新,编程语言编译器将提示您访问已删除/重命名字段的代码。
代码生成器可能擅长生成数千行代码并报告节省了多少工时和美元,但在现实世界中,系统要么是手动编写的,要么是混合编写的(部分生成,部分手动编写)。所选的代码生成器是否允许管理手动编写的代码和/或 SQL?代码生成器是否允许在不被每次迭代覆盖的情况下自定义生成的代码(基类和自定义类)?
kiss!® 旨在帮助进行混合开发。
kiss!® 允许与用户可能已拥有的第三方应用程序集成,或者可以从相关生产商单独购买。
kiss!® 会生成不会被后续覆盖的基类和自定义类,从而允许添加自定义代码。清单类和接口类为每次迭代生成。
kiss!® 可以使用可自定义的模板,以原生 C#、VB.NET 和 SQL 语法生成以下输出:
- 基类
- 自定义类(允许在下次生成周期中不被覆盖的情况下手动更改部分类)
- 业务逻辑层 (BLL, BLO)
- 转换类(VO -> TO;TO -> VO)
- 数据访问层 (DAL, DAO)
- 域对象 (DO)
- 域对象管理器 (MO)
- 字段枚举
- 表枚举
- 传输对象 (TO)
- 值对象 (VO),也称为数据传输对象 (DTO)
- 接口
- Web 服务 (WS)
AdventureWorks HumanResources.Department 表的示例生成类
数据库脚本
有了安装程序,在每次开发回合后很容易向客户展示已完成的工作。如果应用程序有数据库,数据库也需要安装和打补丁。安装和打补丁数据库是原型设计的重要组成部分,因为产品在现场安装后维护客户数据至关重要。
使用 SQL 脚本从头开始创建数据库是早期识别 SQL 执行问题(即在部署之前)的好方法,尤其是在团队环境中,开发人员可能会“扔 SQL 脚本”,而不测试 SQL 的执行。将数据库对象(表、视图、存储过程)保存在自己的文件中(每对象一文件)可以简化维护,特别是当 SQL 脚本文件名反映数据库对象名称时。独立文件(而不是单个庞大的 SQL 脚本)也允许多个开发人员处理数据库对象,而不必等待庞大的 SQL 脚本在版本控制中签入/解锁。
脚本化数据库也是添加测试数据的绝佳方式。为了在原型迭代中获得最佳效果,数据库应从头开始使用 SQL 脚本创建,然后用测试数据填充,最后应用引用完整性。养成这种习惯可以在开发过程中暴露问题,而这些问题通常只会在安装过程中被发现。
SQL 脚本应与编程语言源代码一样受到相同的管理和源代码控制。
kiss!®、concatSQL!® 和 SQLscriptIT!® 都旨在帮助进行 SQL 脚本生成、管理、SQL 执行和 SQL 测试。
更多信息请访问 www.rapidagiledevelopment.com
交付应用程序
敏捷方法要求产品迭代需要快速交付给测试。交付过程的一部分是安全性:强命名和代码签名 .NET 程序集。这可以通过使用 signIT! 来实现。signIT! 是一个 GUI,用于以迭代方式使用相关的 Windows SDK 和 .NET Framework 可执行文件。配置会被保留,以节省此交付过程部分的时间和精力。
功能蔓延
功能蔓延是坏事吗?只有当客户无法承担开发成本时!
在原型迭代期间,客户无疑会看到他们的想法在他们面前成形,并根据系统到目前为止的功能形成新的想法。如果没有固定的规格,这可能会导致时间和成本超支。这是可管理的,并且通常会导致更好的产品,前提是客户能够承受时间和成本要求。
摘要
有许多关于原型设计/敏捷软件开发的书籍提供广泛的建议。在开发环境中维护复杂实践是困难的,因此实践和程序越简单,效果就越好。如果原型设计对您或您的组织来说并不陌生,那么您很可能已经有了自己的工作方法。如果需要,可以尝试评估/改进/提炼出要点,并专注于确保这些要点定期完成。
此处列出的几项绝非详尽无遗,但应被视为每个原型迭代中除了满足客户需求的定制工作之外需要完成的任务。
打个比方,锻炼并非完成一项耗时冗长的锻炼(瀑布模型分析)最重要,而是定期完成最少量的锻炼(原型迭代)才最重要。
为了辅助原型设计过程,定义几个关键步骤,其中一些必须为每次迭代重复,开始并享受这段旅程。
- 评估并选择安装程序软件,并开始安装程序项目开发(每个项目一次)。
- 评估并选择代码生成软件(每个项目一次)。
- 设置数据库数据模型(并将其脚本化为 SQL),遵守代码生成器施加的约束(每次应用数据模型更改请求时)。
- 定期(每次应用数据模型更改请求时)使用 SQL 脚本创建数据模型数据库和测试数据库,包括测试数据。
- 生成 SQL C.R.U.D. 存储过程、数据访问层、业务逻辑层、表和字段枚举以及 Web 服务(每次应用数据模型更改请求时)。
- 定期向客户演示产品。
- 评估并克服瓶颈问题。
- 管理功能蔓延,因为客户会看到可能实现的功能。
- 重复并享受这个过程!
感谢您的时间。
更多信息请访问 www.rapidagiledevelopment.com