-
Notifications
You must be signed in to change notification settings - Fork 6
Software Requirements
Software Requirements describes all the functional and non-functional requirements. It contains the functionality, interfaces, and performance requirements of the software. Also, it contains quality attributes and design constraints of the software.
The scope of this document is as follows:
- 1.2.1 Defines all software requirements arising from particular characteristics of the project.
- 1.2.2 Will not describe any design or implementation details. These details will be described in the design phase of the project.
- 1.2.3 Will not impose additional constraints on the software.
- Performance is the rate at which the whole system detects and classifies an object. We measure this rate with the unit of time.
- Accuracy of a classifier is the ratio of correct classification of input data with respect to total number of inputs.
- Label which is necessary for our supervised learning methods, is a string that specifies the type (material) and color of waste.
-
Functionality: The software should separate various waste, such as Aluminum cans and plastic, based on their colors and types.
-
Labeling: Data needs to be labeled because we use supervised models which need labels; In order to evaluate the labeling procedure, some statistical metrics will be used. We need an automatic labeling tool; manual labeling is time-consuming and expensive. Also, there should be a measurement tool to check if the data are labeled correctly.
-
Metrics parameters: Based on our business owner demand, we want at least 95% accuracy for all types of classification and at least 98% precision for PET type. We extract the accuracy and precision (or other metrics) by evaluating the trained model. In the end, a test set will justify our desired goal in accuracy and precision. We can also plot these metrics diagrams to illustrate the overall performance of our model in classifying each class. As a result, we can recognize the items our model is most confused about.
-
Performance: The artificial stream of waste images is needed to simulate the factory environment. The frequency of the stream should have the ability to change by the user. Inference speed should be less than 100ms. We need to classify objects at least at the rate of 10 Hz.
-
User interface: We need a simple graphical user interface. We must also have a demonstrator and monitor.
-
Imaging: For better results from model training, we need to homogenize images. Homogeneity, in this case, is defined as actual color space, size, resolution, and format. A unit test is required to evaluate this parameter. Besides, an image enhancer is required to normalize every image based on a histogram obtained from all datasets. Also, the data augmentation technique helps us to expand our data set. The center of the image has to be clarified by the software to make it possible to kick out waste from the factory line when needed.
-
Anomalies: The data monitor must indicate the noisy data to improve our model to recognize the noises. Also, we need to define the "others" category in our classes.
-
Model: Pre-defined deep neural architectures should be recognized and based on our requirements, we can use pre-trained versions or train them from scratch.
The developed system complies with the ISO 25010 software quality standards in terms of the following factors:
- Reliability: The software should perform without failure for a specific number of uses or amount of time. It also should be able to handle exception cases.
- Maintainability: This characteristic represents the effectiveness and efficiency with which a product or system can be modified to improve, correct, or adapt to changes in environment and requirements. The change to one component should have minimal impact on other components.
- Scalability: The software should be capable of extending and upgrading in the future. There could be new categories of waste added to our data set, and the software should be able to handle them. As a result, we need continuous integration and deployment (CI/CD). There should be development, testing, production, and monitoring phases of the software development.
- Usability: We need to design a user interface platform.
- Portability: The software should be able to transfer as an embedded system from one environment to another.
- Traceability: Makes the correctness easier and less prone to error
- Retrainability: The software should be able to re-run the process that generated the previously selected model on a new training data set.
- Security: The degree to which a product or system protects information and data so that persons or other products or systems have the degree of data access appropriate to their types and levels of authorization.
- Are there any limitations due to limited resources, programming languages, etc.?
- The memory during inference is less than 2GB.
- What are the stylistic conventions to promote code readability?