sql 编写技巧_编写成功的软件即服务的十大技巧

作为在线服务而不是基于桌面的应用程序提供的软件,正以指数级的速度持续增长。 我参与了许多围绕SaaS的业务。 在那段时间里,我收集了10个特定于软件开发的关键要素,这些要素可以确定SaaS应用程序是否成功以及(在许多情况下)它是否可以发布。 这些技巧旨在为基于SaaS的开发提供启发性的观点。

1.使UXD成为您最有价值的资产

随着Internet的出现,对用户体验的关注逐渐消失。 但是,近年来,对于成功软件的这一重要特征已经有了明显而明显的回击。 当Web 2.0一词成为流行语时,就标志着这种回报,最终演变成更有意义的东西:富Internet应用程序(RIA)。 我故意将用户体验设计(UXD)放在本文的第一位,因为用户体验是一个可识别的特征,它立即导致计算机用户选择一个应用程序而不是另一个。

图1图2演示了两种有趣的UXD技术。 图1说明了称为停留在页面上的概念。 由于这是使用Adobe®Flex构建的瘦RIA客户端应用程序,因此显然没有页面。 但是,该技术仍然有效。 用例场景是想要更改其个人帐户设置的用户。 而不是离开应用程序的当前状态(或页面 ),而是显示一个覆盖窗口,该窗口允许用户进行必要的更改,然后关闭该窗口并返回手头的任务。

图1. UXD技术示例,称为停留在页面上
图1展示了一种称为停留在页面上的概念

图2显示了图1所示窗口的更近视图,但是处于两种模式。 此用例更为具体,因为假定用户要专门更改“ 公司信息”值,因此选择相应的标题栏。 窗口1在第一次显示时显示窗口的状态。 窗口2显示了用户单击“ 公司信息”栏后的窗口状态。 这种技术被称为手风琴菜单,是因为在选择其各自的标题栏时面板像手风琴一样上下滑动的方式。 此行为增强了用户体验,因为当必须对许多设置进行分类时,它使用户可以轻松快捷地定位和更新一个或多个值。

图2.手风琴面板
图2显示了图1所示窗口的更近视图,但是处于两种模式

2.适应不断变化的需求

如果软件开发不可避免,那就是客户,客户或产品所有者将在完成所有设计,规划,图表和原型制作后更改项目需求。 大多数项目经理都接受过传统方法的培训,其中一部分培训包括对变革的抵制; 结果是,产品越接近其首次正式发布,危险的“颠簸”水平就会越来越高。

软件开发的发展如此之快,以至于在整个初始开发过程的整个生命周期中,发现核心项目管理方法论都发生了多次变化。 结果,准备在每个项目中实施新的开发方法或现有方法的变体 。

3.采用开放标准

基于SaaS的公司必须考虑采用开放标准,因为与其他设备,平台,服务和Web应用程序的兼容性会导致在将来的迭代中减少编码,并增加消费者对产品的采用。 消费者赞赏并倾向于SaaS应用程序,该应用程序使他们可以完成多项任务。 例如,图3显示了TweetDeck,这是一个跨平台的应用程序,它在一个界面中使用Twitter和Facebook开放的API。 TweetDeckSwift成为最受欢迎的Twitter客户端之一,主要是因为Twitter用户还可以查看其Facebook朋友的状态更新,而无需切换应用程序。

图3.流行的TweetDeck应用程序使用Twitter和Facebook的开放API
图3显示了TweetDeck,这是一个跨平台应用程序,它在一个界面中使用Twitter和Facebook开放的API。

使用基于开放标准的工具,可以大大降低企业的财务成本,因为消除了许可费用,并且资源成本降低了,因为您的起点要比从头开始时要高。 然后,您可以分配资源来修改源代码,以满足业务需求和挑战。 例如,TweetDeck的制造商可以专注于在应用程序中构建用户体验功能,而不必使用繁琐的Twitter和Facebook API。

考虑一下:如果Twitter和Facebook收取费用以使用其API会发生什么? TweetDeck可能必须向消费者收取每月的使用费,以便该公司可以向Twitter和Facebook支付使用其API的费用。 否则,用户仅使用TweetDeck应用程序就必须向Twitter和Facebook每月支付费用。 对TweetDeck,Twitter和Facebook的最终影响将是有害的,并且TweetDeck不再被视为成功的SaaS应用程序。

4.设计前的线框

线框只是从功能的角度对软件程序UI的特定状态进行的概念性可视化,如图4所示。请注意,不涉及任何精美的设计。 目的是避免被设计元素分散注意力,以便将重点放在业务功能上。 一旦建立了应用程序的业务功能,设计团队便可以使用它。 但是软件必须先运行,然后才能漂亮。

图4.线框提供UI的概念性可视化
图4显示了线框

这一方面与成功的SaaS的第一个要素UXD紧密相关。 区别在于,要使SaaS取得成功,UXD必须成为从概念到生产的整个软件开发生命周期的一部分。 在线框图方面,我一直发现两个导致SaaS达不到标准的错误:

  • 团队跳入设计的步伐太快了,创建应用程序的设计主题突然变成了线框图的一部分,因为涉众希望看到的东西看起来很漂亮而不是功能。
  • 线框集合中缺少应用程序的关键状态(也就是说,只有部分应用程序被线框化)。

有趣的是,这两个原因中的第二个最不利于SaaS项目。 线框最令人着迷的是,您可以依靠它们来消除对产品要求的了解。 众所周知,它们可以在开发开始之前就充分揭示核心体系结构设计的缺陷。 考虑到这一点,不难想象,确保完成线框图制作流程可以节省大量时间和资源的业务。

完整的线框集可能包含100个或更多文档。 每个线框都应至少与一到两页的描述相关联,以帮助利益相关者了解他们在查看线框时正在查看的内容。 请记住,在利益相关者签署之前,需要对这些线框进行修改。 与在对功能进行编码之后,识别线框图期间的差异更好。

注意:设计过程完成后,现在定义UI的完整文档集通常被称为图画书。

5.为SaaS提供云基础架构

起初,建议网络基础设施可以制造或破坏SaaS似乎很容易。 但是,Web上的大多数SaaS应用程序都在无法与无法按需扩展的基础架构绑定的足够硬件上运行。 作为开发人员,我们可以访问通常称为基础架构即服务 (IaaS)的自扩展云系统,但是采用这种高级技术的速度却出奇地缓慢。

这种缓慢的吸收主要归因于对这一主题缺乏知识。 例如,Amazon Elastic Compute Cloud(Amazon EC2)可以为运行SaaS应用程序的企业节省大量资金,但是对Amazon Web Services(AWS)基础架构的普遍知识匮乏导致许多人退回到传统系统上,因为他们知道什么。 但是,ISP可用带宽的不断增加是对任何成功的SaaS应用程序都需要自动按需资源扩展方面更高的网络性能的保证。

6.开始编写代码之前,请提供完整的设计文档

软件的工作方式与企业相同,成功的SaaS公司的主要特征是对开发过程的规划阶段的良好尊重。 高质量的设计文档可作为负责执行设计的人员的路线图,并有可能极大地加速软件的编码。 因此,成功的SaaS应用程序通常是按时完成且预算不足的项目。

当SaaS应用程序超出时间和超出预算时,是因为项目的架构设计原则沟通不畅。 为了在整个大型SaaS应用程序中保持代码一致性,至关重要的一点是,要建立一整套适用的设计模式和约定,并在整个开发团队中有效地进行沟通。 传达这些原理的绝佳方法是使用视觉皮层。

使用视觉皮层

过去100年来进行的有关人类思维和学习的临床研究数量惊人,这表明,当五种感官中的一种以上参与学习过程时,人类的学习速度就会更快。 除了听觉之外,还可以通过参与视觉感来记住主题。 因此,就技术软件文档而言,诸如图表和流程图之类的视觉提示如此有效也就不足为奇了。

如图5所示,软件体系结构和微体系结构图对于为RIA客户端建立和交流基础很有用,并为开发团队提供了组织代码时要遵循的纲要。 这些图还从结构的角度建立了一套准则和期望。

图5.程序的结构设计模式的宽松高级视图
图5显示了描绘建筑设计的图

流程图对于传达过程或一系列事件也特别有用。 在许多情况下,您越有创意,流程图就越有效。 图6演示了如何将创意实现到流程图中,该流程图用于直观地描述开源Swiz Flex框架如何实现控制反转(IoC),对象自省和依赖项注入。

图6. Flex的开源Swiz Framework的流程图
图6显示了Swiz框架图

如果您曾经协助,申请或以其他方式参与过方法专利的创建,那么图7中的图表可能看起来很熟悉。 对于显示一种或多种可能性的过程或方法特别有用。 一个很好的例子就是一个涉及许多功能的过程,其中一些功能包括一个或多个条件,例如if - elseswitch语句。 功能描述图对于概述技术业务流程和软件非常方便。 例如,对于概述将代码提交到公司的中央源代码控制存储库的过程而言,这种类型的图将是最佳的。

图7.功能描述图,用于遍历条件过程或方法
图7显示功能说明图

7.痴迷于单元测试

通常,SaaS领先者通常是由许多人构建的相当大的应用程序。 当涉及大型应用程序和单元测试时,数据是一致的:事后考虑实施单元测试的项目惨遭失败。 相反,成功的SaaS开发人员编写单元测试,甚至在编写代码之前运行它们。 例如,如果我的任务是编写一个名为ServiceController的类,则我不会从对该类进行编码开始。 相反,我将编写针对该类中的方法运行所有单元测试用例的类。 然后,我什至会更进一步并运行测试用例,即使我知道它们将失败,因为我实际上还没有为它编写任何代码。

本练习的目的是排除在单元测试中实际存在错误的可能性,该错误可能导致它们始终通过。 尽管听起来很不寻常,但很容易无意间犯下此错误。 只要所有单元测试都失败,我就知道我准备开始编写实际的代码。 完成新类的编写后,我将再次运行单元测试。 只要所有测试用例都通过,我就将新的单元测试类添加到我的单元测试自动化库中,该类将在每个构建中运行。 换句话说,我为应用程序创建的整个单元测试库成为构建过程的一部分。 实际上,在我什至开始构建项目之前,所有的单元测试都已运行,以确保应用程序代码的完整性不会被无意间破坏。

在编程世界中,我只看到少数开发人员虔诚地实践此过程。 但是,他们是业内最受尊敬,最负盛名和高薪的人之一。 如果您正在寻找获得加薪或晋升的快速途径,请着迷单元测试。

8.处理山脉,而不是丘陵

与从桌面运行的“胖”客户端应用程序相比,SaaS应用程序存在性能瓶颈的可能性要大得多。 即使是资深的程序员也会承认,在涉及SaaS应用程序时,有时由于所涉及的变量数量而导致性能瓶颈难以预测。 成功的SaaS应用程序与失败的SaaS应用程序之间的区别是,开发团队在负载测试和性能分析过程中应对有害的性能损失的方式。

一般而言,只有两种类型的性能优化:对性能有显着影响的优化和似乎根本没有任何显着效果的优化。 很少有介于两者之间的东西。 在这方面常用的隐喻是山脉和田野。 在十分之九的应用程序中,开发人员将大部分时间用于提高性能,重蹈覆辙,而不是解决在应用程序运行时超过计算机处理器或内存寿命的巨大问题。 这里要摘取的重要一点是,作为程序员,当您忙于查看小丘时,看不到山。

防止被小众干扰的最简单方法是分析应用程序。 性能分析是成功的SaaS项目的重要组成部分,因为它使您有机会优化应用程序使用系统资源的方式,如图8所示。对应用程序进行概要分析时,您可以准确地看到应用程序正在使用哪些部分。占用最多的资源并实施设计模式以提高性能。 例如,如果您发现很多对象重新实例化而没有必要的垃圾收集,则可能发现有必要使用代理来实现对象池化,只要您保持应用程序运行,垃圾收集就会连续消耗更多的内存。

图8. Eclipse中的应用程序分析
图8显示了creen截图,描绘了Eclipse中的应用程序分析

9.向其他成功的SaaS项目学习

从其他成功的SaaS项目中学习的最简单方法是从选择您已经喜欢使用的SaaS程序开始。 然后,找到您选择的软件的两个或三个竞争对手,并给他们一个回旋,写下引起您注意并与您喜欢或不喜欢相应应用程序的原因有关的特定事项。

对于应用程序而言,很少会引起我对可用性和性能的关注,因此当它发生时,我一定要花时间找出原因,因为我通常会从中学习一些东西。 任务管理应用程序最近引起了我的注意,主要是因为我发现这种类型的应用程序相当乏味。 但是,与此特定SaaS应用程序相关的可用性水平令人吃惊。

我花了大约两个小时来浏览该应用程序,测试其限制并评估其众多功能的可访问性。 我喜欢内置有大量功能的应用程序,但我希望它们仍然相当轻巧。 因此,我对UI设计很挑剔。 如果界面的组织不当,则具有许多功能的应用程序将成为使用的噩梦,因为无法在一半的时间内找到您要查找的内容。 我对这个特定的SaaS应用程序的评估使我得出结论,与我安装的其他任务管理应用程序相比,这是UI的独特且非常规的组织,使我享受使用它的乐趣。

10.建立可用的原型

如果用于构建原型的相同代码也用于创建最终产品,原型是否仍是原型?

这个问题的答案是绝对的。 在软件开发中,客户通常希望在投资于真实产品的开发之前先看到概念证明。 原型只不过是概念的证明。 聪明的SaaS开发人员可以利用他们提供的时间来创建原型。 考虑一下这段时间内可以完成多少工作:

  • 设计并奠定建筑基础。
  • 通过构建自定义XML DTD创建SaaS数据库模式,并将XML用作原型的数据源。 (以后可以将该架构导入数据库引擎,并在几分钟之内将其转换为真实内容。)
  • 即使文件只声明类名和它最初实现的接口,也要创建完整尺寸的应用程序的组织程序包,接口和类结构。

这种方法有很多优点,但是成功实现SaaS的关键有两个:在构建实际产品时,您将拥有巨大的领先优势,而当产品设计过程中相互冲突的设计模式和设计欠佳的架构通常会显示出丑陋的面Kong。原型建立在它们之上。 然后可以在实际产品开发开始之前进行必要的修改。

结论

重要的是要认识到,软件开发领域发展如此之快,以至于成功进行SaaS开发的关键要素将最终改变-可能早晚改变。 秘诀是与时俱进,使自己处于领先地位。


翻译自: https://www.ibm.com/developerworks/opensource/library/os-cloud-saas/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值