对象(程序、数据库等)的发展特点是不能简单地理解为静态的,而应该不断地维护和进一步发展。简而言之,软件开发不仅涉及静态产品的构建,还涉及其对象的历史化和归档,因为它们可以由其他开发人员进一步开发,因此必须永久地传达程序的状态和结构。从这个方面来看,编程与语言学家的工作有很多共同之处。与语言学一样,编程也是按照一定的标准对文本进行处理和评论。然而,程序员的工作超越了语言学家的工作,因为计算机科学比语言学更彻底地掌握其产品的动态。
语言学家想要“建立”一个历史清单,而程序员则构建一个从一开始就考虑到开发和修订的程序。在评论文学资料或计算机代码时,这种差异最为明显。虽然语言安全确实需要固定,但数字世界中的知识 委内瑞拉电报数据 可以被其他开发人员继续开发;它们是程序的一部分,但不仅是为了理解程序,而且是为了继续开发程序。[12]
软件开发中对演变的关注使软件成为一种高度动态、临时的构造,为了应对这种复杂性,软件工程已经开发了自己的实践,我将在下面讨论这些实践,我想问一下如何将它们融入到语言学或人文学科实践中:它们是敏捷性、版本控制和开源。
“敏捷”是项目管理的一个核心过程,在软件开发中得到了特别强大的支持,并强调了产品开发的开放性。我所说的“版本控制”既指存档和记录软件开发中不同开发步骤的技术可能性,也指版本的基本思维方式,这可能对人文学科构成挑战。 “开源”指的是开放分发,也指软件的生产,我认为这是新形式人文工作的有用工作模式。
这个关于敏捷性、版本控制和开源的汇编并不声称提供了软件开发程序的完整概述,而是将自己视为可能给人文实践带来重大变化的一系列过程的集合,从某种意义上说,数字人文代表了人文工作的一种范式,它不再主要涉及个人取得的成果,而是涉及在团体中开发的实验——它将其视为一门基于团队合作和实验意愿的科学。
2.1.敏捷
信息技术的发展非常复杂,需要解决许多问题。虽然软件是一个文本系统(即它由文本、程序代码组成),但它是一个由大量相互作用的元素组成的系统,理想情况下相互作用而不会出现错误。[13]
从历史上看,信息技术是从基于早期大型计算机的大型项目发展而来的,随着互联网的出现,IT项目迅速成为极其复杂的事业。[14] 巨大的技术投入、高昂的成本以及数据保护等法律和政治问题,使得信息技术对项目进行可靠管理的需求变得十分迫切。可以区分线性和迭代或敏捷项目管理方法。[15]
线性项目管理模型的典型例子是“瀑布”模型。瀑布模型基于线性项目流程,首先确定规范,然后实施和测试这些规范,然后将完成的软件交给客户。该过程的问题在于,规划和实施之间可能会经过大量时间,而客户却没有检查或做出任何更改。这是有问题的,因为发展正在发生得越来越快,特别是在信息技术领域。总是存在一些新的平台、浏览器等,这些在项目开始时并没有被考虑到,但是在项目的过程中它们却变得与客户息息相关。[16]为了吸收这种动态并确保客户和开发团队之间更紧密的合作,敏捷方法越来越多地被使用,特别是在软件开发领域。
简而言之,敏捷性的特点在于一个迭代过程,在这个过程中,客户不仅仅看到最终产品,而且还会按照一定的时间间隔向他们展示产品或产品特性。这样做的好处是客户现在可以请求修改。目的是在开发过程中尽早发现错误和偏差,然后将必要的更改纳入开发过程。[17]
敏捷软件开发方法并不是什么新鲜事。有讨论认为,它们早在 20 世纪 50 年代就已出现。然而,在 20 世纪 90 年代,人们越来越关注敏捷工作方式,当时 Scrum 和极限编程等敏捷方法被制定出来。[18]关于敏捷工作方式的讨论在 2001 年的《敏捷宣言》中以清晰的声明形式体现出来。该宣言的内容包括“持续交付”(即软件较小组件的顺序交付)、强大的客户参与度和明确使用迭代程序。[19]