Friday, September 18, 2009

Cash for Your Gadget Clunkers!

If you are like any other gadget freak you would have collected numerous gadgets over the years - cell phones, laptops, ipod, mp3 players etc.

With technology changing so fast, there is practically no where to sell the gadget clunkers! And you end up stockpiling them....

Well finally there is hope! Check this site out .....

Get Cash For Your Gadgets at gazelle.com!


Wednesday, July 15, 2009

Software Quality Process

In this article I will be talking about a very important process in the software development lifecycle- the Quality Process.

What Is Quality?
• IEEE says quality is the degree to which project deliverables meet requirements and customer expectations
• Quality is acheived when project objectives are met and your customer is satisfied
• The Handbook of Software Quality definition:
“Software quality is the fitness for use of the software product.

The Quality Process consists of Quality Planning, Quality Assurance and Quality Control activities.

Managing quality in a software project involves understanding quality expectations of your customer and proactively putting together a plan to meet those expectations. The "proactive plan" contains a number of elements -- the most important of which are the quality assurance and quality control activities that need to be performed.

Quality control and quality assurance are important concepts in the software development process, yet most project managers don't have a clear understanding of the the differences between these terms. It's actually pretty easy.

Quality Control refers to quality related activities associated with the creation of project deliverables. Quality control is used to verify that deliverables are of acceptable quality and that they meet customer requirements. Examples of quality control activities include testing the deliverables.

Quality Assurance however, refers to the process used to create the deliverables. It consists of those activities which prevent the introduction of defects (flaws, anomalies). It is the planned and systematic activities implemented in a quality system so that quality requirements for a product or service will be fulfilled. Examples of quality assurance include process checklists and project audits.

In other words, Quality control emphasizes testing of products to uncover defects, and reporting to management who make the decision to allow or deny the release. Whereas quality assurance attempts to improve and stabilize production, and associated processes, to avoid, or at least minimize, issues that led to the defects in the first place.

The most popular tool used to determine quality assurance is the Shewhart Cycle, developed by Dr. W. Edwards Deming. This cycle for quality assurance consists of four steps:

The four quality assurance steps within the PDCA model stand for:
· Plan: Establish objectives and processes required to deliver the desired results.
· Do: Implement the process developed.
· Check: Monitor and evaluate the implemented process by testing the results against the predetermined objectives
· Act: Apply actions necessary for improvement if the results require changes.

These steps are commonly abbreviated as PDCA.

PDCA is an effective method for monitoring quality assurance because it analyzes existing conditions and methods used to provide the product or service customers.

In Conclusion the goal of the Quality Process is to ensure that excellence is inherent in project deliverable. This means putting in place the processes which prevent the introduction of defects and testing the deliverable to make sure it meets the customers expectation.

Saturday, July 11, 2009

The Role of an Analyst

I've been in the software industry for a long time now (seen punch cards too!) Started off as a coder, taking requirements from the business and diving directly into coding without knowing or caring to know what the 'business' intent of the requirements were.

Back then, atleast where I was working, the role of an analyst was bundled with the programmer role - you must have heard of the programmer/analyst job description. I agree, I was not working for a big enterprise and the requirements were simple and pretty staight forward.

Then came my transition to a big company with various divisions. Here the requirements were complex and I had to learn the working of the business. To complicate things, systems in different divisions needed to talk to each other.

This is when my way of working changed. I no longer could jump straight into coding. I started questioning the new and changed functionality. I had to weigh the impact of the changes not only from my division's view but it's impact on other divisions too. Our team produced heaps of analysis and design documents, detailing each and every change, in a lexicon that the programming, quality control, business teams and others could understand.

The analyst in me was born!

The role of an analsyt in the IT industry is one of a multi-dimensional role, atleast it has been for me.

In short the role of an analyst is to ensure that the needs and expectations of the client are represented correctly in the final solution. In general, the analyst is responsible for ensuring that the business requirements are captured and documented correctly before the solution is developed and implemented.

I have seen different companies define the roles and responsibilities that an analyst plays in their organization, slightly differently. In some companies, this person might be called a Systems Analyst , Business Analyst, Business Systems Analyst, or a Requirements Analyst. The title depends on where the analyst is more aligned - towards the business or towards the system architecture, but the main responsibility of each is the same - to capture and document the requirements needed to implement a solution that meets the clients' business needs.

The analyst plays a key role in making sure that the overall project successfully meets the client needs. This includes:

  • Analyzing and understanding the current processes to ensure that the impact to the existing system(s) is well understood by the clients and the project team
  • Developing an understanding of how present and future business needs will impact the solution
  • Identifying the sources of requirements and verifying the validity of requirements
  • Developing a Requirements Management Plan and disseminating the Plan to all stakeholders
  • Identifying and documenting all business, technical, product and process requirements
  • Working with the client to prioritize and rationalize the requirements

  • Helping to define acceptance criteria for completion of the solution

Again, this does not mean that the analyst physically does all of this work. There are other people that contribute, including the QA, Development and Project Management teams. Reviews with these teams and the stakeholders are essential to keep the analysis honest to the requirements.

Analyst Skills
Generally, analysts must have a good set of technical skills, must understand the business domain that (s)he is working in, project management skills, people skills and soft skills to be successful. These include:

  • Good written and verbal communication skills
  • Recognize patterns using past experience and formulating solutions accordingly
  • Thinking 'outside the box'
  • Building strong and effective relationships with clients to develop joint vision for the project
  • Assisting other teams like Dev, QA, PM and UAT
  • Negotiating skills to build a final consensus on a common set of requirements from all clients and stakeholders.

Depending on the size and complexity of the project, the analyst may take on other responsibilities in addition to capturing and documenting the requirements. For instance, the analyst may assist the development team in visioning the user interface, or assist the quality assurance and UAT teams to develop test startegies or be the beta tester, or assist the project manager in the creation of the work breakdown structure of the Analysis Phase.

In conclusion, the Business / Systems Analyst performs a very important role in the software development lifecycle. A project that undergoes thorough analysis is more likely to result in a final product that meets or exceeds the client's expectation.