software project management ieee software life cycle sqa software quality assurance ieee 730 scm software configuration management ieee 828 std software test documentation ieee 829 srs software requirements specification ieee 830 vv software verification and validation ieee 1012 sdd software design description ieee 1016 spm software project management ieee 1058 sud software user documentation ieee 1063 vte software project management is an art and science of planning and leading software projects it is a subdiscipline of project management in which software projects are planned implemented monitored and controlled history in the 1970s and 1980s software industry grew very quickly as computer companies quickly recognized the relatively low cost of software production compared to hardware production and circuitry to manage new development efforts companies applied the established project management methods but project schedules slipped during test runs especially when confusion occurred in the gray zone between the user specifications and the delivered software to be able to avoid these problems software project management methods focused on matching user requirements to delivered products in a method known now as the waterfall model as the industry has matured analysis of software project management failures has shown that the following are the most common causes insufficient enduser involvement poor communication among customers developers users and project managers unrealistic or unarticulated project goals inaccurate estimates of needed resources badly defined or incomplete system requirements and specifications poor reporting of the projects status poorly managed risks use of immature technology inability to handle the projects complexity sloppy development practices stakeholder politics eg absence of executive support or politics between the customer and endusers commercial pressures the first five items in the list above show the difficulties articulating the needs of the client in such a way that proper resources can deliver the proper project goals specific software project management tools are useful and often necessary but the true art in software project management is applying the correct method and then using tools to support the method without a method tools are worthless since the 1960s several proprietary software project management methods have been developed by software manufacturers for their own use while computer consulting firms have also developed similar methods for their clients today software project management methods are still evolving but the current trend leads away from the waterfall model to a more cyclic project delivery model that imitates a software development process software development process a software development process is concerned primarily with the production aspect of software development as opposed to the technical aspect such as software tools these processes exist primarily for supporting the management of software development and are generally skewed toward addressing business concerns many software development processes can be run in a similar way to general project management processes examples are interpersonal communication and conflict management and resolution active frequent and honest communication is the most important factor in increasing the likelihood of project success and mitigating problematic projects the development team should seek enduser involvement and encourage user input in the development process not having users involved can lead to misinterpretation of requirements insensitivity to changing customer needs and unrealistic expectations on the part of the client software developers users project managers customers and project sponsors need to communicate regularly and frequently the information gained from these discussions allows the project team to analyze the strengths weaknesses opportunities and threats swot and to act on that information to benefit from opportunities and to minimize threats even bad news may be good if it is communicated relatively early because problems can be mitigated if they are not discovered too late for example casual conversation with users team members and other stakeholders may often surface potential problems sooner than formal meetings all communications need to be intellectually honest and authentic and regular frequent high quality criticism of development work is necessary as long as it is provided in a calm respectful constructive nonaccusatory nonangry fashion frequent casual communications between developers and endusers and between project managers and clients are necessary to keep the project relevant useful and effective for the endusers and within the bounds of what can be completed effective interpersonal communication and conflict management and resolution are the key to software project management no methodology or process improvement strategy can overcome serious problems in communication or mismanagement of interpersonal conflict moreover outcomes associated with such methodologies and process improvement strategies are enhanced with better communication the communication must focus on whether the team understands the project charter and whether the team is making progress towards that goal endusers software developers and project managers must frequently ask the elementary simple questions that help identify problems before they fester into neardisasters while enduser participation effective communication and teamwork are not sufficient they are necessary to ensure a good outcome and their absence will almost surely lead to a bad outcome risk management is the process of measuring or assessing risk and then developing strategies to manage the risk in general the strategies employed include transferring the risk to another party avoiding the risk reducing the negative effect of the risk and accepting some or all of the consequences of a particular risk risk management in software project management begins with the business case for starting the project which includes a costbenefit analysis as well as a list of fallback options for project failure called a contingency plan a subset of risk management is opportunity management which means the same thing except that the potential risk outcome will have a positive rather than a negative impact though theoretically handled in the same way using the term opportunity rather than the somewhat negative term risk helps to keep a team focused on possible positive outcomes of any given risk register in their projects such as spinoff projects windfalls and free extra resources requirements management is the process of identifying eliciting documenting analyzing tracing prioritizing and agreeing on requirements and then controlling change and communicating to relevant stakeholders new or altered computer system requirements management which includes requirements analysis is an important part of the software engineering process whereby business analysts or software developers identify the needs or requirements of a client having identified these requirements they are then in a position to design a solution change management is the process of identifying documenting analyzing prioritizing and agreeing on changes to scope project management and then controlling changes and communicating to relevant stakeholders change impact analysis of new or altered scope which includes requirements analysis at the change level is an important part of the software engineering process whereby business analysts or software developers identify the altered needs or requirements of a client having identified these requirements they are then in a position to redesign or modify a solution theoretically each change can impact the timeline and budget of a software project and therefore by definition must include riskbenefit analysis before approval software configuration management is the process of identifying and documenting the scope itself which is the software product underway including all subproducts and changes and enabling communication of these to relevant stakeholders in general the processes employed include version control naming convention programming and software archival agreements release management is the process of identifying documenting prioritizing and agreeing on releases of software and then controlling the release schedule and communicating to relevant stakeholders most software projects have access to three software environments to which software can be released development test and production in very large projects where distributed teams need to integrate their work before releasing to users there will often be more environments for testing called unit testing system testing or integration testing before release to user acceptance testing uat a subset of release management that is gaining attention is data management as obviously the users can only test based on data that they know and real data is only in the software environment called production in order to test their work programmers must therefore also often create dummy data or data stubs traditionally older versions of a production system were once used for this purpose but as companies rely more and more on outside contributors for software development company data may not be released to development teams in complex environments datasets may be created that are then migrated across test environments according to a test release schedule much like the overall software release schedule project planning execution monitoring and control the purpose of project planning is to identify the scope of the project estimate the work involved and create a project schedule project planning begins with requirements that define the software to be developed the project plan is then developed to describe the tasks that will lead to completion the project execution is the process of completing the tasks defined in the project plan the purpose of project monitoring and control is to keep the team and management up to date on the projects progress if the project deviates from the plan then the project manager can take action to correct the problem project monitoring and control involves status meetings to gather status from the team when changes need to be made change control is used to keep the products up to date issue in computing the term issue is a unit of work to accomplish an improvement in a system an issue could be a bug a requested feature task missing documentation and so forth for example openofficeorg used to call their modified version of bugzilla issuezilla as of september 2010 they call their system issue tracker the word issue is also used as synonym for problem as in other english usage problems occur from time to time and fixing them in a timely fashion is essential to achieve correctness of a system and avoid delayed deliveries of products severity levels issues are often categorized in terms of severity levels different companies have different definitions of severities but some of the most common ones are high the bug or issue affects a crucial part of a system and must be fixed in order for it to resume normal operation medium the bug or issue affects a minor part of a system but has some impact on its operation this severity level is assigned when a noncentral requirement of a system is affected low fixed the bug or issue affects a minor part of a system and has very little impact on its operation this severity level is assigned when a noncentral requirement of a system and with lower importance is affected trivial cosmetic aesthetic the system works correctly but the appearance does not match the expected one for example wrong colors too much or too little spacing between contents incorrect font sizes typos etc this is the lowest severity issue in many software companies issues are often investigated by quality assurance analysts when they verify a system for correctness and then assigned to the developers that are responsible for resolving them they can also be assigned by system users during the user acceptance testing uat phase issues are commonly communicated using issue or defect tracking systems in some other cases emails or instant messengers are used philosophy as a subdiscipline of project management some regard the management of software development akin to the management of manufacturing which can be performed by someone with management skills but no programming skills john c reynolds rebuts this view and argues that software development is entirely design work and compares a manager who cannot program to the managing editor of a newspaper who cannot write general 10581998 ieee standard for software project management plans 1998 doi101109ieeestd199888822 isbn9780738114484 jalote pankaj 2002 software project management in practice addisonwesley isbn0201737213 murali chemuturi thomas m cagley jr 2010 software project management best practices tools and techniques jross publishing isbn9781604270341 resources on software project management from dan galorath project failure robert frese 20031216 project success and failure what is success what is failure and how can you improve your odds for success university of missourist louis retrieved 20150513 joseph gulla february 2012 seven reasons it projects fail ibm systems magazine retrieved 20150513 