Software Cost Estimation

December 23rd, 2008

cost_estimating

Background:
Software Cost Estimation is widely considered to be a weak link in software project management. It requires a significant amount of effort to perform it correctly. Errors in Software Cost Estimation can be attributed to a variety of factors. Various studies in the last decade indicated that 3 out of 4 Software projects are not finished on time or within budget or both.

Who is responsible for Software Cost Estimation?
The group of people responsible for creating a software cost estimate can vary with each organization. However the following is possible in most scenarios -
- People who are directly involved with the implementation are involved in the
..estimate.
- Project Manager is responsible for producing realistic cost estimates.
- Project Managers may perform this task on their own or consult with
..programmers responsible.
- Various studies indicate that if the programmers responsible for development
..are involved in the estimation it was more accurate. The programmers have
..more motivation to meet the targets if they were involved in the estimation
.. process.

Following scenarios are also possible
- An independent cost estimation team creates an Estimate
- Independent Experts are given the Software specification and they create a
..Software Cost estimate. The Estimation team reviews this and group
.. consensus arrives at a final figure.

Factors contributing to inaccurate estimation
• Scope Creeps, imprecise and drifting requirements
• New software projects pose new challenges, which may be very different from
..the past projects.
• Many teams fail to document metrics and lessons learned from past projects
• Many a times the estimates are forced to match the available time and
..resources by aggressive leaders
• Unrealistic estimates may be created by various ‘political under currents’

Impact of Under-estimating:
Under-Estimating a project can be vary damaging
- It leads to improper Project Planning
- It can also result in under-staffing and may result in an over worked and
..burnt out team
- Above all the quality of deliverables may be directly affected due insufficient
..testing and QA
- Missed Dead lines cause loss of Credibility and goodwill

The Estimation Process:
Generally the Software Cost estimation process comprises of 4 main steps:
1) Estimate the size of the development product.
This comprises of various sub-steps or sub tasks. These tasks may have been done already during Requirement Analysis phase. If not then they should be done as a part of the estimation Process. Important thing is that they should be done to ensure the success of the Estimation Process and the Software Project as a whole

a) Create a detailed Work Break Down Structure. This directly impacts the accuracy of the estimate. This is one of the most important steps. The Work Break down structure should include any and all tasks that are within the scope of the Project, which is being estimated. The most serious handicap is the inability to clearly visualize the steps involved in the Project. Executing a Software Project is not just coding.

b) The work Break down structure will include the size and complexity of each software module that can be expressed as number of Lines of Code, Function Points, or any other unit of measure

c) The Work Break down structure should include tasks other than coding such as Software Configuration Management, various levels and types of Testing, Documentation, Communication, User Interaction, Implementation, Knowledge Transition, Support tasks(if any) and so on

d) Clearly indicate or eliminate any gray areas (vague/unclear specifications etc.)

e) Also take into account the various Risk Factors and down times. There are many different Risk Factors involved – Technical aspects such as availability of the Environment, Server/Machine uptime, 3rd party Software Hardware failures or Human aspects – Employee Attrition, Sick time, etc. Some of them may seem to be ‘overkill’ but real world experience shows that these factors affect the time lines of a project. If ignored they may adversely impact the Project timelines and estimates.

2) Estimate the effort in person-hours.
The Result of various tasks involved in step 1 is an effort estimate in person hours. The effort of various Project tasks expressed in person-hours is also influenced by various factors such as:
a) Experience/Capability of the Team members
b) Technical resources
c) Familiarity with the Development Tools and Technology Platform

3) Estimate the schedule in calendar months
The Project Planners work closely with the Technical Leads, Project Manager and other stakeholders and create a Project schedule. Tight Schedules may impact the Cost needed to develop the Application.

4) Estimate the project cost in dollars (or other currency)
Based on the above information the project effort is expressed in dollars or any other currency.

Measuring the Size/Complexity of the Software Program:
This is one of the most elusive aspects in the Software Cost Estimation Process.
There are different methodologies for arriving at and expressing the size/complexity of the Software Program. Some of the popular ones are
1) Function Points
2) Lines of Code
3) Feature Points
4) Mk II function points
5) 3D Function Points
6) Benchmarking
Each new software module to be developed can be categorized using the
a) Number of inputs
b) Number of outputs
c) Number of transactions
d) Algorithms
e) Features of the module

Based on the above factors the module can be categorized for example as Simple, Medium or Complex. If it is too Complex you could express it in multiples of the above three categories. The baseline effort in terms of person-hours it takes for each category is predefined based on historical data/metrics for a similar platform. This figure can be improvised/refined over a period of time this can be correlated to an algorithm for calculating Car Insurance Premium. This is used to estimate the size and the effort needed for Software Development.

posted by : dhamu

This article will helpful to Company management

December 23rd, 2008

company1

Who will get help from this article?
This article will helpful to Company management, Managers, Team leads in development and testing and of course to the emerging testers who are tomorrow’s leads.
What are the effects of high attrition rate on company?
• May lose projects in hand - as clients are not happy with high attrition rate
• Financial burden on company
• Cost to recruit new employees
• Cost of new employee training
• Time for ramp-up in new projects
• Workload on existing employees
• Low employee productivity due to unstable work and overtime
These are few important drawbacks of high attrition rate.
How to reduce attrition rate?
First let’s go to root cause of “why employee leave the company?”
The main reason is “lack of appreciation for their hard work”. I mean if company is not caring about employees then why would they stay in such company?
Keep in mind ‘more money’ is not always the solution! Nowadays employees are more concerned about quality of life and their family needs.
Here are some solutions on high attrition rate:
• Hire the right people in right positions
• Understand the employee needs and provide it to them
• Respect them
• Always appreciate good work
• Regularly ask for employee input and take appropriate action
• Offer training opportunities to gain advanced knowledge
• Better to become employee oriented
• Pleasant working atmosphere
• Career growth opportunities
• Value employee creativity
• Job security
Last one is very important. Your employees should feel secure about their jobs. If you can’t provide job security or at least feeling of job security in employees mind then your company deserve for high attrition rate.
These are some one liner solution. Let’s take some practical solutions.
Motivation:
Any software team should consist of highly motivated and skilled people. Good motivation comes from good leadership. Good leadership provided by team leaders and managers can bring down the attrition rate. In my career I observe employees leave the company just because of their boss. Some unrealistic demands or lack of motivation and leadership can make employees think over their position and career.
So leaders should motivate and energize colleagues when they lost all hopes.
More Money:
Give them a good compensation and benefit package.
Fun at work:
As I said money is not always the solution, fun at work is also important. Only more money can’t motivate the team if you don’t have fun culture in your company. I believe in “Work hard, Play hard” culture, so plan some sporting activities, outdoor trips, different competitions between different teams etc etc… There can be so many such activities, which can act as refreshment for employees.
Help to settle employee life:
What I mean from this is to help employees providing stability in their life. I know this is not going to be a simple task but company can help employees by providing medical insurance, medical facilities to employees. Housing is the first priority of most of the employees. So help them getting good accommodation.
‘Teresa’, you asked about retaining testers in good positions. So let’s come to testers problem.
What are the common complaints from testers?
“Sometimes developers ego as they are better than testers”
“Tester is responsible for every fault”
“Schedule slips due to testers”
“Testers are not getting the respect”
“Management don’t consider them equally with developers”
These are some common complaints from testers and this makes them feel insecure in their job, affecting their daily work and may result in high attrition rate.
Management needs to address these complaints early before testers leave the company. The solution is - organize your teams effectively, improve communication between developers, testers and management. This will lead to better understanding and addressing of testers needs.
Below are the baby steps, which can retain good talented testers in their positions:
Provide them training:
Train all your testers. Provide them training for free, if not possible then with cheap cost. Make available some remote courses, seminars and books to study. Sponsor and help them to get the software testing certifications.
Appreciate the good work:
Don’t go behind the quantity of bugs. See the quality of bugs and appreciate those testers working hard to find it. Regularly comment positively on good work from the team.
Reward testers for finding good quality bugs. Keep some weekly or monthly competitions such as “Bug of the week” to reward the testers. This will help to build a successful QA team.
Set finite boundaries to everything:
Your goals should have clear boundaries and completion criteria. Setting goals, those not having end can become a boring task. Don’t let feel the team that this testing work is going forever without any insight goal.
Take every bug as a learning opportunity:
Don’t bother testers about the bugs that slip through. Make these bugs as a learning opportunity. Let them know why they overlooked that bug. This way they will learn from their mistakes and will not make the same mistake again at lest for the same bug.
Don’t make testing a repetitive task:
Some times we get bored doing same thing again and again. Testers job involve with repetitive task. So take care to distribute your work so that no tester will execute same test case repetitively on any project. Randomize the testing work in team, this way team will get knowledge of whole product, helping to find more bugs.
Good solution to avoid repetitive work is to rotate the experienced employees internally in different projects.
Create good relation between testers and developers:
Testers need encouragement and support to find more and more bugs so that the final release is bug free. Build a good team of testers and developers. Treat everyone similarly.
Don’t forget to celebrate:
Celebrate each and every success moment. This will help to build good team spirit. Host product release parties to recognize accomplishment.
Conclusion:
Show your appreciation to those employees who work hard. This is a key to successful business. Show your employees that you are committed to fulfill their needs.

posted by : dhamu

HTTP Error Codes

December 23rd, 2008

Error #24 An error occurred while reading data from the network.
This error usually indicates that something happened to the network connection; modem hang-up, physical wiring problem, RealAudio Server or RealServer problem or too much network traffic.
Check that your network connection is still active. If it is, it is recommended that you try the clip again at a less busy time.
HTTP Error Codes
HTTP Error Codes
Information Codes
Error # Error Code Description
100 Continue The request was successful. The process can now continue.
101 Switching Protocols The request for the server to switch protocols was accepted, such as a switch from ftp to http.

Success Codes
Error # Error Code Description
200 OK The item requested of the server is available (keep in mind, available, not accepted or completed).
201 Created A new address has been created through the use of form posting, perl, cgi, etc.
202 Accepted The request has been accepted (keep in mind that the request has been accepted, not completed)
203 Non-Authoritative Information The information received is not from the server that the information was requested from, but from another source.
204 No Content There was no content to be given for the request. For instance if you click on a hyperlink, imagemap, or button that isn’t linked to anything or doesn’t do anything.
205 Reset Content A script has reset the displayed content.
206 Partial Content Only partial content has been displayed. This could be due to bandwidth, poor caching, bad html, or other reasons.

Redirection Codes
Error # Error Code Description
300 Multiple choices You will either get a choice of pages or an error message when this occurs. The address is actually pointing to two multiple files and/or locations.
301 Moved Permanently The requested page has been permanently moved. The server will automatically redirect you to the new location.
302 Found The requested page has been temporarily moved. The server will automatically redirect you to the new location.
303 See Other The requested data is stored in an alternate location and the GET method will be used to retrieve the data. If the actual error is returned then this may be due to a web server misconfiguration.
304 Not Modified The requested data has not been modified since the last request.
305 Use Proxy The requested data may only be accessed via the use of a proxy server.
307 Temporary Redirect The requested page has been moved. The server will automatically redirect you to the new location. Unlike Error 301 and 302 however, the server has not specified whether the move is temporary or permanent.

Client Error Codes
Error # Error Code Description
400 Bad Request The request was denied due to a syntax error in the request.
401 Unauthorized Your IP address or the username/password you entered were not correct. Your request was denied as you have no permission to access the data.
402 Payment Required The data is not accessible at the time. The owner of the space has not yet payed their service provider.
403 Forbidden Your IP address or the username/password you entered were not correct. Your request was denied as you have no permission to access the data.

OR

The server was unable to serve the data that was requested.
404 Not Found The document that has been requested either no longer exists, or has never existed on the server.
405 Method Not Allowed The document that has been requested either no longer exists, or has never existed on the server.
406 Not Acceptable The client (webbrowser) does not accept the document format. The formats that may be specified not to accept are charset, encoding, certain file types, languages, or ranges.
407 Proxy Authentication Required The browser has not been authenticated on the required proxy server to access the data. This error is probably most commonly returned by content filters/parental controls.
408 Request Timeout The server has closed the socket due to communications between the client and server taking too long. This could be due to server load, bandwidth issues, the client being disconnected from the internet, etc.
409 Conflict Too many requests for the same file at one time.

OR

There is a conflict with an established software rule. (ie: you are trying to copy over a file with an older version, or you do not have permissions to delete a file)

OR

This could be caused by a DNS issue
410 Gone This is like a 404 error in that the document requested is not on the server, however this differs in that the server ‘knows’ that the file used to be there and ‘believes’ that the file may be back, so it returns 410 rather 404.
411 Length Required When trying to send a document to the server the server did not recieve a Content-Length specification in the header.
412 Precondition Failed A precondition setting required by the client or server has not been met.
413 Request Entity Too Large The process is too large to process. (ie: a file you are trying to upload is too large to fit on the server, or a webpage you are trying to download is too large for the server to process)
414 Request-URI Too Large The URL requested is simply too long. It is most likely more than 1024, 2048, or 4096 characters in length.
415 Unsupported Media Type This usually occurs if the server does not support the type of media the client is requesting. (ie: the server does not support streaming media, but streaming media is on the server and the client is attempting to access it)
416 Requested Range Not Satisfiable The client request included a range for acceptable file size, however the document requested did not fit into that range.
417 Expectation Failed The client’s expect header requested certain server behaviors that the server could not perform.

Server Error Codes
Error # Error Code Description
500 Internal Server Error The server encountered an error. This is most often caused by a scripting problem, a failed database access attempt, or other similar reasons.
501 Not Implemented The method you are using to access the document can not be performed by the server. Possible methods include:

CONNECT
DELETE
GET
HEAD
OPTIONS
POST
PUT
TRACE
502 Bad Gateway The document requested resides on a 3rd party server and the original server received an error from the 3rd party server.
503 Service Unavailable The server is overloaded or down for maintenance and due to this was unable to process the client request.
504 Gateway Timeout Most likely the client has lost connectivity (disconnected from the internet) or the cleint’s host is having technical difficulties. This could also mean that a server that allows access to the requested server is down, having bandwidth/load issues, or otherwise unavailable.
505 HTTP version not supported The server does not support the HTTP version used by the client. (This usually occurs if the server is using an OLDER version of HTTP than the client.)

 

**dhamu **

WMI Overview:

December 23rd, 2008

WMI Overview:

Management of computer environment is typically not a very easy task, yet being crucial for the successful operation of your business.

Windows® Management Instrumentation (WMI) is a technology for accessing management information in enterprise environments. Using it, you can either locally or remotely obtain management data from computer systems running the Windows® operating system, ranging from simple data such as CPU usage and memory consumption to highly-specialized data such as the mainboard model.

A public standard known as the Common Information Model (CIM) is used by WMI to store data. The CIM is an object-oriented data model used to describe an enterprise. The basic entity in the CIM is a class. CIM classes represent managed objects, such as applications, hard disk drives, or mainboards. Each class publishes properties, describing data related to the object represented by it. For example, the Win32_OperatingSystem class represents the active operating system on the machine and contains, among others, a property called LastBootUpTime, which indicates the date and time the operating system was last booted.

Classes, however, are only type descriptions. The Win32_OperatingSystem just describes what properties an object representing an operating system should have. To actually read data related to the operating system, you need an instance of the Win32_OperatingSystem class, i.e., an object which has properties as described by that class.

For some classes, there is tipically only one instance. The Win32_OperatingSystem we used as example above is one of such classes, as there is only one operating system active on the machine at a time. For some other classes, there can be more than one instance. Win32_PerfFormattedData_PerfDisk_LogicalDisk is a typical example of such a class. It represents logical disk partitions, so there are instances for each of the available partitions (C:, D:, etc.), as well as an instance that gathers data from all the partitions at the same time.

Registry Monitoring:

WMI offers a class to help you get information from the registry. This class is Win32_Registry.

A interesting property of this class is CurrentSize. It returns the current total size of the registry.

Posted By:Saminathan.N

Sessions in ASP.NET

December 23rd, 2008

What is session?

The Session object is projected and used to maintain state for a given visitor to your application. Session is a general variable which can hold either value or object of a class.

Session Declaration

Session["sessionName"]= [Value];

Types

  • InProc - Session will be abandon/disposed when the browser or web server stops. It won’t work in web garden mode, because in that approach multiple processes will be running on the computer. In addition Session_End event is supported only in InProc mode. For details, see KB324772
  • State Server - Session which are created in State Server stored in memory in a separate process. State Server can run on another machine
  • SQLServer - Session serialized and stored the session value in SQL server either in local or remote server.

Performance

  • InProc - When this is evaluated with other server InProc server is fastest. The additional memory is used on the process running for browser, because the more session data. It can affect the performance.
  • State Server - When stockpile data of fundamental data types (i.e. string, double, etc). Under one computer setting it’s 15% slower than InProc. On the other hand, the cost of serialization/deserialization can affect performance.
  • SQLServer - Cost to construct an application which implements Session storage in SQL Server is high compare to other server. Session value should be send to SQL Server either in local using 127.0.0.1 or Remote Server using remote IP Address. Basically this type of Session server is mostly used in Enterprise application. Serialization will take a long time which give you a draw back of 25% of performance.

TCP / IP Connection Class

December 23rd, 2008

Using Socket Class.

Hello world!

December 23rd, 2008

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!