A software package development process is a system for developing
software packages. Packages make it easier to reuse and share code, e.g., via a
software repository
A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source control or repository managers. Package ...
. A formal system for package checking can help expose bugs, thereby potentially making it easier to produce ''trustworthy software'' (
Chambers' ''prime directive''). This in turn can help improve productivity for people who produce and use software, as part of a
software development process
In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software deve ...
or
software development methodology
In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software devel ...
.
Discussion
In this context, a ''package'' is a collection of functions written for use in a single language such as
Python or
R, bundled with documentation. For many programming languages, there are
software repositories where people share such packages.
For example, a
Python package combines documentation, code and initial set up and possibly examples that could be used as
unit tests in a single file with a "py" extension.
By contrast, an
R package has documentation with examples in files separate from the code, possibly bundled with other material such as sample data sets and introductory vignettes. The source code for an R package is contained in a directory with a master "description" file and separate subdirectories for documentation, code, optional data sets suits for unit or regression testing, and perhaps others. A formal package compilation process
[
] checks for errors of various types. This includes checking for syntax errors on both the documentation markup language and the code as well as comparing the arguments between documentation and code. Examples in the documentation are tested and produce error messages if they fail. This can be used as a primitive form of
unit testing
In computer programming, unit testing is a software testing method by which individual units of source codeāsets of one or more computer program modules together with associated control data, usage procedures, and operating procedures&m ...
; more formal unit tests and
regression testing
Regression testing (rarely, ''non-regression testing'') is re-running functional and non-functional tests to ensure that previously developed and tested software still performs as expected after a change. If not, that would be called a ''regres ...
can be included. This can improve software development productivity by making it easier to find bugs as the code is being developed. In addition, the documentation makes it easier to share code with others. It also makes it easier for a developer to use code written months or even years earlier. Routine checks are made of packages contributed to the Comprehensive R Archive Network (CRAN) and under development in the companion open-source collaborative development web site, R-Forge. These checks compile the packages repeatedly on different platforms under different versions of the core R language. The results are made available to package maintainers. In this way, package contributors become aware of problems they might otherwise never encounter themselves, because they otherwise would not have easy access to those alternative test results.
An interesting research question would be to compare the quality of contributions to different
software repositories and try to relate that to features of the language and accompanying package development process. This could include trying to compare the rate of growth of contributed software to the degree of formality and enforcement of standards for documentation, testing, and coding.
See also
*
Package management system
A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals w ...
for combining software packages in different languages into an operating system.
*
Software repository
A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source control or repository managers. Package ...
for collections of packages to share.
*
Software development process
In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software deve ...
or
Software development methodology
In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software devel ...
for a more general discussion of software development.
References
{{Reflist
Repository
Repository may refer to:
Archives and online databases
* Content repository, a database with an associated set of data management tools, allowing application-independent access to the content
* Disciplinary repository (or subject repository), a ...
Software development process