Methodologies of system development
CMM MODEL
CMM model is used to assess an organization procedures of developing software systems
against a scale of five process maturity levels. Each level ranks the organization according to
its standardization of processes in the subject area being assessed. The subject areas can be as
diverse as software engineering, systems engineering, project management, risk management,
system acquisition, information technology (IT) services and personnel management.
Levels of the CMM
There are five levels of the CMM:
• Level 1 - Initial
o Processes are usually ad hoc and the organization usually does not provide a
stable environment. Success in these organizations depends on the competence
and heroics of the people in the organization and not on the use of proven
processes. In spite of this ad hoc, chaotic environment, maturity level 1
organizations often produce products and services that work; however, they
frequently exceed the budget and schedule of their projects.
o Organizations are characterized by a tendency to over commit, abandon
processes in the time of crisis, and not be able to repeat their past successes
again.
o Software project success depends on having quality people.
• Level 2 - Repeatable
o Software development successes are repeatable. The processes may not repeat
for all the projects in the organization. The organization may use some basic
project management to track cost and schedule.
o Process discipline helps ensure that existing practices are retained during
times of stress. When these practices are in place, projects are performed and
managed according to their documented plans.
o Project status and the delivery of services are visible to management at
defined points (for example, at major milestones and at the completion of
major tasks).
o Basic project management processes are established to track cost, schedule,
and functionality. The minimum process discipline is in place to repeat earlier
successes on projects with similar applications and scope. There is still a
significant risk of exceeding cost and time estimate.
• Level 3 - Defined
o The organization’s set of standard processes, which is the basis for level 3, is
established and improved over time. These standard processes are used to
establish consistency across the organization. Projects establish their defined
processes by the organization’s set of standard processes according to tailoring
guidelines.
o The organization’s management establishes process objectives based on the
organization’s set of standard processes and ensures that these objectives are
appropriately addressed.
o A critical distinction between level 2 and level 3 is the scope of standards,
process descriptions, and procedures. At level 2, the standards, process
descriptions, and procedures may be quite different in each specific instance
of the process (for example, on a particular project). At level 3, the standards,
process descriptions, and procedures for a project are tailored from the
organization’s set of standard processes to suit a particular project or
organizational unit.
• Level 4 - Managed
o Using precise measurements, management can effectively control the software
development effort. In particular, management can identify ways to adjust and
adapt the process to particular projects without measurable losses of quality or
deviations from specifications. At this level organization set a quantitative
quality goal for both software process and software maintenance.
o Subprocesses are selected that significantly contribute to overall process
performance. These selected subprocesses are controlled using statistical and
other quantitative techniques.
o A critical distinction between maturity level 3 and maturity level 4 is the
predictability of process performance. At maturity level 4, the performance of
processes is controlled using statistical and other quantitative techniques, and
is quantitatively predictable. At maturity level 3, processes are only
qualitatively predictable.
• Level 5 - Optimizing
o Focusing on continually improving process performance through both
incremental and innovative technological improvements. Quantitative process-
improvement objectives for the organization are established, continually
revised to reflect changing business objectives, and used as criteria in
managing process improvement. The effects of deployed process
improvements are measured and evaluated against the quantitative process-
improvement objectives. Both the defined processes and the organization’s set
of standard processes are targets of measurable improvement activities.
o Process improvements to address common causes of process variation and
measurably improve the organization’s processes are identified, evaluated, and
deployed.
o Optimizing processes that are nimble, adaptable and innovative depends on
the participation of an empowered workforce aligned with the business values
and objectives of the organization. The organization’s ability to rapidly
respond to changes and opportunities is enhanced by finding ways to
accelerate and share learning.
o A critical distinction between maturity level 4 and maturity level 5 is the type
of process variation addressed. At maturity level 4, processes are concerned
with addressing special causes of process variation and providing statistical
predictability of the results. Though processes may produce predictable
results, the results may be insufficient to achieve the established objectives. At
maturity level 5, processes are concerned with addressing common causes of
process variation and changing the process (that is, shifting the mean of the
process performance) to improve process performance (while maintaining
statistical probability) to achieve the established quantitative process-
improvement objectives.
Waterfall method
In this model, the development process flows in only one direction. This means that a phase
cannot be started until the previous phase is completed. An output of one stage provides the
input to the next stage in the process.
Requirements
Analysis and Design
Coding and Testing
Implementation
Maintenance
Advantages Disadvantages
• It is linear and therefore very • Tester role only happen in the
easy to be implemented test phase
• Required amount of resources • Unable to make any changes
are minimal to middle or any phases after
• A documentation is produced the process started
at every stage of waterfall • Waterfall model is not
model development simultaneous
• After every major stage of • Only able to use when the
coding, testing is done to requirements are fixed
check whether the code • Unable to move back to the
running is correct or not previous phase
• If any mistake happen on
middle phases, should start
from the scratch
i. Joint application development (JAD):- in this method of system development, users,
managers and analysts work together. System requirements are reviewed in every stage
of development process. There is a lot of structured meetings between the user and the
analyst.
Disadvantages
One, the wrong problems can be addressed, the wrong people get invited to participate
and there are inadequate resources for solving problems. Two, you have to pay extra
close attention to who was picked to participate on a project. Three, you have to make
sure that everyone has an opportunity to voice their opinions and thoughts.
The JAD approach provides the following benefits:
•Accelerates design
•Enhances quality
•Promotes teamwork with the customer
•Creates a design from the customer's perspective
•Lowers development and maintenance costs
JAD achieves these benefits because of the following factors:
•The decision makers are all present.
•The facilitator keeps the group focused on the goals.
•Differing views are handled immediately.
•Most errors are caught in the Analysis and Design stages.
•The system design reflects the user's desires.
•Issues are resolved quickly.
•Assumptions are documented and understood.
•The process tends to gain momentum, not lose it.
ii. Prototyping. Is is the process of building a scaled down working version of the required
system, try to see whether it fits the user requirement, if it doesn’t, the prototype is
thrown away and another is developed or modifications are done.
Advantages of Prototyping Model
1) When prototype is shown to the user, he gets a proper clarity and 'feel' of the functionality of the
software and he can suggest changes and modifications.
2) This type of approach of developing the software is used for non-IT-literate people. They usually are not
good at specifying their requirements, nor can tell properly about what they expect from the software.
3) When client is not confident about the developer's capabilities, he asks for a small prototype to be built.
Based on this model, he judges capabilities of developer.
4) Sometimes it helps to demonstrate the concept to prospective investors to get funding for project.
5) It reduces risk of failure, as potential risks can be identified early and mitigation steps can be taken.
6) Iteration between development team and client provides a very good and conductive environment
during project.
7) Time required to complete the project after getting final the SRS reduces, since the developer has a
better idea about how he should approach the project.
Disadvantages of Prototyping Model:
1) Prototyping is usually done at the cost of the developer. So it should be done using minimal
resources. It can be done using Rapid Application Development (RAD) tools. Please note sometimes
the start-up cost of building the development team, focused on making prototype, is high.
2) Once we get proper requirements from client after showing prototype model, it may be of no use.
That is why, sometimes we refer to the prototype as "Throw-away" prototype.
3) It is a slow process.
4) Too much involvement of client, is not always preferred by the developer.
5) Too many changes can disturb the rhythm of the development team.
iii. Rapid application development (RAD):- in this approach of software development, it
utilizes prototyping method to delay producing a system design until after user
requirements are clear or well structured.
Advantages
• Flexible and adaptable to changes
• Can handle large projects without a doubt
• RAD realizes an overall reduction in project risk
• RAD realizes an overall reduction in project risk.
• Generally Rad incorporates short development cycles (According to the
wiki.answer.com)
Disadvantages
• Cant use for small projects
• Requires more resources and money to implement RAD
• All applications are not competible with RAD
• RAD is not appropriate hen technical risks are high
• Need both customer and developer commitments to complete a project. Otherwise
RAD wil fail
Evolutionary Model
Evolutionary model is also called as incremental model.In this kind
of development
first the core product is developed and is delivered to the
customer.But many of the known/unknown additional features are n
ot delivered. Some of these will be delivered to the
customer in the subsequent version.In the new version the
existing product may be modified and new
functionality may also be added.
ADVANTAGES
· Provides quickly an initial version of the system.
· Involves all development teams.
· Initial supports changing requirements.
· Risk analysis is better.
· Initial operating time is less.
· Better suited for large and mission-critical projects.
· During life cycle software is produced early which facilitates customer evaluation and
feedback.
DISADVANTAGES
· Quick fixes may be involved.
· The systems structure can be corrupted by continuous change.
· Invisible process not well-supported by documentation.
· Special tools and techniques may be necessary.
· The client may have the impression the first version is very close to the final product and
thus be less patient.
· Not suitable for smaller projects.
· Management is more complex.
· Highly skilled resources are required for risk analysis.
· Project's progress is highly dependent upon the risk analysis phase.