CMMI & Agile
If you’re a developer or project manager certainly you need to adapt a software development methodology to enhance your code or to improve the the quality of your product. Even if you’re new in programming field it’s important for you to identify the techniques used in enterprise to be able to get a position between the professionals. We’re going to talk about two “teams” but not in sport, in software engineering field. Agile and CMMI are considered the best methodology practices and techniques -on opposite sides- of software development methodologies.
Capability Maturity Model Integration is a collection of practices that organizations (software, hardware and IT) can adopt to improve their performance. The CMMI comes with two main representations, Staged and Continuous. Staged shows all the Process Areas (groups of related practices) in the form of a road map, allowing before attempting advanced topics. The Continuous representation has the same content but allows for any topic (Process Area) to be selected in an a la carte style.
CMMI provides a way to assess the state of an organization’s ability to build software in a repeatable,predictable and a stable way.
Capability Maturity Model Integration (CMMI) Model Framework (CMF)
|PMC||Project Monitoring and Control
|MA||Measurement and Analysis
|PPQA||Process and Product Quality Assurance
|OPD||Organizational Process Definition
is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. We’re going to talk about scrum as the most famous agile method, if you have participated in our CAT projects maybe you heard that expression before “let’s scrum”.
Analyze and adapt, it seems to be the motto of scrum. We need to analyze what has been received and adapt it to a real situation, and then analyze again. It’s based on the team and the ability of its member to plan, organize and manage their work. As iterative and incremental development , scrum divides the production process of any product into many cycles or (iterations), each iteration includes adding new feature to increase the functionality of the product.
Scrum has three primary roles: Product Owner represents the voice of the customer, Scrum Master he doesn’t manage the team but listens to the usual scrum and represents the connection between Product Owner and team, and team the people who are doing the work.
There’s another funny story divides the roles into two parts “pegs” who represents the three roles (Product Owner, Scrum Master, team) and “chicken” they are not part of the actual scrum process, but must be taken into account. They are people for whom the software is being built. You can check wikipedia to know the detailed story
CMMI or Agile?!!!!
It’s known that CMMI concentrates on process, sparing out technology and people, while agile focus on product. The most significant factor for Agile is that it’s adaptable for changes in requirements at any time while CMMI is considered rigid and can’t meet the rapid changes. Satisfaction of the customer is considered the milestone in agile and it’s guaranteed because customer is always there following and monitoring the result of each iteration of the product. Existence of the customer in each iteration leads to reduce the cost and defects of the product as you can handle and maintain the defected part of the product in early time. CMMI introduce a disciplined technique where team members have to follow rules, agile is comfortable technique provides an environment for creativity. CMMI is said to be more effective in the large organizations and large project scopes while Agile is more effective in small or medium scale. CMMI offers high stability and predictability, agile cares for high performance and speed.
CMMI and Agile, why not ?!!!!
It’s a new trend now in software development environment to spread peace between the two teams.Many researchers are trying to find a common ground between the two methodologies in order to make the best use of both of them. They claim that CMMI could be used as guideline and upper framework for improvement while applying agile practices on accelerate CMMI process area. As long as CMMI is used to evaluate the organization as a whole unit
while agile is one individual process development why not combine both of them? CMMI concentrates on software management and Agile focus on software development so integration could represent a strength point too.
To sum up, agile and CMMI are both the top techniques in software development each one of them has it’s strength and weakness points, so it’s up to you to adapt the suitable one of them for your application or you could adapt the new trend and integrate both of them.