😃 Meu documento do Paper
Digite alguma coisa para começar

Abstract

SciPy is a popular open source software which is widely used for scientific and numerical computing in Python. SciPy is maintained and developed by the core developers on Github as well as external contributors. In this chapter, we study the software architecture of SciPy, precisely its stakeholders, context, deployment, and evolution. Finally, we elaborate upon an analysis of its architecture development and its technical debt. In conclusion, we observe that SciPy is very well engineered project with minor technical holes or debt.

Table of Content

Introduction

SciPy is an open source software library that abstracts and implements key functionalities for scientific computing, mathematics and engineering. It is written in Python and is supported by a large community of developers, researchers and some of the world famous companies including Github, Intel and Travis CI. SciPy has been under active development since 2001 and is now used in a wide range of applications by companies across the world. Some of the prominent modules implemented in SciPy include linear algebra, integration, interpolation, Fast Fourier Transforms, and signal and image processing. 
In this chapter, we derive views and perspectives from Rozanski & Woods book and perform a thorough analysis of the library. Given the global scale of impact, SciPy provides for a very interesting study in many dimensions. The goal of this article is to provide an overview of key architectural elements of SciPy and to possibly attract more contributors for open source development.

Stakeholder’s Analysis

“A stake holder in a software architecture is a person, group, or an entity with an interest in or concerns about the realization of the architecture.” - Software Systems Architecture.
Apart from just the users of a software system, there are many different individuals or groups of no individuals who have a direct impact on the system. From conceptualization, design, documentation, implementation, maintenance, to even developing business cases around the software system, development life-cycle of a software involves many different stake holders working in harmony to make a valuable and sustainable system. This section describes the different types of stake holders we have identified for the project, and attempts to identify their contributions to the project. Most of the information below have been sourced from the SciPy github page and the main SciPy website. Minor points have been inspired from numerous blogs, wikipedia and google search.
Type
Brief Description
Owner
Acquirers
Acquirers are stakeholders who oversee the long term and short term strategy of the project. This also includes parties who partly / fully sponsor the project.
A large part of strategic positioning was done by the original creators of SciPy, Travis Oliphant, Pearu Peterson, and Eric Jones. Apart from them, NumFOCUS  provides financial support to the project, garnering some influence in  the overall strategy.
Assessors
Assessors oversee the system’s compliance to standards and legal regulations. 
Communicators
Communicators ensure crisp and unambiguous communication of relevant details of the project to appropriate stakeholders.
The SciPy Code of Conduct committee polices all public spaces managed by the SciPy project, and ensures an abuse free productive communication environment.
All of the technical documentation and inquiry response is handled by the active contributors active participants in the project.
Developers
Developers are responsible for creating and deploying software solutions that comply with all the expectations.
SciPy originated with code contributions by Travis Oliphant, Pearu Peterson, and Eric Jones in 2001. Since then, significant contributions have been made by over 200 contributors. 
Maintainers
Maintainers manage the evolution of the system once it is deployed and operational.
All of the pull requests for SciPy are reviewed and integrated by the community of developers and users of SciPy. All contributors who participate in the PR discussion can be considered Maintainers. In rare cases that agreement cannot be reached, maintainers of the individual module in question decide on the outcome. 
Suppliers
Suppliers source the hardware, software, or infrastructure on which the system will run. 
Some of the organisations that have funded parts of Scipy operations are as listed below.
  • Enthought: scipy.org and mailing lists hosting, holding the SciPy trademark. Enthoughts also sponsors SciPy conferences in the United states and across the world.
  • Github: code hosting and development workflow platform
  • Travis CI: continuous integration service
  • SourceForge: hosting released sources and installers
  • NumFOCUS: hosted Mac Mini build machine
Support Staff
Support staff provide support to users for the product or system.
Most open questions and queries are catered to, by the community of users and contributors of SciPy on different channels, including Stackoverflow and Github. Commercial support is offered for SciPy by a number of companies, including Anaconda, Enthought and Quansight.
System Administrators
System administrators ensure smooth operations of the system once it has been deployed.
Since SciPy is offered as a library, no system critical assurance is for the operation. Services such as Hosting, Mailing list, etc are fulfilled by companies listed in Suppliers.
Testers
Testers systematically test the system to ensure that it is suitable for deployment and use.
All code contributors are expected to perform unit tests on their code before submitting a Pull Request. There is no separate team of testers who test the system.
Users
Users are individuals and organisations who use Scipy for their projects.
SciPy is primarily designed for Mathematics, Science and Engineering. SciPy caters to a wide range of users, including researchers, students, data scientists, as software engineers. The library is used in academic, as well as business setting.

In addition to the above discussed categories which were based on Software Systems Architecture, following categories stakeholders have also been accounted for.
Type
Brief Description
Owner
Event Organiser
Event organisers organise regular outreach and awareness programs.
Conferences are organised by SciPy (in the United States), EuroSciPy (in Europe) and SciPy.in (in India)
Competitors
Competitors include other projects that provide similar offerings.
Some of the most prominent competitors of SciPy are 
  • Matlab
  • R
  • Stata
Dependencies
These are entities on which Scipy is reliant upon for services.
  • Python is the base language SciPy offers its services in.
  • C and Fortran are used for several key components in the SciPy Library.