Valid XHTML 1.1! Valid CSS!
Created 2009-03-07   Modified 2009-04-11
Chelton Evans

proj IDE home

Intro
Goals
Continuous Integration
Composition

Intro

An IDE (Integrated Development Environment) is a programming environment that integrates applications. While MS has visual studio/.NET Unix uses tools in tool chains to create an IDE.

I have put together open source tools that I use and perhaps glued them together with scripts.

A continuous integration implementation which creates and manages makefiles was implemented.

List of Software Used in the IDE

Goals

Continuous Integration

The goal is to get the workspace to the point where Continuous Integration is taking place. i.e. a "current" build for testing, demo, or release purposes.

A framework for managing the workspace has been implemented to meet the goal of continuous integration.

Previously I was managing the dependencies by hand but encountered many problems in maintaining dependencies.

I investigated and implemented automated build and testing tools, and Extreme Programming principles which were suited to my development.

Therefore I have implemented the framework for automated build and testing in this code base. proj/ide/testscripts.sh provide tools at the command line for compiling and testing the workspace as a whole, or as modules with their units. See CI Unit Testing.

The main point of continuous integration is when a change is made in one part of the code that effects another the dependency can be addressed.

CI allows you to take risks and be confident, hence you can write more full on software that is outside the square.

[ After arguing with military software engineers who write dumb/simple yet error free code(their goal) I realized that without something full on their way will prevail, it likely will but at least the potential for creative code is more closely realized. They appear reluctant to enter original/dynamic design and claim that it must be engineered on paper before implementation. The problem with this perspective is that most designs usually start from prototypes and incrementally develop. ]

[ In short I do not know the future before I code. It takes time before ideas evolve. My parser has an iterator concept that eventually included scope. Combined unit testing and imagining the software produced the pattern which worked, yet the software engineer would reject it as rubbish and instead use an entirely differently engineered software model for equivalent effect. This is an argument about interfaces and the conservative approach and common practises are ridiculous. The KISS principle can equally be applied to data in interfaces so they use such arguments in emotive rather than logical fashion. ]

[ Since CI supports better testing you do not have to be this restrictive to get good software and software that lives depend on. The potential to decouple the issues exists. Further C++ language extensions could make many more coding designs possible. I am often thinking I would like to do this/that in what is almost a trivial piece of code but the language forbids it. Hopefully templates will be extended for more primitive substitution like macros with type safety which would give C++ a kick, the standard C++ is extremely conservative in this direction and the committee deserves criticism. ]

Composition

Documentation has a working diagram of the IDE.

proj/ide/ide.sh puts the pieces together to build the IDE. (Excluding unix itself which is also part of the ide because it lets the developer build things).

From ide.sh you can see the makefile build tools, unit testing implementation, html documentation updates, project status updates and helper svn functions.

The workspace has automatic makefile generation for managing dependencies between source files and linking. See Makefile Build Tool. What I wanted was a hands off IDE that minimized configuration files and largely works from the source.

The workspace has a unit testing framework. Over time the workspace will develop using this technology.

There is clearly a need to move away from manual to automatic testing where possible. This will give confidence in the workspace to drive more aggressive software goals. More time on software development and less time on tracking and re-fixing bugs. So even if I do not know what is going on, the software will.

The key to getting better software is through transparency. CI Report provides a measure as to what is working. It still requires knowledge to know if the module is important or how relevant the message or module is.