Subscribe by Email


Showing posts with label Improvement. Show all posts
Showing posts with label Improvement. Show all posts

Monday, March 4, 2013

What are Software Process Improvement resources?


A supportive and effective infrastructure is required for facilitating the coordination of various activities that place during the course of the whole program. In addition to these qualities the infrastructure should be quite flexible so as to be able to support the changing demands of the software process improvement with time. 
Resources for this program include:
  1. Infrastructure and building support
  2. Sponsorship
  3. Commitment
  4. Baseline activities
  5. Technologies
  6. Coordinate training resources
  7. Planning expertise
  8. Baseline action plan and so on.
- When this program is initiated, a primitive infrastructure is put in to place for the management of the activities that would be carried out by the organization under SPI. 
- The resources mentioned above are also the initial accomplishments that tell how well the infrastructure has been performing. 
- It is the purpose of the infrastructure to establish a link between the program’s vision and mission, to monitor it and guide it and obtaining resources and allocating them.
- Once the SPI program, a number of improvement activities will be taking place across the different units of the organization. 
- These improvement activities cannot be performed serially rather they take place in parallel. 
- The configuration management, project planning, requirements management and reviews etc. are addressed by the TWGs (technical working groups). 
- But all these activities are tracked by the infrastructure.
- Support for the following issues must be provided by the infrastructure:
  1. For a technology that is to be introduced.
  2. Providing sponsorship
  3. Assessment of the organization impact
- As the program progresses, the functions to be performed by the infrastructure increase. 
- There are 3 major components of the SPI program:
  1. SEPG or software engineering process group
  2. MSG or management steering group
  3. TWG or technical work group
- It is third component from which most of the resources are obtained including:
  1. Human resources
  2. Finance
  3. Manufacturing
  4. Development
- However, the most important is the first one and is often called the process group. 
- It provides sustaining support for the SPI and reinforcing the sponsorship. 
The second component i.e., the MSG charters the SEPG.
- This is actually a contract between the SEPG and the management of the organization. 
- Its purpose is to outline the roles and the responsibilities and not to forget the authority of the SEPG. 
- The third component is also known as the process improvement team or process action team. 
- Different work groups created focus on different issues of the SPI program. 
- A software engineering domain is addressed by the technical work group. 
- It is not necessary for the TWGs to address the technical domains; they can address issues such as software standardization, purchasing, travel reimbursement and so on. 
- The team usually consists of the people who have both knowledge and experiencing regarding the area under improvement. 
- The life of TWGs is however finite and is defined in the charter. 
- Once they complete their duties, they return back to their normal work. 
- In the early stages of SPI program, the TWGs might tend to underestimate the time that would be required for the completion of the objectives assigned to them. 
- So the TWGs have to request to the MSG for allotting them more time. 
- Another important component could be the SPIAC or software process improvement advisory committee. 
- This is created in organizations where there are multiple functioning SEPGs. 


Friday, March 1, 2013

What is an Agile Process Improvement?


A process improvement program is successful only when the meaning of the word ‘process’ is clearly understood. Process means work. So when one improves, the other one also improves. The quality of the software depends a lot on the process. Whenever a change is introduced, a temporary drop in performance is always recorded. In most cases what happens is that the organization stops the implementation of changes fearing the disruption in the normal work since so much effort is required. To avoid such situations, the changes need to be adaptive. It is the agile process improvement that makes this possible. You might say that such a way of iterative improvement is not new. Well, the agile techniques introduce discipline in the whole program.


Stages of Agile Process Improvement

The following are the stages of the agile process improvement:
  1. Initiating:
Ø  Stimulus of change
Ø  Set context
Ø  Build sponsorship
Ø  Charter infrastructure
  1. Diagnosing:
Ø  Characterize current and desired states
Ø  Develop recommendation
  1. Establishing:
Ø  Set priorities
Ø  Develop approach
Ø  Plan actions
  1. Action:
Ø  Create solution
Ø  Test solution
Ø  Refine the solution
Ø  Implement solution
  1. Learning:
Ø  Analyze
Ø  Validate
Ø  Propose future actions

- The improvement cycles are meant to be followed systematically so that the results might be obtained in time ranging from 2- 6 weeks.
- The whole process lets you maintain a balance the workload as well as the improvement. 
- The flow of the process is as follows:
  1. Prioritized list of improvements
  2. Detailed plan for the current cycle
  3. Implemented improvement
  4. Feedback
- After this process, the following becomes possible for the organization:
  1. Identification and resolving of the issues earlier in the cycle.
  2. Learning process regarding how to tackle difficulties and working of this process.
  3. Adaption to the business needs that keep changing.
  4. Giving response to the feedback.
- The sponsor holds the responsibility for prioritizing the improvement backlog at the start of each sprint. 
- Also, he is the one responsible for ROI. 
- Prioritization is a good tool for the sponsor to direct the change. 
- Using prioritization, the goals and feedback can be revised from quality assurance. 
- A focus can be kept on the benefit received from each improvement cycle. 
PPQA deploys and evaluates the improvement in organization in every sprint. - The improvement package consists of 4 sprints namely:
  1. Prototyping
  2. Piloting
  3. Deploying
  4. Evaluating
- Active participation and leadership is required for a change to take place. 
- An endorsed vision and status quo is required for the beginning of the process. 
- Both of these are established via SCAMPI and CMMI. 
- The change is led by the management on an everyday basis.
- An excellent description is provided by the generic practices of CMMI for the leadership purpose.
- Similarly participation is a key element that is facilitated by the change team. - A vision is required for initiating the improvement project. 
- The initial improvement backlog is defined by 3 things namely scrumMaster, change team and the work owner i.e., the sponsor all based up on an assessment. 
- The organization is facilitated by the change team.
- With each sprint a tangible improvement is delivered. 
- The change is led by the management in a sprint.
- The effect introduced by the change is evaluated at the end of each sprint by PPQA. 
-The new improvements are defined by the work-owner who is also responsible for adding those in to the backlog of improvements and prioritizes it.
-Commitment is supported at the end of the sprint by appraisal.
-The improvements can also be continuously integrated in to the organization’s way of working. 


Monday, February 25, 2013

What is meant by Software Process Improvement?


About Software Process Improvement

- SPI or Software Process Improvement is a program that has been developed to provide guidance for the integrated long – range plan for the initiation and management of the SPI program. 
- SPI is based up on a model called the IDEAL model which has the following 5 major stages:
  1. Initiating
  2. Diagnosing
  3. Establishing
  4. Acting
  5. Leveraging
- These 5 major steps form a continuous loop. 
- However, the time taken for the completion of one cycle varies from one organization to other. 
- Depending on the available resources an organization must be able to decide whether or not it would be able to commit to software process improvement. 
SPI requires many activities to be carried out in parallel to each other. 
- Some part of the organization may take care of the activities in one phase while others take care of the other phase activities.
- Practically, the boundaries of the various stages in a software process improvement are not clearly defined. 
- The infrastructure also plays a great role in the success of the SPI. 
- The value added to SPI by infrastructure just cannot be underestimated. 
- It provides a great help in understanding its roles.

About Initiating Phase

- As the name indicates this is the starting point of the process. 
- This stage involves setting up of the improvement infrastructure. 
- Then the infrastructure’s roles and responsibilities are defined. 
- The resources are checked for availability and assigned.
- Finally, an SPI plan that will guide this initiating phase as well as the other higher stages. 
- It is during this stage that the goals of the software process improvement are defined and established based up on the organization’s business needs. 
- During the establishing phase these goals are further refined and specified.
Two components are typically established namely:
Ø  A software engineering process group or SEPG
Ø  A management steering group or MSG 

About Diagnosing Phase

- In this stage, the organization as per the SPI plan starts. 
- This stage serves as foundation for the stages that will follow. 
- The plan is initiated keeping in view the vision of the organization along with its business strategy, past lessons, current business issues and long term goals. 
- Appraisal activities are carried out so that a baseline of the current state of the organization. 
- The results of these activities are reconciled with the existing efforts so as to be included in the main plan.

About Establishing Phase

 
- In this stage the issues to be addressed by the improvement activities are assigned priorities.
- Also, the strategies for obtaining a solution are also pursued. 
- The draft of the plan is completed as per the organization’s vision, plan, goals and issues. 
- From general goals, measurable goals are developed and put in to the final SPI plan. 
- Metrics essential to the process are also defined.

About Acting Phase

 
- Solutions addressing the improvement issues discovered in the previous stages are created and deployed in and out of the organization. 
- Other plans are developed for the evaluation of the improved processes.

About Leveraging Phase

 
- This stage is led by the objective of making the next pass through the process more effective. 
- By this time the organization has developed solutions and metrics concerning performance and achievement of the goals. 
- All this data obtained is stored in a process database that will later serve as source information for the next pass. 
- Also, this information would be used for the revaluation of the strategies and methods involved in the SPI program.
- Software process improvement activities work with two components namely, the tactical component and the strategic component. 
- The former is driven by the latter that is based up on the needs of the organization. 


Saturday, December 22, 2012

What is Rational Synergy Tool?


A task based configuration management tool was released by IBM called the Rational Synergy Tool. 

What does Rational Synergy Tool do?

- It enhances the development of the software systems and applications. 
- The development process was enhanced in terms of speed and ease by making actual improvements in the collaboration as well as communication among the team members.
- Rational synergy tool prepares a release management platform which is unified change and configurable. 
- It then brings the distributed and global team on this platform. 
- Thus, it helps in accelerating the build management and release processes which in turn amplifies the efficiency of the limited resources that are used in the development process. 
- It also plays great role in the unification of the distributed development teams. 
- All these factors contribute to the improvement of the performance of WAN or wide area network which is important for distant sites and global workers. 
- This has enabled the team members staying in different parts of the world to come together on work on a central data base that is provided by the rational synergy tool over the WAN. 
- This aids in the reduction of the need of simplification of the complex challenges in the development and replication. 
- The Rational Synergy Tool provides a complete solution to assist the organizations in improving the quality of their distributed development processes. 
- The environment provided by the rational synergy tool includes support for both the distributed as well as the centralized modes. 
- This tool comes with a powerful engine which drives the collaboration development, component based development and software reuse. 
- It assists you in achieving the desired resilience targets and scalability factors by integrating with the IBM rational and other partners. 
- The IBM rational synergy tool helps you with the following tasks:
  1. Configuration management of the end to end tasks.
  2. Baselines management support
  3. Advanced release management support
  4. Works as a single repository solution by integrating with the IBM rational change for software configuration and change management.
  5. Provides advanced support for parallel variants and development.
  6. Reduces the productivity and overhead for the software developers.
  7. Supports component based development
  8. Provides advanced SCM needs
  9. Supports global and distributed development.
- IBM rational synergy tool helps you to gain full control over the maintenance activities, document development and software. 
- No matter what size is your team, the rational synergy tool supports all from small to large development teams. 
- Also, in which environment your team is working i.e., whether in a distributed environment or a heterogeneous environment, it really does not matter for rational synergy, it supports all. 
- The process of maintenance of the multiple versions of the files in an archive is all managed by the rational synergy. 
- There are other tools available such as RCS or PVCS or SCCS which do control file versions but they are void of many benefits such as the following:
  1. Rule based configuration update
  2. Product reproducible
  3. Work flow management and so on.
- There is a lot of difference between the version control tools and rational synergy. 
- But the users who have experience with these version control tools should not find it much difficult to make transition to rational synergy. 
- The rational synergy comes with 2 types of interfaces namely:
  1. Synergy classic: This interface comes with CM capabilities which are important for admins.
  2. Rational synergy: This interface has been developed exclusively for the users who are build managers and developers.
- The rational synergy’s command line interface is applicable for both the UNIX and windows platforms. 
- Rational synergy as a configuration management tool provides a unique and easy way for the creation of a baseline. 


Wednesday, February 15, 2012

What are different aspects of bucket testing?

WHAT IS MEANT BY BUCKET TESTING?

1. Bucket testing is often known by many other names like split testing and A/ B testing.
2. Bucket testing is often considered to be a market testing methodology.
3. The bucket testing methodology is used to compare a variety of baseline control samples with the single variables test samples.
4. This is done for improving the responding rates of the whole mechanisms.
5. Bucket testing is a direct mail strategy which is classic in nature.
6. Bucket testing has been employed in the interactive space to make use of features like landing pages, emails and banner ads etc.
7. Improvements can be made by testing the elements such as following:
- Layouts
- Colors
- Images and
- Text
8. One cannot expect the other elements to show the same improvement.
9. By observing the outcomes of the tests one can analyze that which elements are effective at making great improvements.
10.They are easy to identify.
11.The tester has to provide different samples of the test and controls in order to check out that which single variable is responsible for the improvement.
12.In order to make the test more effective, it has to be distributed to a sufficient audience such that any meaningful difference can be pointed out between the features and the controls.
13.Bucket testing is completely different from the multi- variate testing.
14.The multi- variate testing employs the statistical modeling using which many variables can be tested in the samples.

Today there are several companies that make use of this bucket testing like:
- Zynga
- Netflix
- Google
- Microsoft
- BBC
- Amazon. Com and
- eBay
and many other companies are using this bucket testing to make effective marketing decisions and this method is gaining popularity.

It has proven to be a good methodology for maximizing the profits. Other than this, the following companies are also making use of the bucket testing tools:
- Omniture test
- Omniture target
- Google web site optimizer
- Personyze

TYPES OF BUCKET TESTING

With improving technology many types of bucket testing have been developed and are mentioned below:
1. Multi- variate Testing
this testing is a designed experiment and has been developed whenever isolation of effects is required from two or more than two factors is required.

2. Multi- variant Testing
This type of testing is similar to the multi- variate testing.

3. A/ B/ N Testing
This type of bucket testing involves more than two options or cells denoted by ‘N’.

4. A/ B/.. Z Testing
This type of testing is same as the A/ B/ N testing as described above.

5. A/ B/ A Testing
- This type of bucket testing involves only two variables but in repetition.
- One of the options or cells is repeated.

USES AND ADVANTAGES OF BUCKET TESTING

- Bucket testing is being largely used by the web sites which cater to more traffic.
- It is employed for evaluating any feature of a web site usually exposing it to a small part of the total audience.
- Then the effects on the audience are measured.
- Earlier bucket testing was used as the uniform independent sampling of the whole audience.
- This sampling was considered to be enough for producing an audience that can be used to generate a statistical data corresponding to the whole audience.
- Bucket testing holds good for social networking sites also like for example, testing a new feature that will affect only the user and his/ her friends.
- This type of testing involves much of the complex processes.
- In such a case uniform sampling method is not going to work.
- The sample should be constructed as per the structure of the user’s account.
- This is in a way helps in overcoming the challenges of the combination problems.


Monday, August 29, 2011

What are different process metrics and software process improvement?

Process metrics have long term impact. Their intent is to improve the process itself. These metrics are collected across all projects. To make an improvement in any process, develop metrics based on attributes and then use these attributes as indicators leading a strategy for improvement.

The three factors people, product and technology are connected to a process which sits at the center. The efficiency of a software process is measured indirectly. A set of metrics is derived based on the outcomes derived from process. These outcomes include error measures that are uncovered before the release of software, defects reported by end users and other measures. The skill and motivation of the software people doing the work are the most important factors that influence software quality.

Private metrics are private to an individual and serve as an indicator for individual only. It includes defect rates by individuals and software components and the errors that are found during development. Private data can serve as an important driver as individual software engineer works to improve.

Public metrics assimilate the information that was private to individuals and teams. Calendar times, project level defect rates, errors during formal technical reviews are reviewed to uncover indicators improving team performance.

Software process metrics benefits the organization and improve its overall level of process maturity.


Wednesday, June 1, 2011

Steps to become a better software tester - can do these over a period of time - Part 3

In this series of posts (Improving testing skills), I have been writing about how to improve the testing capabilities of tester, and have presented some points that could help a developer. In this context, here are some points that could help the tester to improve their skills.
- The tester needs to improve their knowledge of the product. I once had a case where the tester had a series of test cases to execute and did not really have the time to get detailed knowledge of the product. So when there was a change in design and features, and the test cases had to be re-done, the tester did not have the knowledge to quickly make the changes. It took time, and the tester had to face flak because of the time involved, and was also berated for a poor knowledge of the product (and there was really no defence of this lack of knowledge).
- Domain knowledge of the area. A skilled tester will make the time to learn about the domain in which they are testing. For example, if an application is being written for the banking domain, then it would help for the tester to get a quick understanding of the concepts of the banking domain, especially the specific areas which the application is expected to cover. In my previous experience, I have seen that this helps the tester ask informed questions, and also be able to better review the test cases for completeness.
- The tester needs to focus on the more critical parts of the application first, and check those areas first in terms of testing. It is a reality that no application is 100% bug free (or rather, the amount of effort and cost required to make an application bug free is exorbitant), and hence it is key that the tester has found more of the bugs in the application that have a high priority and severity, and the bugs that are remaining in the application are less severe, and have a lower customer impact.


Monday, May 30, 2011

Steps to become a better software tester - can do these over a period of time - Part 2

In the previous post (Improve testing skills), I had provided some steps in how a person could be a better tester. In this post, I will continue on this line and provide some more points on how a person could improve their testing skills.
- Being able to explore the boundaries of what has been provided. So, for example, an average tester will test only as per the test cases provided while skilled testers start to feel whether the test cases are adequate or not, when required, they provide updates that add to the test case coverage to ensure that the overall product quality increases. Such efforts are noticed, and in many organizations, there is measurement of the amount of such efforts that are made by individuals.
- Try and feel like the end use customer. A lot of testers start to feel much closer to the Dev teams, to the individual dev who wrote the code that they are testing, and so on. Instead, even while maintaining a relationship with the developer, they need to feel like the end customer; looking at the workflows that the customer uses, seeing things from their view point. Such testing is much more effective in catching defects that would be faced by the end user and lead to a much better impression of the product in the perception of the customers.
- Relationship with the developer and integration with the development phase. During the design and development phase of the product, the tester should be fully involved. The tester can bring their own value added to the product development strategy, and learn a lot more about the reasons why the design has been done in the manner in which it is done. During the development phase, the tester can also learn about which area does the developer feel that more emphasis need to be done, which area was written in a hurry or is more complicated, and so on. Such knowledge gives the tester a much better impression of the product and leads to a much better skill at testing the product.


Steps to become a better software tester - can do these over a period of time - Part 1

If you are a good software tester, it shows in your career graph. In most cases, the manager of the software testing team will be able to recognize when a tester prepares extensive test cases and covers as much of the testing field as anybody can. Further, when you take feedback from the development team, they are also able to provide feedback that such a person is indeed the one with whom they would like to work, since such a skilled tester will be able to ensure that their feature is as rock solid as possible (such a tester would have identified as many bugs as possible in their feature, and early).
Anybody can be a good tester, as long as the person is determined to make improvements and consistently follow a number of steps. Do these, improve yourself, and you will find that your popularity, your prestige will go up, and so will the respect that other people have for you.
- When such a tester reports defects, provide as much relevant information as possible. The worst kind of tester is somebody who reports just the exact defect; if you want improvement, report the consistency with which the defect happens; report the steps that lead to the defect, report any input and output parameters. When a developer receives all such information, it helps them to reproduce the defect easily which in turn leads to faster fixing of the defect. If a tester is uncooperative or does not provide all this information, they will find that developers hesitate to work with them.
- Note whether the defect could be because of the system configuration. I have seen this many times. When the tester finds a defect, the better ones are able to estimate whether this is a defect in the functionality, or could have happened because an earlier build was on the system or there was some other similar problem. In such cases, the skilled tester will try the problem on another system and see whether it can be reproduced there as well.
- Overall improving the system. When somebody designs a set of processes, they do it based on some experience as well as how they would like the system to work. When somebody works as per the system, they can always find improvements in how they would like the system to work. A good tester will be appreciated by their manager if they can find improvements in the system and processes. This leads to them developing a reputation for somebody who thinks, which is a very useful reputation to develop.


Sunday, March 27, 2011

What is Quality and what are different perspectives used in understanding quality?

Quality is the total characteristic of an entity to satisfy stated and implied needs. Three perspectives are used in understanding quality:
- quality of the product
- quality of the process
- quality in the context of the business environment.

Quality of the Product
- The quality of the product has a different perspective for different people.
- End users assume that the software has quality if it gives what they want, when they want it, all the time. The ease of use and is also a important criterion for end users.
- For software engineers, they take a look at the internal characteristics rather than the external.

Quality of the Process
As software engineers, we valuethe quality of the software development process. Process guidelines suggests that byimproving the software development process,we also improve the quality of theresulting product. Common guidelines of process include Capability Maturity Model Integration (CMMI),ISO 9000:2000, Software Process Improvement and Capability Determination (SPICE).

Quality in the Context of Business Process
Quality is viewed in terms of the products and services being provided by the business in which the software is used. Improving the technical quality of the business process adds value to the business, i.e., technical value of thesoftware translates to business value.

To address quality issues:
- use quality standards.
- understand people involved in development process.
- understand the systematic biases in human nature.
- commit to quality.
- manage user requirements.


Friday, March 18, 2011

Team Software Process (TSP) - Framework Activities and Phases

Team Software Process (TSP) scripts define elements of the team process and the following framework activities:

- LAUNCH
It reviews course objectives and describes the TSPi structure and content. It assigns teams and roles to students and describes the customer needs statement. It also establishes team and individual goals.
- STRATEGY
It creates a conceptual design for the product and establishes the development strategy and decide what will be produced in each cycle. Strategy makes initial size and effort estimates and establish a configuration management plan, reuse plan and risk management.
- PLAN
It estimates the size of each artifact to be developed. Planning also identifies tasks to be performed, estimates time to complete each task;, assign tasks to team members, make a weekly schedule for task completion and make a quality plan.
- REQUIREMENTS
Requirements analyze need statements and interview the customers, specify and inspect the requirements and develop a system test plan.
- DESIGN
It creates a high-level design, specify the design, inspect the design, develop an integration test plan.
- IMPLEMENT
Implementation uses the PSP to implement modules/units, creates detailed design of modules/units, reviews the design, translates the design to code, review the code,
compile and test the modules/units and analyze the quality of the modules/units.
- TEST
Testing builds and integrate the system. It conducts a system test and produce user documentation.
- POSTMORTEM
It conducts a postmortem analysis, writes a cycle report and produce peer and team evaluations.

TSP makes use of a wide variety of scripts, forms, and standards that serve to guide team members in their work. Scripts defines specific process activities and other more detailed work functions that are part of the team process.
TSP recognizes that the best software teams are self directed. Team members set project objectives, adapt the process to meet their needs, have control over schedule, and through measurement and analysis of the metrics collected, work continually to improve team's approach to software engineering.


Team Software Process (TSP) - Strategy and Objectives

The goal of Team Software Process (TSP) is to build a self directed project team that organizes itself to produce high quality software. The objectives of TSP are:
- The TSP is intended to improve the levels of quality and productivity of a team's software development project.
- Using TSP, organizations establish a mature and disciplined engineering practice that produces secure, reliable software in less time and at lower costs.
- Accelerate software process improvement by making CMM level 5 behavior normal and expected.
- Show managers how to coach and motivate their teams and how to help them to sustain peak performance.
- Build self directed teams that plan and track their work, establish goals, and own their processes and plans. To form a self directed team, you must collaborate well internally and communicate well externally.

A self directed team should do the following:
- understand overall goals and objectives.
- defines roles and responsibilities for each team member.
- tracks quantitative project data.
- identifies a team process appropriate for project.
- implementing strategy for the process.
- defines local standards.
- assess risk and reacts to it.
- tracks, reports and manages project status.

TEAM SOFTWARE PROCESS (TSP) STRATEGY


- Provide a simple process framework based on the PSP.
- Use modest, well-defined problems.
- Develop products in several cycles.
- Establish standard measures for quality and performance.
- Provide detailed role definitions.
- Use role and team evaluations.
- Require process discipline.
- Provide guidance on teamwork problems.


Tuesday, January 18, 2011

Software Six Sigma for Software Engineering

Software Six Sigma is a strategy to enhance and sustain continuous improvements in software development process and quality management. It uses data and statistical analysis to measure and improve company's performance by eliminating defects in manufacturing and service related processes.

ATTRIBUTES OF SIX SIGMA


- genuine metric data.
- accurate planning.
- real time analysis and decision support by the use of statistical tools.
- high quality product.
- software improvement costs and benefits.

STEPS IN SIX SIGMA METHODOLOGY


- Customer requirements are defined, project goals via well defined methods.
- Quality performance is determined by measuring existing process and its output.
- Analyzing the defect metrics.
- Process improvement is done by eliminating the root causes of defects.
- Process control to ensure changes made in future will not introduce the cause of defects again.
These steps are referred to as DMAIC(define, measure,analyze,improve and control) method.

- Design the process to avoid the root causes of defects and to meet customer requirements.
- Verify the process model will avoid defects and meet customer requirements.
This variation is called DMADV(define, measure, analyze, design, and verify) method.


Saturday, May 1, 2010

Process Areas in Capability Maturity Model (CMM)

The Capability Maturity Model Integration (CMMI), based process improvement can result in better project performance and higher quality products.
A Process Area is a cluster of related practices in an area that, when implemented collectively, satisfy a set of goals considered important for making significant improvement in that area.
In CMMI, Process Areas (PAs) can be grouped into the following four categories to understand their interactions and links with one another regardless of their defined level:
Process Management : It contains the cross-project activities related to defining, planning, resourcing, deploying, implementing, monitoring, controlling, appraising, measuring, and improving processes. Process areas are :
- Organisational Process Focus.
- Organisational Process Definition.
- Organisational Training.
- Organisational Process Performance.
- Organisational Innovation and Deployment.

Project Management : The process areas cover the project management activities related to planning, monitoring, and controlling the project. Process areas are :
- Project Planning.
- Project Monitoring and Control.
- Supplier Agreement Management.
- Integrated Project Management for IPPD (or Integrated Project Management).
- Risk Management.
- Integrated Teaming.
- Integrated Supplier Management.
- Quantitative Project Management.

Engineering : Engineering process areas cover the development and maintenance activities that are shared across engineering disciplines. Process areas are :
- Requirements Development.
- Requirements Management.
- Technical Solution.
- Product Integration.
- Verification.
- Validation.

Support : Support process areas cover the activities that support product development and maintenance. Process areas are :
- Process and Product Quality Assurance.
- Configuration Management.
- Measurement and Analysis.
- Organisational Environment for Integration.
- Decision Analysis and Resolution.
- Causal Analysis and Resolution.


Monday, April 26, 2010

Benefits of Capability Maturity Model (CMM)

Quality is the very essence of any organization. An individual is known by the level of quality he/she possesses. Similarly in an organization, be it a products or services company, the organisation is identified in the market by the level of quality it maintains.
The CMM provides software organizations with guidance on how to gain control of their processes for developing and maintaining software and to gradually evolve towards a culture of software engineering and management excellence.

Fundamentally speaking CMM helps an organization in two ways :
- Firstly, CMM instills definite practices, which results in an increase in profitability.
- Secondly and most importantly is the immediate change it brings about in an organization's culture and mentality, thereby helping it to climb up the CMM ladder.

The advantages of moving up the CMM ladder are evident in a large number of organizations :
- A shift from reactive to proactive management.
- Helps build a skilled and motivated workforce.
- Cuts cost in development and support system.
- Shortens delivery schedules and improves delivery of requirements.
- Results in customer satisfaction.
- Improves quality of software products.
- Induces robustness.
- Improves management decision-making.
- Introduces newer technology thus creating competitive advantages.

At Level 1 - Initial level : No benefits, inconsistency, schedule and budget overruns and defective applications.
At Level 2 - Repeatable level : By achieving CMM Level 2, projects can set realistic expectations, commit to attainable deadlines and avoid the Level 1 "death marches" on nights and weekends that produce excessive defects.
At Level 3 - Defined level : At Level 3, IS organizations use historical measures describing the performance of a common application development process as the basis for their estimations.
At Level 4 - Managed level : Predictable results. Knowledge of factors causing variance and reuse.
At Level 5 - Optimizing level : Continuously targeting improvements results

Many of the initial benefits from CMM-based improvement programs result from eliminating rework.


Tuesday, February 2, 2010

How to improve disk reliability ?

Disk used to be the least reliable component of the system. They still have relatively high failures and it causes loss of data and significant downtime. It takes hours to recover from a disk crash. Improving the reliability of disk systems is very important and several improvements in disk-use techniques have been proposed.
To improve speed, disk stripping uses a group of disks as one storage unit. Each data block is broken into several sub blocks, with one sub block stored on each disk. The time required to transfer a block into memory improves because all the disks transfer their sub blocks in parallel. If the disks have their rotation synchronized, the performance improves because all the disks become ready to transfer their sub blocks at the same time rather than waiting for the slowest rotational latency. This organization is usually called a redundant array of independent disks (RAID).

The simplest RAID organization, called mirroring or shadowing, just keeps a duplicate copy of each disk. This solution is costly but it is about twice as fast when reading, because half of the read requests can be sent to each disk.
Block Interleaved Parity, another RAID organization uses much less redundancy. A small fraction of disk space is used to hold parity blocks. Each bit position in the parity block would contain the parity for the corresponding bit positions in each of the 8 data blocks. If one disk block becomes bad, all its data bits are essentially erased but can be recomputed from other data blocks plus parity block.

A parity RAID system has the combined speed of multiple disks and controllers. But the performance is an issue during writing, because updating any single data sub block forces the corresponding parity sub block to be recomputed and rewritten.


Friday, June 19, 2009

Refactoring - Code improvement without changing behavior

Refactoring is the process of changing a software system in such a way that it does not alter the external behaviour of the code/design, yet improves its internal structure. When the software is refactored, the existing design is examined for redundancy, unused design elements, inefficient or unnecessary algorithms, poorly constructed or inappropriate data structures, or any other design failure; once this inspection is done, then the results are analysed for getting a more improved design.
If you were to ask for a simple explanation, then code refactoring means that you 'clean up' the code. Refactoring is not meant to be used for changes where you added new functionality, or fixed bugs, or something similar. It is in principle used for analysing code to remove dead code, to make the code more understandable, and modify the internal structure and design (maybe to make the code more elegant, as well as to follow some standard code processes and layouts).
Why do refactoring ? The process intends to make code easier to read and comprehend, and also to be able to make modifications to it. Given the amount of time that code remains in-use, and with the people handling the code not remaining constant, it is important that the code be easy to understand and maintain. Sometimes people take on the task of improving the code in order to fix defects or solve other design issues, but that is not refactoring.
A common method used within refactoring is to change the definition of variables, such as when a non-meaning variable such as 'j' is instead changed to actually be closer to the real use of the variable, say 'ItemWeight'. This makes it easier for somebody else to quickly read the code and comprehend. This however, has its own set of complications since the same variable may be used in many different parts of the application, and the person making the modification may need to study each usage before making the change.


Facebook activity