Posts Tagged ‘Programs’

Applying Earned Value Management to Software Intensive Programs

Wednesday, September 22nd, 2010

Many information technology projects have been declared too costly, too late. and often don’t work right. Applying appropriate technical and management techniques can significantly improve the current situation. The principal causes of growth on these large-scale programs can be traced to several causes related to overzealous advocacy, immature technology, lack of corporate technology roadmaps, requirements instability, ineffective acquisition strategy, unrealistic program baselines, inadequate systems engineering, and work-force issues. This article provides a brief summary of four processes to resolve these issues

Establishing a Process for Requirements Definition and Developing the Technical, Cost and Schedule Baselines

We all realize the importance of having a motivated, quality work force but even our finest people can’t perform at their best when the process is not understood or not operating at its best. A well defined process is critical to defining the requirements and completing the initial cost and schedule estimate. The proper use of Performance-Based Earned Value® (PBEV) provides for integration of project technical scope, schedule, and cost objectives; and the establishment of a baseline plan for performance measurement. Additionally, the use of an analytic application to project likely cost and schedule based on actual performance provides for realistic projections of future performance. Success of the project can be aided by defining the best objectives, by planning resources and costs which are directly related to those objectives, by measuring accomplishments objectively against the plan, by identifying performance trends and problems as early as possible, and by taking timely corrective actions.

In the book, “Software Sizing, Estimation and Risk Management” (Dan Galorath and Michael Evans, 2007) a ten step process is presented for program requirements generation and estimation. The 10 steps are:

1. Establish Estimate Scope
2. Establish Technical Baseline, Ground Rules, and Assumptions
3. Collect Data
4. Estimate and Validate Software Size
5. Prepare Baseline Estimates
6. Review, Verify and Validate Estimate
7. Quantify Risks and Risk Analysis
8. Generate a Project Plan
9. Document Estimate and Lessons Learned
10. Track Project Throughout Development

The key here is to establish an auditable, repeatable set of steps to establish the requirements and develop the baseline estimate of cost and schedule.

Identifying Critical Software Management Metrics

That most large software programs get into trouble is a demonstrated phenomenon. Therefore selecting the correct set of software metrics to track is critical to program success. Practical Software Measurement (McGarry, Card, Jones; Addison-Wesley, 2002) identifies seven information categories and expands these information categories into measurable concepts and then prospective metrics .

For Earned Value purposes, the most effective software metrics are those that relate to product size, schedule, quality, and progress. For software intensive programs, measures of quantity (e.g. number of lines of code completed) do not accurately reflect the quality aspects of the work performed on neither the program nor the actual progress since items such as lines of code completed do not capture items such as integration, testing, etc.

Size is often measured as Source Lines of Code (SLOC) or Function Points and used as a sizing measure for budgets and for earned value using a percent of completion method. There are two critical problems with this approach. First, there has traditionally been a significant error in estimating SLOC. And, the number of lines of code completed does not necessarily reflect the quality or total progress toward a performance goal. Therefore, any progress metric based solely on SLOC is highly volatile. Whether SLOC, function points, Use Cases, or some other size artifact is selected, a careful process must be utilized to establish a credible size metric. It is recommended that in addition to tracking progress toward a goal, size growth should also be tracked.

Schedule metrics and procedures normally relate to completion milestones are also a common tracking metric. Sometimes these milestone definitions and completion criteria lack quantifiable objectives. Often an incremental build is released that does not incorporate all the planned functional requirements or a developer claims victory after just testing the nominal cases.

Progress metrics can be very difficult for large software programs. It is generally agreed that no software is delivered defect free. Software engineers have hoped that new languages and new processes would greatly reduce the number of delivered defects. However, this has not been the case. Software is still delivered with a significant number of defects. The physical and practical limitations of software testing (the only way to determine if a program will work is to write the code and run it) ensure that large programs will be released with undetected errors. Therefore, defects discovery and removal is a key metric for assessing program quality.

Applying Performance-Based Earned Value (PBEV)

Performance-Based Earned Value® (PBEV) is an enhancement to the Earned Value Management Systems (EVMS) standard . PBEV overcomes the standard’s shortcomings with regard to measuring technical performance and quality (quality gap). PBEV is based on standards and models for systems engineering, software engineering, and project management that emphasize quality. The distinguishing feature of PBEV is its focus on the customer requirements. PBEV provides principles and guidance for cost effective processes that specify the most effective measures of cost, schedule, and product quality performance.

Program managers expect accurate reporting of integrated cost, schedule, and technical performance when the supplier’s EVMS procedure complies with the EVMS Standard. However, EVM data will be reliable and accurate only if the following occurs:

• The indicated quality of the evolving product is measured.
• The right base measures of technical performance are selected.
• Progress is objectively assessed.

Using EVM also incurs significant costs. However, if you are measuring the wrong things or not measuring the right way, than EVM may be more costly to administer and may provide less management value .

Because of the quality gap in the EVMS standard, there is no assurance the reported earned value (EV) is based on product metrics and on the evolving product quality. First, the EVMS standard states that EV is a measurement of the quantity of work accomplished and that the quality and technical content of work performed are controlled by other processes. A software manager should ensure that EV is also a measurement of the product quality and technical maturity of the evolving work products instead of just the quantity of work accomplished. Second, the EVMS principles address only the project work scope. EVMS ignores the product scope and product requirements. Third, the EVMS standard does not require precise, quantifiable measures of progress. It states that objective EV methods are preferred but it also states that management assessment (subjective) may be used. In contrast, other standards specify objective measurement. Fourth, EVM is perceived to be a risk management tool. However, EVMS was not designed to manage risk and provides no guidance on the subject.

PBEV is a set of principles and guidelines that specify the most effective measures of cost, schedule, and product quality performance. It has several characteristics that distinguish it from traditional EVMS, by augmenting EVMS with four additional principles and 16 additional guidelines.

PBEV supplements traditional EVMS with the best practices. Its principles and guidelines enable true integration of project cost, schedule, and technical performance. The distinguishing feature of PBEV is its focus on the customer requirements. Measures of product scope and product quality are incorporated into the project plan. Progress is measured against a plan to fulfill all customer requirements. Measuring the wrong things does not dilute management attention. Consequently, management is able to take rapid corrective actions on deviations that threaten customer satisfaction and business enterprise objectives.

Using An Analytic Process To Project Cost And Schedule Based On Actual Performance

Once the requirement definition is complete; the cost and schedule baseline has been established; the appropriate metrics have been selected; and a PBEV system is in place, the final challenge is to implement a process that quickly and accurately estimates final cost and schedule based on actual performance. This analysis is best accomplished using an analytic/parametric process. Galorath Incorporated calls this process SEER Control. The purpose of SEER Control is to provide an understanding of the project’s progress so that appropriate corrective actions can be taken when the project’s performance deviates significantly from the plan. SEER Control provides a “dashboard” that includes a health and status indicator for the project related to: schedule variance, time variance, cost variance, size growth, and defects discovery and removal.

At the heart of SEER Control is the ability to forecast the final project outcome based on actual performance to date. One of the primary goals of SEER Control is to provide adequate supporting documentation (charts and reports) to support the software project management process and to satisfy stakeholder needs.

Conclusion

Management of Software Intensive Programs should be based on the foundation of establishing the requirements, developing a reliable baseline estimate for cost and schedule, selecting effective software metrics, applying Performance-Based Earned Value (PBEV), and using analytic processes to project cost and schedule based on actual performance.

Author’s Note: This article was written with contributions from Paul Solomon, co-author of the book, Performance-Based Earned Value® and Dan Galorath, CEO of Galorath Inc. and co-author of the book, Software Sizing, Estimation, and Risk Management.

All about Computer Programming/Engineering Programs

Monday, August 9th, 2010

If you are a computer enthusiast then there is a course that can work best for you. Taking a computer programming degree is a good idea if you want to fit in the ever evolving technology world. The courses taught in an engineering course are aimed at balancing your knowledge between software and hardware. This course teaches you the skills of developing, designing and bringing to life great innovations. As a student you will acquire the skills of circuit designing, testing and verification. With the latest in technology the colleges available have incorporated the use of the latest advances such as MEMS and VLSI.

Among the modules of study you will come around are: control systems, robotics and embedded system, communication systems, VLSI and Solid State. With an engineering degree the world will always depend on a programmer like you to create programs for them. There is so much that a computer engineer can do. Writing codes, creating user manuals and testing existing programs are some of the tasks a student will be able to do after completion of the course.

With a computer programming degree you can work on freelance basis or get employment from video game companies, government agencies, robotics companies and software companies. If you enjoy working with software programs and computers in general the course will be very easy for you. A few courses that will be taken while undertaking an engineering degree are software management, computer systems, java and computer programming. With the advancements we have in technology the computer engineering field is becoming a lucrative one.

The array of jobs that one can get after undergoing the engineering program is endless. As a graduate in this field you can be a researcher, network technician, programmer and a software engineer.

As technology changes you will need to go for a computer engineering school that is reputable and has been known to produce the best programmers. A computer programmer is very important as he plays an integral role in of keeping many computer companies active. Only a programmer can update your software applications or install new ones.

Computer Engineering College Programs- Software and Hardware

Wednesday, July 28th, 2010

College computer engineering programs exposes the students to a variety of computer related issues covering both the hardware and software.  Computer engineering college students can either specialize in software engineering or hardware engineering. Software engineering will mainly focus on the development, design, analysis, implementation and maintenance of the computer software. Any computer engineering college dealing with software engineering will teach students how to program in various computer languages such as Java, C++ and Visual Basics.

A computer engineering college offering hardware engineering will mostly be dealing with the physical parts of the computer and how they work. The hardware includes the monitor, CPU, keyboard, mouse and other accessories such as scanners, printers and modems. A good computer engineering school will normally offer both hardware and software engineering options for the learners to choose but those that are specific to either one of the two are good too because they tend to have adequate specific teaching materials ad equipment.

Most specific computer engineering programs will tend to incorporate the other because they are integrated in way. It is very hard to isolate the software from the hardware and vice versa hence programs usually have both only that focus is given to one area. A computer engineering school will normally engage its students in research and projects that are aimed at helping them understand the basics of computer engineering through practical work.

Computer engineering college programs are closely related to mathematics and electrical engineering programs as well as other related sciences. A computer engineering school that wants to be up to date in the skills it imparts in its students will normally improve and up date the programs from time to time to reflect changing technological needs of the IT markets. A Computer engineering program that seeks to balance all computer related issues will normally equip students with computer networking skills, communication systems skills, electronics skills and programming. With these skills, it becomes easier to find jobs as a software programmer, analyst or network developer. As companies adapt to new technologies, these kinds of professionals are highly sought-after in whatever specialization.

Computer Programming and Software Engineering Programs

Tuesday, April 27th, 2010

Computer software engineering has become a career of choice for many people considering its dynamic nature and exciting well-paying career opportunities.  It is a branch of computer science that deals with design, documentation, development and management of software.  Some of the subjects that will be offered by a programming school will include internet programming, application development, database development, custom business applications and web development.

A programming school will offer basic education on how to develop a computer program that is adaptable to the peculiar needs of each user as well as a chance to do research on relevant issues that are facing this field. A software engineering research includes analysis of software processes as well as measurement and modeling of computer usage behaviors.

The study modes offered at a software engineering school involve extensive and rigorous mixture of lectures, practical classes and tutorials.  Extra remedial classes can be offered to poor students to enable them catch up with their colleagues.  Before conferment of the degree, diploma or certificate to the student, they have to go through thorough assessments in form of course assignments and exams. A program especially the degree would not be complete without a project whether done in a group or individually.

Computer programming courses can be offered either as associate degrees, diplomas or certificates. The higher levels will go up to the masters and PhD ranks.  There is a number of software engineering schools that offer online programs which enable their students to take the course regardless of where they are located. This distance learning facility also enables people who are working but may wish to further their education to do so without necessarily quitting their jobs.

A course in a software engineering school prepares the student for a whole range of exciting career opportunities.  The information technology industry is very accommodating as the graduates can get a chance to work in whichever organization that makes use of computer services. Better still a course from a good and recognized programming school will enable the student to be absorbed in the job market even without the working experience.

Five Affordable High Paying Online Engineering Degree Programs

Tuesday, April 13th, 2010

Engineering students can expect to work in one of the highest paying careers for a new graduate. An affordable online engineering degree program is a way to start cashing in on the higher salary faster than if the degree was obtained through a more expensive traditional campus based university. Of the 17 engineering specialties, the five engineering degree programs that are expected to have a good outlook for employment in the future are chemical engineering, civil engineering, mechanical engineering, environmental engineering and industrial engineering.

Job growth for environmental engineers is expected to increase by 25% over the next decade according to the US Bureau of Labor. Increasing environmental regulations and proactive concern for the environment are influencing the expected growth in this field. The pay range for this specialty ranges from a low of $43,000 to a high of $106,000 with a median salary of $69,000. Schools such as Worcester Polytechnic Institute offer online masters of engineering programs in this field.

Industrial engineering positions are expected to increase by 20% over the next decade. Industrial engineers study the most effective way to affect production through the use of resources; people, material, and processes. Salaries range from a low of $44,000 to a high of $100,00, with the median being $68,000. Penn Foster College is an online college that offers this degree.

Civil engineering is another specialty that is expected to grow faster than average at a growth of 18% over the next decade. Civil engineers are needed to keep up with the demand of an increasing population in developing infrastructure. The salary range is a low of $44,000 to a high of $104,00, with the median being $68,000. Penn Foster College and Norwich University offer online civil engineering programs.

Chemical engineering positions are expected to grow at an average rate of 8%. Pharmaceutical companies are the most likely to need engineers. Also companies involved in biotechnology and nanotechnology. The salary range is a low of $50.000 to a high of $118,000 with the median being $78,000.

Job growth for mechanical engineers is expected to increase only 4%, but mechanical engineers will be able to enter other specialty areas because of their more broad background. Areas of nanotechnology, materials science, and biotechnology are areas where mechanical engineers can fill the bill. The salary range is a low of $45,000 to a high of $104,000 with the median being $69,000. The University of Delaware offers an online masters program in mechanical engineering.

The overall outlook for engineers of any specialty is good with an expected growth of 11%. Currently there are 1.5 million engineers working in a wide variety of specialties. Civil, mechanical, industrial, and electrical engineers hold the four top positions number of engineers employed.

Many schools such as Ashford, Drexel, University of Toledo, Polytechnic, Eastern Kentucky, Norwich, University of Delaware and Penn Foster College offer online engineering programs.

An online college and university website can provide information about the various programs, colleges and universities, costs, and financial aid. Advisors are available to answer questions, and you can send for information to read at your leisure.

Software Engineering Programs in IT

Sunday, January 3rd, 2010

If you are interested in a career in either the information technology sector or the software industry, a software engineering program from a programming school or a software engineering school is the first step towards achieving this. This program will include the practical and theoretical aspects of engineering and computer science. It will also help you acquire good communication skills and proficiency in engineering design which is an integral aspect of software systems and software development.

Some of the things you will learn in a programming school include the role software plays in real world applications and physical systems. The basics learnt in the first year of the software engineering programs include programming, basic science, communications skills and engineering design.

During the second year and the third year of this program, the courses you will take will include computer science, engineering and software engineering. The last year of this program focuses on the practical aspects. At this stage, students in the software engineering school are expected to complete a project that is based on all the skills and knowledge that they have gained throughout the program. The legal, professional and social aspects of software engineering are also covered at the programming school during the last year.

To get into a programming school, you have to be a high school graduate. If you want to take a software engineering program, you will have to take English, Math, Science, Chemistry, Physics and Social sciences in high school.

The information technology industry is one of the fastest growing sectors in the world and it employs millions of people each year. A software engineering school program will give you a great chance to work in one of the highest paying industry that has predictable growth rates, flexible working hours and an environment that encourages creativity.