The concept behind project management and software quality assurance is very important in software development. In essence any software project done without focus to the two concepts above is not consider to be a project but a mock up project. To achieve the desired results of a project, the project must focus on the resources, duration allocated and availability of the inputs. The entire requirements cannot be managed effectively without the use of project management techniques. It is also important to note that a project management success is determined by the quality of the product and therefore any project conducted under project management must be accompanied by quality assurance techniques that help in fostering the desired outcome of the project.
There exists software project management techniques highlighted as the standards and must be strictly followed by all the software engineers. These techniques include project planning, project scheduling, risk assessment and managements and finally the management of the people components. All these techniques are meant to ensure that no important step is skipped by the developer and that all the stages are strictly and carefully implemented in the project apart from the human resource development and risks assessment and planning. The last and most important process is the quality assurance technique that makes sure that the whole project management is quality oriented and that the whole process is valid and correct.
Software project management and quality
Software project management is the practice that is not only embraced in software engineering but also in all projects that involve a lot of resources, scheduling and result oriented. In essence all the projects must have a starting point and a specified finishing point. It must also have the participation of all the project stakeholders from executive, system analysts, software engineers to the novice users. The most used sample plan for project management can be extracted from the University of Texas. This plan is used in the identifications of several key issues that must be adhered and addressed conclusively while conducting a project plan. The main objectives of these key issues are geared towards realizing minimized cost, reduction of risks and timely delivery of the software product. Similarly, an efficient project management plan must address very vital and mandatory components which include the people’s components, the process itself, and the project.
The project management process helps the software engineer to integrate all the best standards and practices while undertaking a project management to increase chances of success in a project. It also depicts how one can effectively apply the best practices to a specific project that require intensive concentration apart from covering the entire project life cycle of the project without skipping any of the important stage of the life cycle. The project management process also assists software engineers to implements case studies of the real working projects which guarantee a success in any software project management.
Importance of software project management
Khosrowpour 2004, found that the birth of software development was as a result of the software crisis witnessed five to six decades ago. The crisis erupted caused extremely high software failures that were accompanied by over budgeting, over scheduling and lateness and high speed development of hardware components that demanded that software also must accelerate in tandem with the hardware. This was because of the development of very complex and powerful computer components due to the technology of transistors improvement techniques that were needed for project in software management also were integrated to counter the crisis.
An effective project management may not guarantee that a project will succeed but at the same time, a poor project management is a guarantee to project failures. All the projects entailing software’s have several aspects that make them unique compared to other non software projects. These aspects include.
1) All the software products are not tangible and therefore it is not easy to manage compared so engineering projects.
2) It is not an easy task to claim a completeness of a project. However, it can be ascertained that a given percentage of a project is complete even if an outcome of it is not visible.
Kan 2003, noted that software engineering and its techniques is a new discipline and therefore there is a limited understanding and measurement value used in software measurements. The technological experiences are changing very fast and that software engineers must move with it otherwise they are likely to be rendered obsolete in the field of software engineering. It is very important to note that most software projects use emerging technology by subdividing very large project into a small unit for easy management.
In software engineering, it is paramount to note that it is wise to stick to the set of activities that spearhead any software project. These activities include projects planning, projects scheduling, risk management and assessment and finally people management.
The most important phenomenon while implementing a software project is to understand a specific problem. This is very vital when it comes to the estimation of the costs, time line, resources, and deliverables in each stages and the amount of resources to be allocated to the specific project. While designing a realistic plan, it is essential to gain explicit knowledge of the deliverables, final products, and the resources available for the entire project. There exist several plans.
Jayaswal and Patton 2007, listed the first plan as the software plan. This plan entails the central and a major plan in software project management. It describes the step by step process through which a software project is expected to adhere to. That is, it will give the project guidelines through which the entire project follows and what to do in case there is a necessity to modify the entire plans. The next plan is the quality assurance plan. This plan will guarantee that the end result or the outcome of the entire project is realized. This helps the software engineer to conduct quality and predict the outcome of the project so as to ascertain whether quality and the expected results id being attain. It has specific and procedures that is strictly followed to ensure quality is achieved in the long run. The third plan takes in account the validation plan. This in specific dictate how the user and the client will validate and make sure that the intended product is achieved as per the client description.
The other plan is the plan that describes how the completed software is to be configured I the client computers so as to adapt effectively into the clients environment. It also defines the step by step installation procedures so as to achieve maximum performance.Maintenance plan is another plan that entails the full documentation of how to maintain the software product once it is release into the market so as to fix bugs. Staff development plan is another plan that is very essential in that all the staff who takes part in the project must be trained to use the new product and familiarize them in the usability of the new products.
This specifies the actual timeline that the project must takes and that the whole project must be divided into specific deliverable that must be meet in specific duration. There exists software management tools such as work bench, Microsoft project management tool that are very useful in project schedule to ensure that all the deliverables deadlines are meet. Project scheduling entails the process of time duration allocation to the maximum duration that each project has to take before completion. The project scheduling is also essential while reporting the progress of the project when demanded by the management and also monitoring the different sub goal realization by the dedicated teams working on a single project simultaneously.
Mubarak 2010, noted that while conducting a project schedule, it is important to consider a concept of Work Breakdown which entails several ways of breaking a large project into sub unit that are easily manageable. A work breakdown must factor in several components such as the work packages which define a logical and distinct unit of the work that must be accomplished, specific and unique tasks, deliverable to be achieved in each stage and may be include the milestones that is expect of the project. It is worth noting that a some activities and task can occur concurrently while others are independent to the proceeding and succeeding task. This then requires a critical evaluation of the tasks. That is to mean that some task may require inputs from the preceding stage thus making it dormant until the stage is explicitly completed and validated so that it does not transfer inappropriate data to the next phase.
It is usually very important to conduct documentations of all the work packages and tasks to be accomplished by the software project. This is done to ensure that there is a proper understanding between all the participants engage in a particular project. In the project schedule its necessary to capture relevant data such as a brief description of the task, the earlier starting date and the earliest ending dates, the amount of human resource needed in that project in terms of person month effort, prerequisites inputs and may the responsible group. This information is vital when calculating the critical path of the project which shows the maximum schedule and duration that a project is likely to take.
A critical path is the longest duration that a project is likely to take given that all the tasks take their maximum allocated timelines. Knowing the critical path is important since any delays to a given activity in the critical path, will translate to the delay in the entire project. Li, Boehm and Osterweil 2005, said a software engineer have come up very important tools that are vital in project tracking. An example of a very important tool is the Gantt charts. This tool is a network diagram that depicting all the activities in form of a chart that has the time lines plotted in the X axis while the tasks are depicted as bars in the Y axis Mccluskey & Korobow, 2009.
Risk management and assessment
While undertaking a project, it is necessary to be optimistic about the likelihood of a risk occurring and therefore action to counteract must be planned in advance. Risk occurrence account to a greater percentage of project failures and therefore it is not wise to take chances by not planning for the risk. Stamelos and Sfetsos, 2007 linked the risks involves to both natural and artificial risks. Most of the software risk that is anticipated include change management risks, staff turnovers, unavailability of hardware and software needed in the project, scope creep in the project that is already advanced, inadequate resources, project underestimation, introduction of new technology, delays of the inputs, etc. therefore, before embarking on the project it wise to critically assess the risk that pose a challenge to project proceeding to the next phase and planning for it.
People and human resource management
Typically it is essentially to understand that a project is undertaken by human being with the help of automated tools. However, human man power is very important in the success of a given project and that limited man power causes the project to lag behind schedule. In essence, projects will entails several phase that are unique and need different skills. This calls for the different stages to be assigned to specific groups with different skills so that the same group can conduct concurrent activities to the tasks that are not depended to the preceding phase. A good software engineer must be able to ascertain the effort per month required from one staff so as not to under staff or overstaffed a project which in turn compromise the milestones. It is also wise for the software engineer to chose and identifies a good and qualified team leader who will spearhead the deliverance of each deliverable Marchington &, Wilkinson ,2005.
Quality management in software development projects
Ainapure, 2008 observed that quality in software refers to reasonable and bug free software that is delivered on schedule and meets the scheduled allotted budget, meets functionality and expectations and finally a product that is maintainable. The core business of the software engineer’s and software analyst is to deliver quality software to their customers. Not only delivering quality result but also the software engineer is mandated to stick to the schedule and be within the allocated budget. This has invited scholars and researcher to unfold the techniques that can foster quality assurance in software development project. Mike Harding Roberts’ come up with the techniques that can be implemented to see that quality of the software product is achieved. He poses a question as to why most system engineers and analyst think that the delivery of quality software’s is difficult, expensive and that it takes longer to implement. He holds the view that most of the programmers are to blame for the poor quality of software product Kontio & Conradi, 2002.
Quality Assurance oversees that the project must be completed and conform to the customers specifications, standards, and functionality without any bugs. It keeps track of the development process form the initial stage of the software development to the final stage of software implementation and delivery to the customer. It is important to note that a quality assurance process in software development is cross cutting and engage all the phases of software development. Before the project initialization, software engineers must design a test plan that will be used to validate each deliverable in each stage to ascertain that quality of the software is achieved in the final stage.
The test plan must be subjected to review process and validation to eliminate vagueness in the plan as stipulated in the requirement and functionality document from the client. Test Plan consists of a documented list of the testing procedures such as the objectives, approach, scope and focus to the testing efforts. Any test plan must be accompanied by a test case which has a list if description about all the action, input, event and the expected results that is used to determine the defects and presence of bugs.
Wieczorek, Meyerhoff and Baltus,2001 suggested that in order to make sure that quality software product is achieved it vital to subject a software product into testing before submission t o the clients. The goal of software testing is to discover bugs from the software and fix it prior to implementation. Most of this testing is done under the controlled environments whereby some testing data is provided intentional and see the output of the process of testing. Testing data must also be provided in the initials stage which is similar to the real data just for tasting.
Software Verification and Validation
Software verification is a dedicated technique that is used to test and detect the possible failure that is likely to occur before the overall testing phase begins. This process involve an intensive process that include reviews, brainstorming, meetings, evaluating the final product against the documented functionality, plans, specifications, code review, etc . The Validation takes place to ascertain that the correct design has been achieved corrected by detecting defects, bugs, logical errors and input validation.
To achieve good quality software it is necessary for a software development team to embrace the following key aspect that will automatically lead to quality assurance if strictly adhered to the later.
Good Software Coding
Strict following the set out standards for coding is an automatic method to ensure that a software product meets the required quality. There are several reasons why software engineers must insist on accepted coding standards in a software development especially during the coding phase. The first and obvious reason is readability of the code. All the code that adhere to the standard are easily readable by the team unlike when the code is disorganized and disoriented making it very difficult for the team members to debug and trace bugs. A well commented code allows the team members to understand the algorithm that a team member used thus very easy to debug the c ode leading quality product. A good coding standard also defines good software that is easily maintainable in future and that it can easily be expanded to meet the new requirement, Last, et al, 2004.
A good software design helps the software engineer and his team to trace back to where the problem that is causing inconsistency to project requirements during testing. A good design also acts as a good guide to the software developers ensuring that no requirement is ignored or skipped in the design. Several software engineers argue that a good design defines software that is clearly understandable, maintainable and efficient. It noted that when a good design is implemented, the functionality of the system will be definitely optimum leading to quality product.
A professional and a good testing agent must also be identified and mandated with the overall task of testing the software product after development. An expert must have the ability to critically analyze the contents, inputs, outputs and come up with a convincing conclusion about the quality and functionality of the software product. The testing expert also must be oriented and particular to quality by having quality and attention qualities and attitude, Cook & Semouchtchak, 2004.
Software life cycle
British Computer Society ,2001 observed that the implementation of an explicit software life cycle is a guarantee to quality a product. It worth noting that good software must involve of all the process that guarantee quality assurance. Ignoring any of the phases in the cycle is a compromise to the quality and that quality assurances cannot be achieved via short cuts. The life cycle encompasses aspects such as project initialization, requirements specification and analysis, design phase, project documentation, test plan, coding phase, integration phase, testing phase, maintenance phase, updates phase, retesting phase, deployment phase. All this phases must follow to the later to guarantee quality assurance.
The main objective of this process is to unfold the defects and bugs that are uncaught in the software testing due to the logical errors which were uncovered in the software testing process. Carroll and Daughtrey, 2007 observed that it is also aimed at finding problems and reporting it to the designers but not to fix it. This process essentially takes the form of brainstorming sessions whereby the teams normally work together to uncover the problem.
In major software project management, team organization has been identified as the major cause of the project failures. Team organization is the major aspect and must be carefully addressed when undertaking a project that have the project participant geographically dispersed. This is because communication barrier can hinder the project development causing misunderstanding between the participants, Defranco-Tommarello & Deek, 2005.
Futrell, et al, 2002 said simulations can be very valuable mechanism used to find the inconsistencies and gaps in the functionally requirements. For example we can make up a mock up project in using automated tools available and present it to the clients. The testing procedures can also be done in real environment where real execution is done simultaneously with the current system so that the result is validated with the real results from the current system in operational. Another option is to acquire the test data execute it and then compare the result with manually computed values to validate the process.