Subscribe by Email


Friday, June 19, 2009

What is Software Architecture ?

Software architecture is the hierarchical structure of program components and their interactions. One goal of software design is to derive an architectural rendering of a system. This rendering serves as a framework from which more detailed design activities are conducted.

Set of properties of architecture design are:

-Structural properties:
The architecture design defines the system components and their interactions.

- Extra-functional properties:
The architecture design should address how the design architecture achieves requirements for performance, capacity, reliability, adaptability, security.

- Families of related systems:
The architecture design should draw upon repeatable patterns in the design of families of similar systems.

Different architectural design methods:
- Structural models: represent architecture as an organized collection of components.
- Framework models: increase the level of design abstraction by identifying repeatable architecture design frameworks (patterns).
- Dynamic models: address the behavior aspects of the program architecture.
- Process models: focus on the design of the business or technical process.
- Functional models: can be used to represent the functional hierarchy of a system.


Sunday, June 7, 2009

Product Development - Getting requirements and prioritization - Part 2

The previous post talked about how the Product Management team generated requirements for the new version of the product. When this happens, the next most important task is to get an idea about how much effort getting all these requirements into the product will take. This is easier said than done. Doing effort estimation when the requirement is a stated 2 line statement can be really difficult, and requires some amount of refinement.
What would next happen in most cycles that I have seen is that the requirements are next discussed between the Product Management team and the engineering team (typically senior engineers along with the engineering manager); this process also envisages that the requirements are discussed to some extent in terms of what the workflow would be (keep in mind that this is not the right time of the cycle to start designing screens or dialogs or detailing the workflow other than a top level attempt - doing such an effort for most requirements would take too long and is difficult to attempt).
What really helps for this effort is to use some sort of documentation (I know people who use Word or use an internal Twiki implementation, or some other tool to capture such requirements in a medium level of detail (this is somewhat tricky, you need to have enough detail that you can take a rough guess at the effort estimate), and where you can break down the top level requirements into one step lower of requirements (example, if you need to add a new editing capability to a tool, the intermediate level requirements could be about having different file formats supported, or about different levels of editing such as having 3 quick buttons, or a slider to allow the user to have more control)).
Another element of this cycle is to press for prioritizing the requirements. It is incredibly important to make sure that prioritization is done, and there is a possibility that the product management team may have some hesitation in terms of doing the prioritization of these requirements. However, given my earlier statement about resourcing not being infinite for the product development cycle, setting a priority means that the team can focus on those requirements that are most critical, and then on the ones that are deemed less critical. The other advantage of forcing the priority is that this process forces the product management team to take a deep look at the features (including sub-features) in terms of whether this is something that will really benefit the product. This also ensures that resources are spent wisely.


Product Development - Getting requirements and prioritization - Part 1

I have in mind a series of posts that explains how the product development process works inside one of the teams for a product development company (based on previous experiences). However, this story has been interrupted in the past, and I believe I last posted on this topic many months back. I will try to be more regular on this topic in the future. Previous topics that I had written about were pre-release planning and metrics.
This topic will be about the meat of actually starting work on new feature development; the need is to actually define what the team needs to deliver in this new cycle. At this stage in the cycle, the only known facts are:
- It is decided that a new version will be required
- Dates are typically known for the release. Dates can be decided based on having to schedule for a certain condition of the market (in the US, to meet the enhanced marked season starting from Black Friday to Christmas, product development needs to conclude by a certain time so that the product can make its way through the retail chain and into the hands of retailers, large and small); dates can also be scheduled to meet projected customer needs (so if a software / hardware producer faces rivalry from Apple, it used to be that they would schedule release near MacWorld to prevent Apple from running away with the market)
- The number of resources are typically known. For most product development situations (unless there is the need to scale up to meet a competitor), the resources are not changed based on the number of features available. What would happen is that the features that can be implemented are decided based on the number of resources available.

So what happens next ? Well, what needs to happen next is that the product management team needs to decide on the features that are sought to be included in this release. If the product is something large such as the next version of Visual Studio C#, then the product management team would normally comprise of multiple product managers, each of whom would be tasked with a different area of the product. It is part of the responsibility of the product management team to decide on the features that are part of the consideration set for the release (and sources for new features include competitor analysis, user requests through forums, changes suggested through usability studies and through group sessions; there are also features that may correspond to changes in the market but not suggested by users - as an example, consider the case when a new technology related to online technologies hits the market and the product needs to have features to integrate with these new technologies or features - as an example, with the emergence of social networks such as Twitter, Facebook, MySpace, it may be needed for products to see how they would integrate with those).
So ends Part 1 of this post, I will carry it ahead with the next post.


Friday, May 29, 2009

Benefits of Six Sigma certification (contd ..)

The previous post outlined some of the benefits that going in for Six Sigma certification entails. Here are some more benefits that are available as part of this certification:

- Six Sigma results in significant cost savings. Six Sigma lets you get more details about what is coming next, lets you prepare in more detail, there are less defects and less wastage
- The philosophy of Six Sigma is to improve customer satisfaction by preventing defects, thus resulting in greater satisfaction.
- Six Sigma initiates the practice of much enhanced vigilance about philosophy, about getting more customer satisfaction; and lead to the companies defining more measures for every element of the production / service chain
- Six Sigma training ensures that personnel are fully aware of the tools and techniques needed to improve quality, and explain the concept of variance, metrics, processes, etc to company personnel in a way that they would not have understood earlier
- The training helps people understand where all wastage happens in various processes, automatically leading to some reduction in waste
- Statistically, a company that has implemented Six Sigma is found to spend < 1% of revenue on rework compared to 10% for a company having Four Sigma
- Capacity and output are improved. As a part of reducing wastage, you can produce more correct products from the same capacity, or generate a higher level of software productivity from the same people
- Communication within the various groups is improved through the need for having better processes for all groups


Benefits of Six Sigma certification

Six Sigma is a major certification to display the quality of processes followed within a company; and it is not only limited to displaying the quality. The process of seeking and getting six sigma certification means that the company is making a statement that it wants its processes to be better, with lesser defects (both for manufacturing and services), and more customer focus. So what are the benefits that Six Sigma presents to companies that are looking to adopt it:
- First is the commitment to quality. Aiming for Six Sigma means that all levels of the organization are seeking to increase their commitment to quality, which automatically boosts the quality.
- Reduction in defects (and the public statement about the reduction in defects (whether these be through manufacture of goods or provision of services) means that customers would be more satisfied. As they see that the defect levels have gone down, they will be more likely to do repeat business.
- Many customers only entertain suppliers with a high level of quality, and having Six Sigma means that a company is displaying a very high commitment to quality, enabling the company to qualify for all cases
- Increased employee satisfaction. Many employees may be somewhat lukewarm to the concept of a more disciplined and quality focused approach, but as they see their output being valued by customers, they are likely to be more satisfied with their work.
- Increase productivity and profitability. As the number of defects reduce, the cost per unit of the production will go down, and will lead to enhanced levels of profitability, contributing to higher overall profits for the company
- The company will attract better talent, since a number of employees will feel more comfortable with a company employing such a high level of quality
(contd..)


Tuesday, May 26, 2009

What is Six Sigma ?

Six Sigma is an important measure of the quality of a system, being adopted by many top-class corporations the world over such as GE. Six Sigma has spawned an industry of its own, in terms of experts who go to corporations and figure out how these companies can improve their processes so as to meet Six Sigma quality standards, and there are teachers who give instructions as to how to become a Six Sigma expert. Six Sigma was initially implemented by Motorola, and is now adopted the world over. Six Sigma is primarily used in manufacturing and business practices, and seeks to improve the quality of process outputs by identifying and removing the causes of defects (errors) and variations. Six Sigmas has its own infrastructure, such as - It uses a set of quality management methods, including statistical methods, and creates a special infrastructure of people within the organization ("Black Belts" etc.) who are experts in these methods. Six Sigma was originally developed as a set of practices designed to improve manufacturing processes and eliminate defects, but its application was subsequently extended to other types of business processes as well. In Six Sigma, a defect is defined as anything that could lead to customer dissatisfaction.
Sigma (the lower-case Greek letter σ) is used to represent the standard deviation (a measure of variation) of a statistical population. The term "six sigma process" comes from the notion that if one has six standard deviations between the process mean and the nearest specification limit, there will be practically no items that fail to meet specifications.

As a comparison of the various quality norms:
Short-term sigma levels correspond to the following long-term DPMO (defective parts per million opportunities) values:

* 1 sigma = 690,000 DPMO = 31% efficiency
* 2 sigma = 308,000 DPMO = 69.2% efficiency
* 3 sigma = 66,800 DPMO = 93.32% efficiency
* 4 sigma = 6,210 DPMO = 99.379% efficiency
* 5 sigma = 230 DPMO = 99.977% efficiency
* 6 sigma = 3.4 DPMO = 99.9997% efficiency

Put another way, this reads as “3.4 defects per million opportunities to make defects”. This is a very high level of quality, and it takes a lot of effort, hard work, and process improvements to reach this level. Six Sigma is also being implemented by many software development companies for their projects.


Sunday, May 24, 2009

Data Flow Diagram - Some template locations

There are numerous locations on the internet where data flow templates can be found. Here are a few of the sites where you can find and use DFD templates.

Flowcharttools (depiction of what a template should look like) - Click here

Sample of what a Data Flow Diagram looks like (click here)

Sample DFD at docstoc (click here)

Samples at Gene Sarson (click here)

Templates at smartdraw (click here)

Example of DFD at conceptdraw (click here)

Visio and Word templates for DFD (click here)

Flowchart samples at edrawsoft (click here)


Facebook activity