您好,欢迎来到99网。
搜索
您的当前位置:首页International Conference on Accelerator and Large Experimental Physics Control Systems, 199

International Conference on Accelerator and Large Experimental Physics Control Systems, 199

来源:99网
International Conference on Accelerator and Large Experimental Physics Control Systems,1999, Trieste, ItalySOFTWARE ENGINEERING MANAGEMENT FOR

PRODUCTIVITY AND QUALITY

K. S. White, Jefferson Lab, Newport News, VA, USA

Abstract

Since the advent of electronic computers, people havestruggled to develop effective software engineeringprocesses. While these processes are similar to those usedby hardware engineers, the software industry has earned areputation for late delivery of inadequate products. Mostsoftware managers are looking for ways to deliver qualityproducts faster, or with fewer resources. The developmenttime and product outcome of any software project can beinfluenced by four variables: the product characteristics,the people involved, the processes they use, and theunderlying technology. In order to have an impact on theproductivity of a software development effort, themanager must focus on and balance these areas. Thispaper will discuss effective ways to improve productivityby using this approach.

reusability is often limited. Software sharing, the practiceof writing commonly needed code so that it can be usedfor a variety of projects, is an increasingly popularconcept, but cannot always be used in practice due tounique and complex project requirements.

For a software project to be a success, it must create aproduct that is what the customer wants, and the productmust be delivered within a reasonable time frame. Facedwith limited resources and unlimited work, theproductivity of the software team becomes critical toproject success. Productivity is a measure of theefficiency with which resources are employed to producegoods or services, in this case software. As managersapproach software development projects, knowing how tofacilitate productivity can be very helpful.

1.2 Common Problems

With software development, one problem occurs whenprojects begin without adequate product requirements.Another problem involves the imprecise practice ofgenerating time estimates for software projects. Startingwith a poor time estimate can doom even the mostefficient development team to late delivery. Anotherfactor working against success stems from the very natureof software. There are as many ways to design andprogram as there are programmers. There are also manyopportunities to introduce errors. Add this to the fact thatmodern programs are typically too large to exhaustivelytest and many potential problems loom before the projecteven begins. Couple these problems with increasingpressure to produce more with fewer resources and thesoftware project manager’s job becomes a real challenge.

1 INTRODUCTION

1.1Background

In the late 1940’s, as the first electronic computers beganto appear, the software engineering industry was born.Since that time, project managers have beenexperimenting with ways to manage softwaredevelopment. Over fifty years later, a process that beganwith fairly small, single purpose machine languageprograms developed by an individual engineer ormathematician, has grown into mammoth, multiyearprojects staffed by teams of software engineers. Earlyprojects typically ran in batch mode on a single platform,whereas today’s projects must run interactively onmultiple hardware platforms and operating systemconfigurations. Software development has ballooned intoa multibillion dollar industry involved in virtually everynew government and private sector project. A few lowlevel languages have been superceded with numerous highlevel languages, often complete with tools to aid indevelopment. However, the benefits gained from therelative ease of programming with high level languagesand tools have been overshadowed by the increasedcomplexity of software projects.

Most software project managers are constantly lookingfor ways to deliver better products faster. On the surface,a software development project is a lot like any otherproject. There are schedules to be worked out, resourcesto balance and project goals to achieve. However, a bigdifference comes from the fact that each new softwareproject is unique. Programmers are fond of modifyingexisting code, but with large, complex projects, there aremany pieces that must be created and integrated and code

2 PRODUCTIVITY FACTORS2.1 Factors

While there have been volumes written on the topic ofsoftware development and many methods put forth toincrease productivity, there are four factors that arerecurring themes [1][2][3]. Effectively managing thesefour areas can help a project manager maximizeproductivity. The outcome, including the efficiency ofdevelopment, of any software project is heavilyinfluenced by the people involved, the processes they use,the product size and characteristics, and the underlyingtechnology used to implement the product. In order tohave an impact on the overall productivity of a softwareengineering effort, the manager must focus on thecharacteristics of the product, the along with thecombination of people, processes and technology used to

317

develop the product. It is not enough to do well in one ortwo of these areas; all four must be considered andbalanced when there is a desire to raise productivity.Within each area, there are many ways to improve.

2.1 Products

The product is the desired outcome of a developmenteffort. The characteristics of a product, as defined by therequirements, affect the overall development time. At thisphase of a project, the manager’s primary concerns centeron the scope and the quality of the requirements.

The requirements document should cover all functionsthe product must perform, and therefore is the bestindicator of the scope and size of the project. The numberof functions needed and the complexity of these functionsdirectly impact the size of the product and therefore thetime it will take for each stage of development. Workingwith the customer in the early stages of a project, as therequirements are defined, the project manager caninfluence the product definition and therefore thedevelopment time. For example, if the requirements callfor a large product with many features, the manager cansuggest to the customers that the most critical features becalled out explicitly so the work can proceed in a phasedmanner. This will enable the programmers to design theproduct with the full requirements in mind, but deliver apartial product sooner, satisfying the customers mosturgent needs. The manager can also suggest acceptable,less complex, alternatives to requirements that may bevery onerous to implement. He can also make thecustomer aware of the direct relationship between thescope of the requirements and the time to delivery.Customers then may be less prone to “gold plate” therequirements if they understand how such extra,unnecessary features will slow the process.

Aside from the scope of the product requirements, onemust also ensure the quality of the requirements. Thequality or lack thereof, of the requirements is usuallymirrored in the final product. Poorly written requirementscan effectively extend the project duration as customersfile numerous change orders, requesting work to turn therequested product into the desired product. This issue goesbeyond the written document, which must be clear andcomplete, and extends to the understanding of therequirements. Often, product requirements are not wellcommunicated and understood by the customers or theprogrammers. This situation leads to wasted time asdevelopment proceeds down the wrong path, withprogrammers creating a different product than thecustomer wants. An effective way to prevent this istasking customers and programmers to develop therequirements together. During this phase, the customersand the developers need to document and understand acommon vision of what the product will be. This mayinvolve developers learning some of the language of thecustomer’s business, and the customers learning some

software terms. Having some common language helps theprogrammers and customers communicate betterthroughout the project, a key to good results. Often, therequirements stage will become easier once customers anddevelopers have worked together this way a few times. Beyond the requirements phase, continuing to includethe customer in the development process helps ensure thedeveloping product stays on target to meet the productgoals. One common way this can be accomplished is tohave the developers do some rapid prototyping of theproduct framework and interface, then allow the customerto experience the evolving look and feel of the product.Customer feedback at this stage can save a lot ofprogramming changes later in the process and helps tofurther define the product. The more closely programmersand customers work throughout all phases ofdevelopment, the better the product will meet thecustomer’s expectations. This improves quality bypreventing the product from turning into somethingdifferent from what the customer wants, thereby savingmuch time in the end.

2.2 People

It is important to have the right people working on asoftware project. This means software engineers who areknowledgeable, skilled and satisfied with their work. It iseven more important to have a project manager that workswell with people and values their contributions. No singleperson can ensure project failure more effectively than theproject manager. Studies indicate that people relatedissues have the biggest impact on programmerproductivity and software quality [1]. Individualproductivity has been reported to vary by up to a factor often between programmers with similar experience levels.Team productivity has been reported to vary by as muchas a factor of five. With people issues having so muchpotential power over the outcome of a project, it makessense for leaders to learn what they can do to have apositive influence in this area. The most common peopleissues are staffing, motivation, and the work environment. When selecting staff, it is important to take the time tofind the best possible people. The selection process shouldnot be limited to the candidates’ professional skills andknowledge. Rather, it should provide ways to determinewhat type of employee the candidate is likely to be,whether the candidate fits with the work environment, andif he has the potential to contribute to the teamframework. Since many software projects are now largeenough to require a team of people, one should payattention to the composition of each team in terms ofdevelopers skills, task assignments and compatibility. Itoften takes time for people to learn to work together as ateam, and some managers have success by providing someteam building training or activities to jump start thisprocess. Another key to having good staff is providing

318

training. Ensure developers have the time and opportunityfor training to develop the project skills they need. Having selected excellent staff, or making the best ofexisting staff, motivation is necessary to buildproductivity. Motivated individuals tend to work longerand harder than others. Different factors motivatedifferent people. Part of the project manager’s job is toknow team members well enough to know what motivatesthem. Among the top motivators for programmers are theopportunity for professional growth, achievement, andchallenging work. Some people measure their worth interms of money, and are motivated by a bonus or raise asa reward for a job well done. Others enjoy the opportunityto travel to professional conferences and the recognitionthat comes from presenting their work among peers. Somepeople want their work to be recognized within theorganization. This can be accomplished by giving awards,or just taking the time to stop by and comment on theprogress of their project. Morale building activities, suchas getting the group together for a social meal or activity,can also be effective motivators as well as team builders.In any event, knowing what motivates your team, anddoing your best to provide such opportunities can improveproductivity for any project. Many organizations pay little attention to the workenvironment. To facilitate productive programming, theworkplace should provide quiet spaces with a minimum ofinterruptions [3]. Programming is the type of work thatrequires periods of concentration, and each time thethought process is broken, it takes some time for thedeveloper to become reimmersed in thought. Minimizinginterruptions due to telephones ringing, pagers buzzingand people dropping by can help programmers make moreeffective use of their time. For this reason, ideally, thereshould be no more than two programmers per office. Ifpeople are to be paired together in offices, be sure to payattention to putting compatible people together to avoidunnecessary stress. To enhance teamwork, all teammembers should be located in close proximity.Programmers also need physical resources such ascomputers and test equipment, and the workspace shouldprovide adequate space for these items. There should alsobe a place, apart from the offices, where the team canmeet informally to discuss the project.

While studies over the past decade support theimportance of good processes as a way to reduce deliverytime, it is important that these processes are value added.This means the process must make development easier orbetter than it is without the process. Because processes aresometimes applied in a strictly arbitrary bureaucraticfashion, many programmers have come to dread the veryword. The best way to insure a process does not fall intothis category is to allow the people who will use theprocess to develop it. In order to make this approachwork, a manager must first think carefully about themotivation for implementing or changing the process. Themanager must then clearly communicate the goal to theprogrammers and have them develop the process. Thiswill result in a process that the programmers will use,because they developed it to make their work easier andbetter.

2. 4 Technology

The technology chosen for a project has the potential toshorten or lengthen the development time. When selectinga technology, it is important to consider the product, thestability and longevity of the supplying company, and theexperience of your staff working with similar products. Itis often possible to gain productivity by switching to anewer technology that is easier to use. For example, in thepast, changes from machine languages to high levellanguages have facilitated a tremendous productivityimprovement during the coding phase of a project. Onemust be sure to plan for the inevitable time needed tomake the switch, including purchasing, installing andtesting new products and staff training time. It isimportant to be aware that selecting a very new, unproventechnology can add substantial time and risk to adevelopment project. This time is typically spent workingout problems with the new technology instead ofdeveloping the product.

3 CONCLUSIONS

By increasing their awareness of productivity factors, andusing this information when managing softwaredevelopment projects, managers can have a positiveimpact on productivity. Many of these same techniquesalso help to improve product quality and customersatisfaction.

2. 3 Processes

The processes involved in software development are putin place to standardize development practices, a verynecessary element to ensure quality. Good processes willalso result in consistent documentation. A full range ofrecommended practices for various levels of productquality has been developed by the Software EngineeringInstitute and is called the Capability Maturity Model [4].Utilizing such resources as a model can benefit any typeof serious software effort.

REFERENCES

[1] S. McConnell, “Rapid Development”, Microsoft Press,

1996.

[2] D. Phillips, “The Software Project Managers

Handbook”, IEEE, 1998.

[3] T. DeMarco, T. Lister, “Peopleware”, Dorset House,

1987.

[4] Carnegie Mellon University/Software Engineering

Institute. “The Capability Maturity Model”, Addison-Wesley, 1995.

319

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务