A key function of a software system is its ability to facilitate the manipulation of data, which is often implemented using a flavour of the Structured Query Language (SQL). To develop the data operations of software (i.e, creating, retrieving, updating, and deleting data), developers are required to excel in writing and combining both SQL and application code. The problem is that writing SQL code in itself is already challenging (e.g., SQL anti-patterns are commonplace) and combining SQL with application code (i.e., for SQL development tasks) is even more demanding. Meanwhile, we have little empirical understanding regarding the characteristics of SQL development tasks. Do SQL development tasks typically need more code changes? Do they typically have a longer time-to-completion? Answers to such questions would prepare the community for the potential challenges associated with such tasks. Our results obtained from 20 Apache projects reveal that SQL development tasks have a significantly longer time-to-completion than SQL-unrelated tasks and require significantly more code changes. Through our qualitative analyses, we observe that SQL development tasks require more spread out changes, effort in reviews and documentation. Our results also corroborate previous research highlighting the prevalence of SQL anti-patterns. The software engineering community should make provision for the peculiarities of SQL coding, in the delivery of safe and secure interactive software.
翻译:软件系统的一个关键功能是它是否有能力促进数据操纵,而数据操纵往往是使用结构化查询语言(SQL)的风味来实施的。为了发展软件的数据操作(即创建、检索、更新和删除数据),开发者需要精于写作和合并SQL和应用代码。问题在于,撰写SQL代码本身已经具有挑战性(例如,SQL反方向是常见的),而将SQL与应用代码(即SQL开发任务)相结合的要求甚至更高。与此同时,我们对于SQL开发任务的特点几乎没有多少经验性的理解。 Do SQL开发任务通常需要更多的代码修改?他们通常需要更长的时间到完成吗?这些问题的答案将使社区做好准备,应对与此类任务有关的潜在挑战。我们从20个阿帕奇项目获得的结果显示,SQL开发任务的时间到完成的时间比SQL相关的任务要长得多得多,并且需要更多代码修改。通过我们的质量分析,我们还观察SL公司在SL软件的交付过程中需要更安全化的软件。