-
Notifications
You must be signed in to change notification settings - Fork 0
Evolvable Software Systems
The purpose of this website is to teach users how to build an software architecture that enables software systems to evolve.
Hundreds of billions of dollars are being wasted on software development each year on failed software projects. This project discusses how to build a software system that is capable of being continuously evolved while running.
Software engineers need to learn how to engineer evolvable software systems.
A .NET software platform that can host a software system capable of being changed continuously in an incremental fashion.
The primary goal of this project is to teach others how to build evolvable software systems and construct a game platform by the end of 2020, similar to battlecode, that allows for two components AI to compete and evolve based upon other competing AIs. The former is to help craft 'silver bullet' for software engineers and inspire others to continue this line of research; more than one solution will be needed since software never stops evolving. The later is mostly for fun since games are a hobby.
In addition to the primary goal above, this software development program has the following secondary goals:
- Demonstrate how to build evolvable systems using a language that businesses often utilize.
- Explain how the designs came to their current implementations.
Development of a Standard API Library Development of a Standard Busing Library
This document is a 'living' document that is used to manage and describe this Evobolics software development program.
This system will be written predominately in .NET C#. One of the secondary goals of the project is demonstrate how to build evolvable systems using a computer language that business utilize; C-Sharp is one of those major languages.
Source code for this project is setup in two major azure projects. The first one is named Base and the second is named BattleSharp.
The first step in constructing systems that can evolve is to build out a software information platform that enables a software system to be constructed using standard building blocks. Any software engineer should have the goal to escape research and development and be able to construct systems in modular fashion. Without modules, it is not possible to break a system design down predictable sized pieces. This set of libraries helps a developer have the ability to create modular software.
This architecture will be broken up into at least five separate solutions. The first one, will house the core base libraries that everything else will be built upon. The second one will allow for object to move around between systems. The third one will be used to build a data framework. The last one, for now, will hold the BattleSharp source code that utilizes this framework.
- Evo.Core.Ioc
- Evo.Core.Results
- Evo.Core.Json
- Evo.Core.Rest
- Evo.Core.Http
- Evo.Core.Exceptions
- Evo.Core.Messaging
- Evo.Core.Standards
- Evo.Core.Uow
- Evo.Data
- Evo.Data.EntityFramework
- Evo.Data.EntityFramework.SqlServer
- Evo.Systems.Identification
- Evo.Systems.TypeSystem
- Evo.Systems.Discovery
- Evo.Systems.Busing.Api
- Evo.Systems.Busing.MessageQueuing
- Evo.Systems.Busing.Clients
These libraries will allow for systems to be able to continuously evolve in change while the application is running.
These libraries will utilize the above libraries to build a game engine so the concepts can be visualized and played around with in fun enviornment.