Menu

Software Methodology

Charles Nadolski

Software Methodology

To ensure consistent quality, usable software at any point of the development cycle, low maintenance, and high extensibility, this software project will adhere to the following software methodologies and philosophies.

  • Agile Development: The software will be functional (if not feature complete) early in the development process. Some guidelines will be laid out as milestones for development into the future, which are then broken down into stories. Features will be added as stories into future sprints, and re-prioritized as resources and need permit.

  • Test-driven Development: Also known as TDD, this means that tests are written before code is written, driving the writing of code. This may seem like it would slow the development process, but actually saves time long term by encouraging elegant, bug-free code. It also has the side-effect of making the application fully regressible.

  • SOLID: These are guidelines for writing testable, clear code. Without following SOLID, TDD becomes difficult, maintenance is painful, and extending functionality is difficult.

  • Multi-tier architecture and Domain-drive design: The application will have multiple tiers. At the onset, the application will have an MVVM architecture, so that there is a clean separation between the XAML code, view model code, and the underlying electronics emulation code. The hardware emulation code itself can be cleaved into separated tiers: the gaming console or integrated circuit and the simulation of individual chips can exist in separate dlls/assemblies.


Related

Wiki: Home

Monday.com Logo