Software Engineering Factory
Introduction
The goal of the Software Engineering Factory (SEF) project is to provide a one-stop-shop software engineering environment to a development community. It is based on the following principles:
-
Distributed Collaborative Development
-
Continuous Integration
-
Integrated Project, Change, Configuration and Test Management
-
Model Driven Architecture
-
Service Orientated Architecture, Software Development Asset Management and Reuse
-
Autonomics
See project Trac Wikifor more information.
Motivation
Many tools exist to aid developers with software engineering. Some will claim that all you need is vi and a c compiler for write code. To them I say that if the code is delivered on time and on budget, is bug free and perfectly meets user requirements, then they are right! I am not one of those people. I need all the help I can get.
It gets even tougher when many people have to work together, and unlike computers, people tend to misunderstand each other, be late etc. all resulting in well publicised failed computer system deployments.
To overcome these problems, a number of methodologies have emerged. In turn, tools have evolved that feed off these methodologies, and feed back into them. They provide the glue which binds all the of people involved in the software engineering process together.
The combination of tools and services has resulted in some powerful solutions. As a result, developers now have to install an ever increasing number of tools on their workstation, and configure an ever more complex environment. Emergence of IDEs has helped, but not solved the problem. More and more companies are now providing hosted solutions e.g. SourceForge, CollabNet.
The hosted solutions provide powerful environments, however they are largely not a one-stop-shop i.e. some will provide bug tracking and version control, others will add project mangement facilities, some will deliver continious integration, and yet another group will provide application server environments. I think we can do better.
Vision
Software Engineering Factories should be implemented as an internally or externally hosted service. The service is a partneship of a Software Engineering Process (SEP) and Software Engineering Tools (SETs). The process for any project should be as simple as:
-
Create new project.
-
Capture and document requirements.
-
Feed use-case, analysis, design, implementation adn test models into SEF by adding them to the version control system.
-
SEF will then build, test and deploy the derived executables to an application server.
-
Developers and testers can now view the results.
References
Process
-
Rational Unified Process (RUP)
-
IBM donate parts of RUP called Basic Unified Process (BUP) to Eclipse Process Framework project proposal.
-
Meta-model will be based on first draft of SPEM v2.0, next version of Software Process Engineering Meta-model (SPEM) v1.1.
-
-
eXtreme Programming (XP)
-
DSDM
-
PRINCE 2
-
Personal Software Process (PSP) / Team Software Process (TSP)
-
Capability Maturity Model for Software (SW-CMM)
Requirements
-
IBM Requisite Pro
-
xmlbasedsrs
Analysis & Design
-
ArgoUML
-
IBM Rose
-
TogetherJ
-
Catalog of OMG Modeling and Metadata Specifications.
-
Booch's Handbook of Software Architecture.
Change Management
-
Bugzilla
-
JIRA
Configuration Management
-
-
Workspace Versioning and Configuration Management (JSR 147)
-
-
Subversion
-
CVS
Test Management
-
Mercury WinRunner
-
Mercury QTP
-
Mercury LoadRunner
-
JUnit
-
Eclipse Test & Performance Tools Platform (TPTP) Project.
Build Management
-
Apache ANT
-
Apache Maven
Deployment Management
-
IBM Tivoli
Software Development Asset Management
Continuous Integration
Model Driven Architecture
Service-Oriented Architecture
Autonomics
IBM is doing a lot of research in the area of autonomics. The idea is simple - build computer systems that regulate themselves much in the same way our autonomic nervous system regulates and protects our bodies. This new computer paradigm means the design and implementation of computer systems, software, storage and support must exhibit these basic fundamentals from a user perspective:
-
Flexible. The system will be able to sift data via a platform- and device-agnostic approach.
-
Accessible. The nature of the autonomic system is that it is always on.
-
Transparent. The system will perform its tasks and adapt to a user's needs without dragging the user into the intricacies of its workings.
Some useful links:





