Update Assignment 1.md

organização das **Opinions, Critics and Alternatives**
This commit is contained in:
teresa-Guilherme 2016-10-16 13:02:59 +01:00 committed by GitHub
parent 8f9b0f2df8
commit 33e3c20921

View File

@ -6,19 +6,19 @@ As described in the README.md file, Citra is an open-source, passion-driven Nint
**Development Process** **Development Process**
>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. 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.
>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. 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.
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.
**Opinions, Critics and Alternatives** **Opinions, Critics and Alternatives**
- Due to how they work, the Incremental Development and Deployment process is the most reliable, if not the only plausible, development process. The use of incremental development and delivery as an engineer process, has its advantages, such as:
- 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. * 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;
- Being a hobby project, there's no fixed planning in development. Most releases tend to be random bug fixes, small new features, etc. 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.
- There is a guideline on code style. This improves feature recognition by other developers and smoothens development times. 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.
- Since it's an open project, it's bound to have disparities in coding methodology. This issue has been actively tackled, just as explained above. 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.
- 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. 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.
- As a result of its early development stage, the interface is not very user-friendly and there's a large ammount of bugs.
- Part of this project requires specific knowledge about console hardware, emulation, among other areas. This significantly decreases the quantity of code submissions.