Skip to content
This repository has been archived by the owner on Dec 19, 2023. It is now read-only.

Software Requirements Specification

Riku Rauhala edited this page Feb 2, 2023 · 10 revisions

Software Requirements Specification

For implementation and architecture details, see the Software Architecture document.

Purpose

The purpose of the application is to provide a simple, fast and easy-to-use way for converting numbers to different formats, such as binary numbers to decimal numbers and vice versa. The intended target audience consists of university students majoring in computer science or other technical fields and anyone else interested in number conversion. The application offers a way to simply type the number and see the results immediately. All relevant functionality must be properly and thoroughly tested so the user can rely on the results being correct.

The primary objective is for the application to be useful. The secondary is for it to be educational.

Open source

Source code is published with an open source license, MIT. Source code is hosted on GitHub and will always be open to issues and pull requests from anyone wishing to contribute to the project. The contributing rules should remain simple and keep the barrier of entry for new contributors as low as possible.

Extensive documentation is essential.

Technology

The application is written in TypeScript using the React library. The application is deployed to GitHub Pages and can be accessed via any modern web browser. All calculation can be done inside the application and no user data is stored so there is no need for a separate backend service. The application is a pure frontend application only.

Continuous integration is implemented with GitHub Actions. The CI pipeline runs ESLint to enforce code style rules. The pipeline also runs unit tests. Code coverage is monitored with codecov.io. All new features should pass the tests and be up to the standards enforced by the linter rules. Test coverage can be temporarily allowed to decline as new functionality is written.

User interface

As a web application, the app can be accessed via any modern web browser. The user interface is built with Material UI. It should be simple and contain only relevant information with no distractions or unnecessary elements to keep the application informative and uncluttered. The application must before all be simple, fast and easy-to-use.

Simple means that there should be no irrelevant information cluttering the user interface. Fast means the code is optimized (by architectural decisions as well as optimization made by the TypeScript compiler). The results should be displayed without delay. Easy-to-use refers to how intuitive the application user interface is. Can the user know how to use the application without spending too much (or rather, any) time reading a manual.

The user interface is responsive to reach a wide audience using various devices. The application is available in different languages to serve those who do not speak English.

Functionality

Primary

  • Support for the following numeral systems:
    • Base-2 (binary)
    • Base-8 (octal)
    • Base-10 (decimal)
    • Base-16 (hexadecimal)

Secondary

  • Dark mode
  • Information about numeral systems and their practical usage scenarios
  • Support for fractions (Issue #69)
  • Support for query params (Issue #60)
  • Support for more systems:
    • Base-3
    • ...
    • Base-36
  • User interface available in different languages
    • English
    • Finnish
    • Italian
    • Korean
    • Swedish (Issue #102)
    • others

Do you have an idea for new features? Tell us about it!