Merge pull request #3 from pedrof81/Requirements-Introduction

Requirements introduction
This commit is contained in:
ruimoliveira 2016-10-29 23:46:40 +01:00 committed by GitHub
commit b5469879a7
2 changed files with 58 additions and 10 deletions

View File

@ -1,20 +1,30 @@
**Brief description of the project** **Brief description of the project**
As described in the Read Me file, Citra is an open-source and passion driven Nintendo 3DS emulator/debugger written in C++ is written so builds can be actively maintained for Windows, Linux and OS X. At this time, Citra is able to boot many commercial games, most of which do not run to a playable state yet, but are being worked on every day to advance the project forward. As described in the README.md file, Citra is an open-source, passion-driven Nintendo 3DS emulator/debugger written in C++ is written so builds can be actively maintained for Windows, Linux and OS X. At this time, Citra is able to boot many commercial games, most of which do not run to a playable state yet, but are being worked on every day to advance the project forward.
**Development Process** **Development Process**
Incremental development and delivery Citra is being developed as a hobby for several programmers and their work schedule on this Open Source Software Project is not very consistent. They are not supported by any company, therefore they don't have a deadline to implement features. Citra has a team of experiences developers that help (begginer/intermediate level) new contributors with the standard level of code that is to be commited. They take a while to accept pull requests, so that they are certain that the pull has the quality they require, in order to avoid bugs or setbacks.
• Develop the system in increments and evaluate each
increment before proceeding to the development of the Since the contribution frequency is inconsistent, they can't use any industrial-standard engineering process. They "are constantly working on new features" (as said by one of the project leaders) so it would be considered an Incremental development process. However, as they don´t have any kind of deadlines and they only merge when they are sure the feature is operating correctly, we think they are also using a Slow programming process.
next increment
• Evaluation done by user/customer proxy They also use test driven development for certain parts of the emulator, but they fear that making the project only based on test driven, would scare the contributtors with the amounts of bureaucracy needed to implemented.
• Some of the increments can be deployed to end-users
• The waterfall model can be followed in each increment
• Normal approach used in agile methods
**Opinions, Critics and Alternatives** **Opinions, Critics and Alternatives**
The use of incremental development and delivery as an engineer process, has its advantages, such as:
* more interaction between the users/client and developers and consequently, early and requent feedback from the client;
* low chance of project failure;
* the most important requirement is tested thoroughly;
This process provides a more closely and frequently interaction to meet the client's needs. On the other hand the main disadvantage, and the one we consider that might eventually occurr is code degradation. Using this process may degrade the quality of the code, as it is harder to refractor as more features are implemented.
Given the circunstances of this project (hobby, volunteers, low amount of time that developers have to work and inconsistent frequency of commits,specific knowledge about console hardware, emulation, among other areas), we would say that Incremental Development and Deployment process is the most reliable, if not the only plausible development process.
Test-driven development is an alternative to the above. However, this is ill-advised. As with an emulator's nature, it's required to work with multiple games, each with it's own code quirks, while optimizing for playable perfomance. This would mean an excessive amount of tests, and very slow progress towards an acceptable result.
Since it's an open project, it's bound to have disparities in coding methodology. However, there is a guideline on code style. This improves feature recognition by other developers and smoothens development times.
There is a guideline on code style. This improves feature recognition by other developers and smoothens development times. Having a stricter group of developers would potentialy hurt development times, and not necessarily improve code quality, since pull requests are already verified individually before merge.

38
ESOF-docs/Assignment 2.md Normal file
View File

@ -0,0 +1,38 @@
**Requirements**
Before we can start building a project it is essential that the team study the costumers and user needs so the team can have a clear statement and understanding of required properties of a solution to solve the problem.
The requirements for a system are the descriptions of what the system should do, the services that it provides and the constraints on its operation.Some of the problems that arise during the requirements engineering process are a result of failing to make a clear separation between these different levels of description.
We can divide them in two: user requirements and system requirements.
User requirements are statements of what services of the system is expected to provide to system users and the constraints under which it must operate.
System requirements are more detailed descriptions of the software systems functions, services, and operational constraints.
Software system requirements are often classified as functional requirements or non-functional requirements.
Citra requires a 64-bit processor and OpenGl3.3 in order to emulate the 3DS.
The functional requirements for a system describe what the system should do.
Non-functional requirements, as the name suggests, are requirements that are not directly concerned with the specific services delivered by the system to its users.
Requirement engineering processes may include four important high-level activities. These focus on assessing if the system is useful to the business (feasibility study), discovering requirements (elicitation and analysis), converting these requirements into some standard form (specification), and checking that the requirements actually define the system that the customer wants (validation).
Since Citra is not supported by any company they don't have a deadline to implement features, so how does the team decide on whether to implement a new feature or no? They implement features when they want or when the contributors have a feature that have the quality they require in order to avoid bugs or setbacks
For requirements elicitation we informal interview the developers and discover their requirements in their project site https://citra-emu.org/.
Their main focus right now is to fix bugs that stop games from booting and bugs that crashes the program when running. While issues about specific games not booting are valid bugs, they are currently not interested in them unless there are several games which fail with the same or similar messages. There are too many non-working games right now to file individual issues for every one of them.
In future with low priority they intend to implement features like cheat code support, improve speed of cut scenes and support for smartphones, but right now, the main focus is getting the PC port stable.
Given the circumstances of this project (hobby, volunteers, low amount of time that developers have to work and inconsistent frequency of commits, specific knowledge about console hardware, emulation, among other areas) the reality of the new features is contributors of Citra contribute what they like and not always what is ideal.
** Specific Requirements and Features **
Specific Requirements and Features (Functional and Non-Functional requirements)
>Grade: 5pts
**Use Cases**
These are the uses we could figure out for both the application.
![alt tag](http://i.imgur.com/deDgtE4.png)
Domain Model
>Grade: 6 pts