Monday, December 6, 2010

Simplified Software Metrics - For starters 001

Software metrics are an integral part of the modernization in software engineering. More and more customers are specifying software and/or quality metrics reporting as part of their contractual requirements. Many Industry standards like ISO 9000 and industry models like the Software Engineering Institute’s (SEI) Capability Maturity Model Integrated (CMMI®) include measurement. So organizations are defining & using these metrics to better track, control and predict software projects, processes and products.

The term software metrics means different things to different people. When we buy a book or pick up an article on software metrics, the topic can vary from project cost and effort prediction and modeling, to defect tracking and root cause analysis, to a specific test coverage metric, to computer performance modeling. As software engineers prefer the activity based view taken by Goodman. He defines software metrics as, "The continuous application of measurement-based techniques to the software development process and its products to supply meaningful and timely management information, together with the use of those techniques to improve that process and its products." an expansion of this definition to include software-related services such as installation and responding to customer issues. Software metrics can provide the information needed by engineers for technical decisions as well as information required by management.

If a metric is to provide useful information, everyone involved in selecting, designing, implementing, collecting, and utilizing it must understand its definition and purpose. Let's ponder on steps to selecting, designing, and implementing software metrics in order to insure this understanding.

Some Basic Measurement Theory The use of measurement is common. We use measurements in everyday life to do such things as weigh ourselves in the morning or when we check the time of day or the distance we have traveled in our car. These repetitive measurements are used extensively in most areas of production and manufacturing to estimate costs, calibrate equipment, assess quality, and monitor inventories. Science and engineering disciplines depend on the rigor that measurements provide.

According to Fenton, "measurement is the process by which numbers or symbols are assigned to attributes of entities in the real world

in such a way as to describe them according to clearly defined rules". In this statement an entity is a person, place, thing, event or time period. An attribute is a feature or property of the entity. To measure, we must first determine the entity. For example, we could select a car as our entity. Once we select an entity, we must select the attribute of that entity that we want to describe. For example, the car’s speed or the pressure in its tires would be two attributes of a car. Finally, we must have a defined and accepted mapping system. It is meaningless to say that the car’s speed is 65 or its tire pressure is 75 unless we know that we are talking about miles per hour and pounds per square inch, respectively.

We will use the basic process model of input - process - output to discuss software entities. Software entities of the input type include all of the resources used for software research, development, and production. Examples of input entities include resources (people), materials, tools, and methods. Software entities of the process type include software-related activities and events and are usually associated with a time factor. Examples of process entities include defined activities such as developing a software system from requirements through delivery to the customer, the inspection of a piece of code, or the first 6 months of operations after delivery. Process entities also include time periods, which do not necessarily correspond to specific activities. An example would be the period between 1/1/10 and 2/1/11. Software entities of the output type are the products of the software process. These include all the artifacts, deliverable, and documents that are produced. Examples of software output entities include requirements documentation, design specifications, code (source, object & executable), test documentation (plans, scripts, specifications, cases, reports), project plans, status reports, budgets, problem reports, and software metrics.

Each of these software entities has many properties or features that we might want to measure. We might want to examine a computer's price, performance, or usability. We could look at the time or effort that it took to execute a process, the number of incidents that occurred during the process, its cost, controllability, stability, or effectiveness. We might want to measure the complexity, size, modularity, testability, usability, reliability, or maintainability of a piece of source code.

One of the challenges of software metrics is that few standardized mapping systems exist. Even for seemingly simple metrics like the number of lines of code / Kilo line of code (KLOC) no standard counting method followed across the organizations.

Do we count physical or logical lines of code?

Do we count comments or data definition statements?

Do we expand macros before counting and do we count the lines in those macros more than once?

Another example is engineering hours for a project – besides the effort of software engineers, do we include the effort of testers, managers, secretaries, and other support personnel?

This are improving like a few metrics, which do have standardized counting criteria include McCabe’s Cyclomatic Complexity and the Function Point Counting Standard from the International Function Point User Group (IFPUG).

However, the selection, definition, and consistent use of a mapping system within the organization for each selected metric are critical to a successful metrics program.

For a thumb rule all IT companies follow three types basic matrices line cost matrix, Schedule matrix & quality matrices. We will ponder on these & types of matrices in next discussions. Share your thoughts at ravindrapande@gmail.com.

Wednesday, December 1, 2010

public, private and hybrid clouds

As we know keeping up with data growth is the top challenge of IT managers. In today's Internet Era, the emphasis is on cost-effectively managing multiple peta bytes of storage and a more stringent compliance landscape. Traditional networked storage technologies alone are no longer able to scale and perform at the demanding levels needed to keep pace with punishing data growth rates and requirements using existing budgets and resources. More data storage usually means additional CAPEX for infrastructure and floor space. In turn, operating OPEX climb between four and eight dollars for every dollar spent on capital equipment for: power and cooling, the administrative cycles to manage aging systems and manual processes; and time-consuming backup, recovery, migration and upgrades. So in a nut shell keeping up with data growth will be the top challenge of both mid-market and enterprise IT managers in the next two years.1 Data held in content depots, large repositories of digital content amassed and organized for information sharing or distribution, are consuming disk storage space in rapid volume.

three main cloud models: private, hybrid and public. Each model may offer varying levels of security, services, access, SLAs and value to end users.

In a private cloud, all components reside within the firewall of an organization. The infrastructure is either managed internally by the IT department and is deployed to create an agile data center or may be managed and delivered as a service by a cloud provider. Behind the security of the firewall, private cloud embraces high levels of automation to virtualize the infrastructure, including servers, networks and storage, and to deliver services to business units or other branches. With private cloud, security of the data and physical premises are determined and monitored by the IT team, and its high quality service level agreements remain intact. The organization maintains its own strong security practices of both the data and the physical location, such as key codes, passwords etc. Access to data is determined internally and may resemble existing role-based access controls or grant separate administration and data permissions based on data types and security practices. The values of private cloud to the end user are quick and easy resource sharing, rapid deployment, self service and the ability to perform ROI. The value to the service provider, or in this case,
the organization, is an ability to initiate for usage while maintaining control over data access and security.

The hybrid cloud model consists of a combination of internal and external cloud infrastructures whereby selected data, infrastructure or applications are allowed to "punch through" the corporate firewall and be provided by a trusted cloud provider. Here, the multitenant infrastructure outside the firewall delivered by a trusted cloud provider is leveraged for further cost reduction. The subscriber and the hybrid cloud provider are bound together by standardized or proprietary technologies that enable data and application portability. The IT organization makes decisions regarding what types of services and data can live outside the firewall to be managed by a trusted third-party partner
With Hybrid cloud usually provides an attractive alternative to the enterprise when internal processes can no longer be optimized: for example, when the organization's cost infrastructure can only be amortized across business units or a small customer base. By moving certain data and applications to a hybrid cloud, the enterprise is able to significantly reduce the costs of providing services by taking advantage of the multitenant capabilities and economies of scale.

In a public cloud model, all major components are outside the enterprise firewall, located in a multitenant infrastructure. Applications and storage are made available over the Internet via secured IP, and can be free or offered at a pay-per-usage fee paid with credit cards. This type of cloud supplies easy-to-use consumer-type services, such as: Amazon and Google on-demand web applications or capacity; Yahoo mail; and Facebook or LinkedIn social media providing free storage for photographs. The elasticity, low entry costs and ease of use of public cloud seem well suited to supporting applications that follow web design, service oriented architecture or virtual server environments. While public clouds are inexpensive and scale to meet needs, they typically provide "consumer level" or lower SLAs and may not offer the guarantees against data loss or corruption found with private or hybrid cloud offerings. Public cloud is appropriate for consumers and entities not requiring the same levels of service that are expected within the firewall.Also, the public clouds do not provide for restrictions and compliance with privacy laws, which remain the responsibility of end user.

Now priority wise for private clouds, the service delivery layer sits on top of enterprise IT infrastructure. In hybrid or public clouds, the enterprise's existing infrastructure can be used efficiently for core data, freed up or retired as needed. As a result, less infrastructure equates to lower data center power, cooling, facility and maintenance costs.

Thursday, November 18, 2010

Read if you are thinking about Moving to a Private Cloud

When cloud computing became a topic of discussion a few years ago, public clouds received the bulk of the attention, mostly due to the high-profile nature of public-cloud announcements from some of the industry's biggest names, including Google and Amazon. But now that the talk has turned into implementation, some IT shops have begun steering away from public clouds because of the security risks; data is outside the corporate firewall and is basically out of their control.

Tom Bittman, vice president at Gartner, said in a blog post that based on his poll of IT managers, security and privacy are of more concern than the next three public cloud problems combined. He also wrote that 75% of those polled said that they would be pursuing a private cloud strategy by 2012, and 75% said that they would invest more in private clouds than in public clouds through 2012.

An analyst at Forrester Research, agrees that IT's emphasis is more on private clouds these days. He says that IT managers "are not interested in going outside" the firewall. Still, as many IT guys on blog post points out, private clouds have their share of challenges, too; in his poll, management issues and figuring out operational processes were identified as the biggest headaches. And, of course, an on-premises private cloud need to be built internally by IT, so time frame and learning curve, as well as budget, need to be part of the equation. Indeed, transitioning from a traditional data center -- even one with some servers virtualized -- to a private cloud architecture is no easy task, particularly given that the entire data center won't be cloud-enabled, at least not right away.

Let's analyse some challenges for buliding private cloude:

* Budget. Private clouds can be expensive, so you need to do your due diligence and figure out what the upper and lower bounds for your ROI will be.
* Integrating with public clouds. Build your private cloud so that you can move to a hybrid model if public cloud services are required. This involves many factors, including security and making sure you can run your workloads in both places.
* Scaling. Private cloud computing services usually don't have the economies of scale that large public cloud providers provide.
* Reconfiguring on the fly. You may have to tear down servers and other infrastructure as it is working to move it into the private cloud. This could create huge problems.
* Legacy hardware. Leave your oldest servers behind -- you should not try to repurpose any servers that require manual configuration with a private cloud, since it would be impossible to apply automation/orchestration management to these older machines.
* Technology obsolescence. The complexity and speed of technology change will be hard for any IT organization to handle, especially the smaller ones. Once you make an investment in a private-cloud technology stack, you need to protect that investment and make sure you stay up to date with new releases of software components.
* Fear of change. Your IT team may not be familiar with private clouds, and there will be a learning curve. There may also be new operational processes and old processes that need to be reworked. Turn this into a growth opportunity for your people -- the stress of doing and learning all this may be mitigated by helping your folks keep in mind that these are important new skills in today's business environment.

Saturday, October 23, 2010

This is insights on my various readings & leaders, CXO discussions, which allowed me to identify seven basic behavioral patterns and essential skills most critical business leaders put forward in day to day workings
Commit to leadership first and everything else follows. one of the data research reveals that the highest performing CXOs are effective because they embrace the idea that everything they need to accomplish will be achieved through working with people and by people. They don't pay lip service to that idea. They live it. The build dream around it. They lead & other follow.
Lead differently than you think. A high-performing CXO is an incredibly complex and creative thinker. Yet when the time comes to lead, they don't rely on their superior "smarts" and analytical skills to come up with the best possible solution. They act collaboratively that is discuss with close super minds & critics gauge the response then lead on the path. This is a well thought vision & not a simple idea cooked over stray thinking.
Embrace Your Softer Side to build good listeners. Effective CXOs manage the paradox of gaining more influence by letting go of control and allowing themselves to be vulnerable. In turn, that vulnerability enables them to create deep, personal connections—connections that provide the ability to inspire people both inside and outside their organization. This also enables to create followers like devotees.
Build the Right Relationships to Drive the Right Results. This skill may not be surprising. High performing CXOs spend a greater percentage of their time and energy managing relationships that exist sideways: with internal peers, external suppliers, and customers. They purposely invest in horizontal relationships which form the foundation to drive extraordinary results.
Master Communication. The best CXOs know that their colleagues by first names—especially the people who work for them—are always watching. & calling by first name it's impressive. These executives understand they are always on stage. They take advantage of that situation by constantly reiterating core messages and values. Through their focus on clarity, consistency, authenticity, and passion, they make sure their message is not only understood but also felt. They want to communicate a feeling that compels people to take the right actions.
Inspire Others. In exchange for a regular paycheck, most people will give an adequate performance. But they will only give their best work if they believe they are involved in something greater than themselves. The best CXOs provide a compelling vision that connects people to how their enterprise wins in the marketplace and that their contributions are meaningful and valued.
Build People, Not Systems. By developing people all around them, these CXOs increase their capability and capacity to deliver results. They also know that leaving behind the next generation of leaders is the best thing they can do for the organization—it will be their lasting legacy.
Friends please let me know if you would like to add any thing & suggest any thing to make this better.

Wednesday, October 20, 2010

Better economic model to software project / product development

As agile methodologies are being adopted by increasing number of organizations, there is a greater need to understand its value. I am trying to gauge / attempt to understand the value of Agile Methodologies by introducing a new economic model. The early thinking processes suggest that uncertainty level has a strong effect of the level of process effectiveness. Lower level of uncertainty is associated with high levels of project effectiveness regardless the level of pre-committed project costs and project duration. When the level of uncertainty is high, the level of process effectiveness is low regardless of the level of pre-committed project costs and project duration; and, the process effectiveness declines at a fast rate with longer project duration and/or higher level of pre-committed project costs. Tools like Agile methodology's etc value-adding comes from its core values of effective communication, and starting from small for shorter duration. It is suitable for projects with high levels of uncertainty. In contrast, the plan driven approach, tends to increase project duration, pre-committed project costs and fails to reduce the level of uncertainty. It is only suitable for projects with low level of uncertainty. In addition to this a good resource plan with hierarchical mentoring across execution with low cost resources can save up to 40-55% of costs for nonexclusive domains & for exclusive domains Knowledge Management can save us in millions. Suggest your view /experiences let's keep this two way.

Tuesday, September 7, 2010

God, forgive me when I whine - not mine ;-)

Oh, God, forgive me when I whine.

Today, in the bus, I saw a girl with golden hair
I looked at her and sighed and wished I was as fair.
When suddenly she rose to leave,
I saw her hobble down the aisle.
She had one leg and used a crutch.
But as she passed, she passed a smile.
Oh, God, forgive me when I whine
I have 2 legs, the world is mine.


I stopped to buy some candy.
The lad who sold it had such charm.
I talked with him a while, he seemed so very glad.
If I were late, it'd do no harm.
And as I left, he said to me,
"I thank you, you've been so kind.
It's nice to talk with folks like you.
You see," he said, "I'm blind."
Oh, God, forgive me when I whine.
I have 2 eyes, the world is mine.


Later while walking down the street,
I saw a child with eyes of blue
He stood and watched the others play
He did not know what to do.
I stopped a moment and then I said,
"Why don't you join the others, dear?"
He looked ahead without a word.
And then I knew, he couldn't hear.
Oh, God, forgive me when I whine.
I have 2 ears, the world is mine.


With feet to take me where I'd go.
With eyes to see the sunset's glow.
With ears to hear what I would know.
Oh, God, forgive me when I whine.
I've been blessed indeed,
The world is mine.



"Be thankful when you don't know something,
For it gives you the opportunity to learn."

"Be thankful for your mistakes.
They will teach you valuable lessons".

"Be thankful when you're tired and weary,
Because it means you've made a difference."

Monday, August 16, 2010

Our fear of losing in low tids

Does the fear of losing keep you from pursuing your dreams? Remember that everything starts in the mind. If you think you will lose and if you anticipate losing, you have started losing it right then & there. A person who thinks that gambling is his way out of a wretched life loses just the same. A person who always relies on luck and uses gambling as a source of income can loses big time. These type of persons views gambling as a risk worth taking regardless of the effect it has on him. Gambling makes a person lazy and reinforces belief on easy money. Deep within that person, he is losing part of his self-respect every time he engages in gambling. Now, put yourself in the shoes of a neophyte salesperson. First time salespersons usually have this kind of dilemma: to be or not to be; to approach or not to approach the customer. Your fear of not being able to sell or get an order makes you back out even before you try. If you do not make the act of approaching the customer for an order, you already lost it. But, if you do, you still have a good chance (or atleast 50% according to probability) of getting an order or learning a lesson. Of course, it depends on your convincing power of salesmanship. You have to be honest regarding your products or services. Do not promise what you cannot deliver. Deliver more than what you promise. These are just some of the steps towards establishing a lasting relationship with your customer. Let us examine in detail the basis for your inaction, which is essentially the basis of your fear. What is your excuse for not approaching the customer or for not getting that order?

Fear can make you lose an order. It can stop you in your tracks as you approach the customer. Fear can stop you from performing an action because it can overwhelm you and make you afraid of taking a “no” for an answer. Actually, there is probably an underlying reason for your anxiety, one that links to the fear of losing your job. If your performance is below par, expect to be fired. Your performance has to be above par. To be able to do this, get rid of the fear of losing. Adopt a mindset that echoes, “I can and will get that order.” Let us take the perspective of an aspiring businessperson. A first time entry into any business venture normally results in nervousness due to fear of losing his capital. This fear escalates especially when the capital comes from hard-earned savings. Seeing hard earned savings go to waste as a result of a bankrupt business can drive anyone crazy. If this happens, he will have to start saving again; that is, if he is still young and has the physical stamina to do so. The fear of losing is just one side of reality. Let us check out the other side, which emphasizes the courage to win. Again, everything begins in the mind. Maintain the desire to win. Encourage your mind to nurture the courage to win. Take some calculated risks. Be optimistic while keeping your feet on the ground. Be creative and think out of the box.
If you continue delaying your plans to achieve success because of your fears, you lose valuable time that could otherwise have been used for fruitful ventures. If you eventually decide to scrap or abandon your plans, you lose the chance of a lifetime.