Sunday, September 13, 2009

New Software Development Process, Part 1 - Introduction, What, and Why



Today, we start developing software using a new development process. In the past, we've maintained, for each application, multiple code bases, one for each target platform. With the new development process, we will maintain, for each application, only one code base, one for all target platforms.

To do so, we will use one set of cross-platform open source software development tools.

For diagramming our application architecture and data structure, we will use Inkscape.

We will use one common set of compiling/linking tools on all our platforms. We will use the tools in the GNU Compiler Collection (GCC). On the Windows/x86 platform, we will use the MinGW version of the GCC tools.

All operating system calls will be made through an abstraction layer composed of a set of c++ header (.h) files that define macros and inline functions with common names across all platforms.

We will also abandon the use of native application frameworks like Microsoft Foundation Class (MFC) and Apple's Cocoa for Mac OS X. Instead, we will use wxWidgets, the cross-platform application framework.

We will use wxFormBuilder to design the graphic user interface (GUI) for our applications.

For rendering graphics, we will abandon use of native graphics APIs like Microsoft DirectX and, instead, use OpenGL, the cross-platform graphics engine.

For accessing data in client/server relational database management systems (RDBMSs), we will use the Open Database Connectivity (ODBC) API. If the customer does not specify a particular RDBMS, we will use MySql.

For simple local databases, we will use SQLite.

There is one exception to the use of open source cross-platform tools. Because all of us are already familiar with Microsoft Visual Studio 2005, we will use it to write and debug our applications on the Windows/x86 platform. Once the debugging is complete, we will build the final product using the GCC compilers on the target platforms (including the Windows/x86 platform).

Here is our software development process:

1) On the Windows/x86 platform, create a project folder for the new application.

2) Create a sub-folder named "Design" for containing the design documents.

3) Design and diagram the application's architecture and data structure using Inkscape and save the diagrams in the "Design" subfolder.

4) Create a sub-folder named "Forms" for containing the design for the application's GUI.

5) Design the application's GUI using wxFormBuilder and save the output in the "Forms" sub-folder.

6) Use wxFormBuilder to generate C++ source code for application's interface with wxWidgets and save them into the "Forms" sub-folder.

7) Copy the wxFormBuilder generated the source code to the top-level project folder.

8) Create the Microsoft Visual Studio project files for the new application in the top-level project folder and set up the newly created project for building a wxWidgets application.

9) Add the WxFormBuilder generated the source code to the newly created Microsoft Visual Studio project.

10) Edit/Build/Debug the code for the new application.

11) When the Microsoft Visual Studio generated executable code works, build the application using the GCC MinGW compiler.

12) When the GCC MinGW generated executable code works on the Windows platform, build the application using the GCC compiler on the target platforms.

We will build applications for the following platforms:

Windows/x86
Linux/x86
Linux/PowerPC
MacOS/x86
MacOS/PowerPC

No comments: