Approaches of software development fall into 3 broad categories. At one end is product development.
The assumption of this approach is to develop flexible software that can accommodate the needs of wide variety of
organizations. Software product is aimed to sell hundreds, if not thousands. The implication is that the products
will not accommodate 100% needs of every potential customer. The success of this business model is dependent on volumes
of sales, not revenues from a few customers. At other end is custom development. Each application is built
around one business problem for one particular client or business unit. However, applications in many organizations
share great deal of common functionality while maintain noticeable differences. Neither product development nor custom development
offer a cost-effective solution for organizations' business needs. Organizations have been consistently
struggling with the soaring cost and the complexity of Information System development.
After years of success and failure in a wide variety of industries, IT professionals have realized that cost of
developing application is only a small part in the entire life cycle of system development, majority of cost occurs
at application maintenance and evolution stages. It is relatively simple to write an application, but it is a challenge
to integrate applications and continuously add new functionality to the existing applications.
To address the complexity and ever changing nature of Information Systems, and to cut cost of application development,
Component Based Application Development (CBAD) has emerged as a promising solution. The concept was incepted decades ago,
but it is the maturity of component technology particularly EJB technology, made it widely spread.
CBAD views a complex system as a group of components collaboratively working together to solve particular business problems.
A component is an autonomous unit through entire System Development Life Cycle (SDLC). A component is a unit of modeling,
a unit of coding, a unit of testing, a unit of deployment, and a unit of project management.
A component is autonomous at all layers of application (UI, application and database layers). The most significant development
is always at the middle tier (application layer). Components interact with each other by well-defined interface, independent
of implementation. Within a particular application, a component can be replaced (deployed) without impacting the behaviors
of the entire system. Components can be re-used across many applications or systems.
Software Configuration Management - Version Control, Build, Release Management and Process Control
Software Testing - Unit Testing, Integration Testing, Regression Testing, System Testing and User Testing
Software Testing Procedures
Web Application Development Methodologies
Web Application Development - Programming Languages