Methodologies

Object-Oriented Analysis & Design

Object-oriented analysis and design (OOAD) is the principal industry-proven methodology for developing high-quality object-oriented systems. This prevailing software development methodology involves three aspects: object-oriented analysis (OOA), which deals with the design requirements and overall architecture of a system, and is focused on describing what the system should do in terms of key objects in the problem domain; object-oriented design (OOD), which translates a system architecture into programming constructs (such as interfaces, classes, and method descriptions); and object-oriented programming (OOP), which implements these programming constructs.

The fundamental idea behind an object-oriented (OO) language is object decomposition, breaking the complex software system down into its various objects, combining the data and the functions that operate on the data into a single unit, the object. Objects are discussed and built by modeling real-world instances. A typical OO system consists of a number of cooperating objects, each of which may or may not collaborate with other objects in order to achieve some task for the user. Real-world objects display the characteristic of high cohesion, they maintain a single theme or focus, in turn, software objects model real-world objects. This form of object decomposition provides a natural way of breaking the problem down into isolated, manageable parts. In many cases, the development effort shifts from writing a new code, to assembling existing objects in new and innovative ways to solve a problem. Thus, object-oriented analysis and design methodology cuts down development time and costs, leading to faster time to market and significant competitive advantage, and enables producing more flexible, modifiable, easily maintainable object-oriented systems.

RUP (Rational Unified Process, UML Unified Modeling Language)

IBM Rational Unified Process®, or RUP®, is a configurable software development process based on the Unified Modeling Language™ (UML™) aimed at ensuring the production of high-quality software that meets the needs of its end users within a predictable schedule and budget. The process enhances team productivity and delivers software best practices via prescriptive guidelines, templates and tool mentors for all critical software life cycle activities.

RUP is a comprehensive software engineering tool that combines the procedural aspects of development (such as defined stages, techniques, and practices) with other components of development (such as documents, models, manuals, code, etc.) within a unifying framework. The Rational Unified Process unifies the entire software development team by providing a customizable framework of best practices from many disciplines such as project management, business modeling, requirements management, analysis and design, testing, and change control for the full life cycle process.

The Rational Unified Process uses iterative approach for organizing projects in terms of workflow and phases, each consisting of one or more iterations. Each project iteration cycle begins with a plan outlining what will be accomplished and concluding with an evaluation of whether objectives have been met. Milestones enable management to assess progress. RUP effectively eliminates risk early in the project, decreases time-to-market, and ensures the client's business requirements are totally met by the end system/application produced.

For more details, please refer to: IBM web site.

Design Patterns

Design Patterns is an object-oriented development methodology providing a proven structure and characteristics for building highly maintainable and extendible software. This methodology presents patterns for managing object creation, composing objects into larger structures, and coordinating control flow between objects, thus offering timeless and elegant solutions to common problems in software design. Design Patterns can improve the structure of software, facilitate maintenance, and help avoid architectural drift.

The purpose of Design Patterns is to capture software solutions that have been discovered, developed and evolved over time, and make them reusable. The reusability and flexibility of code allows finding consistent, well-engineered object-oriented designs appropriate for the needs of the particular application instead of having to repeat the problem and solution again and again. Successful reuse of well-designed and well-tested software components improves software productivity, quality and reliability.

XP (Extreme Programming)

EXtreme Programming (XP) is a lightweight software development methodology. The fundamental concept of XP is to start simply, divide a project into a series of iterations each ending with a rigorously tested release that works in its limited way, and then fit it into a specific structure designed to simplify and expedite the process of software development rather than an exhaustive structure based on the thorough and time-consuming analysis.

EXtreme Programming is actually a deliberate and disciplined approach created in response to software development in the environment of rapidly changing requirements. High-risk projects and those with vague or dynamical requirements are perfect for XP and they will experience greater success and developer productivity in comparison with other software development methodologies.

EXtreme Programming emphasizes team work and implements a simple, yet effective way to enable groupware style development. The XP team includes not only developers - managers and customers are all part of the XP team working together closely and dedicated to delivering quality software. EXtreme Programming teams use a simple form of planning and tracking to decide what should be done next and predict when the project will be completed. Focused on business value, the team produces the software in a series of small fully-integrated releases that pass all the pre-defined tests. With this foundation, XP team is empowered to confidently respond to changing requirements and technology, even late in the life cycle.

So, if you do not have a firm idea of the new system functionality or the software functionality is expected to change frequently, this is when XP will succeed and rapidly produce extremely reliable, efficient, well-factored software.

For more details, please refer to: XProgramming website.

RUP (Rational Unified Process, UML Unified Modeling Language)

IBM Rational Unified Process®, or RUP®, is a configurable software development process based on the Unified Modeling Language™ (UML™) aimed at ensuring the production of high-quality software that meets the needs of its end users within a predictable schedule and budget. The process enhances team productivity and delivers software best practices via prescriptive guidelines, templates and tool mentors for all critical software life cycle activities.

RUP is a comprehensive software engineering tool that combines the procedural aspects of development (such as defined stages, techniques, and practices) with other components of development (such as documents, models, manuals, code, etc.) within a unifying framework. The Rational Unified Process unifies the entire software development team by providing a customizable framework of best practices from many disciplines such as project management, business modeling, requirements management, analysis and design, testing, and change control for the full life cycle process.

The Rational Unified Process uses iterative approach for organizing projects in terms of workflow and phases, each consisting of one or more iterations. Each project iteration cycle begins with a plan outlining what will be accomplished and concluding with an evaluation of whether objectives have been met. Milestones enable management to assess progress. RUP effectively eliminates risk early in the project, decreases time-to-market, and ensures the client's business requirements are totally met by the end system/application produced.

For more details, please refer to: IBM web site.

Design Patterns

Design Patterns is an object-oriented development methodology providing a proven structure and characteristics for building highly maintainable and extendible software. This methodology presents patterns for managing object creation, composing objects into larger structures, and coordinating control flow between objects, thus offering timeless and elegant solutions to common problems in software design. Design Patterns can improve the structure of software, facilitate maintenance, and help avoid architectural drift.

The purpose of Design Patterns is to capture software solutions that have been discovered, developed and evolved over time, and make them reusable. The reusability and flexibility of code allows finding consistent, well-engineered object-oriented designs appropriate for the needs of the particular application instead of having to repeat the problem and solution again and again. Successful reuse of well-designed and well-tested software components improves software productivity, quality and reliability.

XP (Extreme Programming)

EXtreme Programming (XP) is a lightweight software development methodology. The fundamental concept of XP is to start simply, divide a project into a series of iterations each ending with a rigorously tested release that works in its limited way, and then fit it into a specific structure designed to simplify and expedite the process of software development rather than an exhaustive structure based on the thorough and time-consuming analysis.

EXtreme Programming is actually a deliberate and disciplined approach created in response to software development in the environment of rapidly changing requirements. High-risk projects and those with vague or dynamical requirements are perfect for XP and they will experience greater success and developer productivity in comparison with other software development methodologies.

EXtreme Programming emphasizes team work and implements a simple, yet effective way to enable groupware style development. The XP team includes not only developers - managers and customers are all part of the XP team working together closely and dedicated to delivering quality software. EXtreme Programming teams use a simple form of planning and tracking to decide what should be done next and predict when the project will be completed. Focused on business value, the team produces the software in a series of small fully-integrated releases that pass all the pre-defined tests. With this foundation, XP team is empowered to confidently respond to changing requirements and technology, even late in the life cycle.

So, if you do not have a firm idea of the new system functionality or the software functionality is expected to change frequently, this is when XP will succeed and rapidly produce extremely reliable, efficient, well-factored software.

For more details, please refer to: XProgramming website.