Sunday, March 7, 2010

How can the design of software systems improve using an open source strategy?

In recent years, open source development has seen a big push from big technology firms such as IBM, Sun and Google. In general, how can the design of software systems improve using an open source strategy?

The software engineering process involves:
- Defining Requirements
- System-Level Design
- Detailed Design
- Implementation
- Integration
- Field Testing, and
- Support

The Open Source software model supports all aspects of these processes and provides engineers with a methodology to follow in order to produce high quality products implementing client requirements. The models strength rests in the fact that it's supported through a wider user-base than traditional software engineering models. Open Source projects tend to have a single manager, a development team, and an interested user-base. Each have their own individual insight into the requirements solution and the process normally provides a wider tester base for system maintenance issues. The cornerstone of the methodology is that it's based upon a decentralized model that is supported from a large community of developers concerned with producing quality, mature products. Practitioners enjoy the opportunity of writing code, which is the primary motivation for almost all Open Source software development, and as such continually improve the software engineering process.

The Open source models structure improves on the incremental, build-and-fix, and rapid prototype models by creating a cyclic communications path between the project maintainer, development team, and users or debuggers. After the project attracts a development team the maintainer provides them with an initial release for testing and feature additions. The developers, in turn inform the project manager of enhancements and once they have been coded into the application a user base is identified for product testing. The user base also has the opportunity to suggest design flaw corrections and propose new features they would like the maintainer to incorporate into the project. This improved product is then resubmitted to the development team, and this cycle continues until the project has matured into a stable releasable product.

Open Source projects, as with proprietary projects, require a level of requirements analysis and modeling to successfully implement a solution. UML is the definitive approach to building model driven development that incorporates sound processes and robust architectures.

UML defines notations and semantics for the following types of problem solution:
- User Interaction or Use Case Model – describes boundary and interaction between users and the system.
- Interaction or Collaboration Model – describes how objects in the system interact to accomplish tasks.
- Dynamic Model – State charts describe states that classes assume over time. Activity graphs describe the workflow the system will accomplish.
- Logic or Class Model – describes the classes and objects of the system.
- Physical Component Model – describe software, and sometimes hardware, of the system.
- Physical Deployment Model - describes the systems physical architecture and component deployment on system hardware.

UML provides the Open Source software model with the ability to evolve from simple solution applications for personal use to large-scale applications solving industrial size system requirements. Developers are provided model elements, notation, and guidelines conforming to International OMG standards. It's the process that UML provides the development organization that enables them to refocus their development effort toward easy understanding of these complex problems.

http://linuxgazette.net/issue67/gilliam.html

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.