is a proper way of planning and leading software projects. It is a part
of project management in which software projects are planned, implemented, monitored, and controlled. Importance of Software Project Management: Planning: The software project manager lays out the complete project’s blueprint. The project plan will outline the scope, resources, timelines, techniques, strategy, communication, testing, and maintenance steps. SPM can aid greatly here. Leading: A software project manager brings together and leads a team of engineers, strategists, programmers, designers, and data scientists. Leading a team necessitates exceptional communication, interpersonal, and leadership abilities. One can only hope to do this effectively if one sticks with the core SPM principles. Execution: SPM comes to the rescue here also as the person in charge of software projects (if well versed with SPM/Agile methodologies) will ensure that each stage of the project is completed successfully. measuring progress, monitoring to check how teams function, and generating status reports are all part of this process. Time management: Abiding by a timeline is crucial to completing deliverables successfully. This is especially difficult when managing software projects because changes to the original project charter are unavoidable over time. To assure progress in the face of blockages or changes, software project managers ought to be specialists in managing risk and emergency preparedness. This Risk Mitigation and management is one of the core tents of the philosophy of SPM. Budget: Software project managers, like conventional project managers, are responsible for generating a project budget and adhering to it as closely as feasible, regulating spending and reassigning funds as needed. SPM teaches us how to effectively manage the monetary aspect of projects to avoid running into a financial crunch later on in the project. Maintenance: Software project management emphasizes continuous product testing to find and repair defects early, tailor the end product to the needs of the client, and keep the project on track. The software project manager makes ensuring that the product is thoroughly tested, analyzed, and adjusted as needed. Another point in favour of SPM. Project: A project is a planned activity. A Software Project is the complete procedure of software development from requirement gathering to testing and maintenance, carried out according to the execution methodologies, in a specified period of time to achieve intended software product. Projects can vary from simple to difficult and can be operated by one person or a hundred. The following characteristics distinguish projects: 1) non-routine tasks are involved 2) planning is required; 3) specific objectives are to be met or a specified product is to be created 4) the project has a predetermined time span 5) work is carried out for someone other than yourself 6) work involves several specialism 7) people are formed into a temporary work group to carry out the task 8) work is carried out in several phases 9) the project is large or complex. Characteristics of Software Project( soft. Proj. vs other proj.): Invisibility: When a physical artefact such as a bridge is constructed the progress can actually be seen. With software, progress is not immediately visible. Software project management can be seen as the process of making the invisible visible. Complexity: Per dollar, pound or euro spent, software products contain more complexity than other engineered artefacts. Conformity: The 'traditional' engineer usually works with physical systems and materials like cement and steel. These physical systems have complexity, but are governed by consistent physical laws. Software Developers have to conform to the requirements of human clients. It is not just that individuals can be inconsistent Organizations, because of lapses in collective memory, in internal communication or in effective decision making, can exhibit remarkable 'organizational stupidity'. Flexibility: That software is easy to change is seen as a strength. However, where the software system inter- faces with a physical or organizational system, it is expected that the software will change to accommodate the other components rather than vice versa. Thus software systems are particularly subject to change. Software Development Life Cycle: Requirements analysis: starts with requirements elicitation or requirements gathering which establishes what the potential users and their managers require of the new system. It could relate to a function that the system should do something. It could be a quality requirement - how well the functions must work. Architecture design: The components of the new system that fulfill each requirement have to be identified. Existing components may be able to satisfy some requirements. In other cases, a new component will have to be made. These components are not only software: they could be new hardware or work processes. Although software developers are primarily concerned with software components, it is very rare that these can be developed in isolation. Detailed design: Each software component is made up of a number of software units that can be separately coded and tested. The detailed design of these units is carried out separately. Code and test: refers to writing code for each software unit. Initial testing to debug individual software units would be carried out at this stage. Integration: The components are tested together to see if they meet the overall requirements. Integration could involve combining different software components, or combining and testing the software element of the system in conjunction with the hardware platforms and user interactions. Qualification testing: The system, including the software components, has to be tested carefully to ensure that all the requirements have been fulfilled. Installation: This is the process of making the new system operational. It would include activities such as setting up standing data (for example, the details for employees in a payroll system), setting system parameters, installing the software onto the hardware platforms and user training. Acceptance support: This is the resolving of problems with the newly installed system, including the correction of any errors, and implementing agreed extensions and improvements. Software maintenance can be seen as a series of minor software projects. In many environments, most software development is in fact maintenance. Plan: for an activity must be based on some idea of a method of work. For example, if you were asked to test some software, you may know nothing about the software to be tested, but you could assume that you would need to: 1) analyse the requirements for the software 2) devise and write test cases that will check that each requirement has been satisfied 3) create test scripts and expected results for each test case 4) compare the actual results and the expected results and identify discrepancies. Method: relates to a type of activity in general, a plan takes that method (and perhaps others) and converts it to real activities, identifying for each activity: 1) its start and end dates 2) who will carry it out 3) what tools and materials - including information - will be needed. The output from one method might be the input to another.
Ways to Categorise Software Project
1. Compulsory versus voluntary users: In workplaces there are systems that staff have to use if they want to do something, such as recording a sale. However, use of a system is increasingly voluntary, as in the case of computer games. Here it is difficult to elicit precise requirements from potential users as we could with a business system. What the game will do will thus depend much on the informed ingenuity of the developers, along with techniques such as market surveys, focus groups and prototype evaluation. 2. Information System versus Embedded Systems: Information Systems helps in office day to day processes and embedded system are used to control machines. Examples of Information system are A stock control system, transaction processing system, knowledge management system, learning management system, database system etc. While Embedded systems control Microwave oven, AC, Mp3 Player, Digital Camera, Washing Machine etc. 3. Outsourced Project: Most of the companies outsource parts of its work to other companies. There can be several reasons to outsource project, e.g. company does not have sufficient expertise, or project is to be completed in limited period in that case it can be outsourced to company with their development centre. Outsourced project fetch one time revenue in good amount while product based company project earn over period of time. 4. Object-Driven Development: Project also vary depending on the aim of the project. If aim of the project is to create product then client has the responsibility for justifying the product. In that case Service level agreements are important as organisations contract out functions to external service suppliers. Stakeholder: It is a person, group or a company which can affect or get affected by a decision, activity or the outcome of the software project. It is important in order to identify the exact requirements of the project and what various stakeholders are expecting from the project outcome. Type of Stakeholders: 1. Internal Stakeholder: An internal stakeholder is a person, group or a company that is directly involved in the project. For example: Project Manager, Project Team, Company, Funders 2. External Stakeholder: An external stakeholder is the one who is linked indirectly to the project but has significant contribution in the successful completion of the project. For ex: Customer, Supplier, Government Setting Objectives and Goals: The SMART is sometimes used to describe well-defined objectives: Specific: Effective objectives are concrete and well defined. Vague aspirations such as 'to improve customer relations' are unsatisfactory. Objectives should be defined so that it is obvious to all whether the project has been successful. Measurable: Ideally there should be measures of effectiveness which tell us how successful the project has been. For example, to reduce customer complaints' would be more satisfactory as an objective than 'to improve customer relations". The measure can, in some cases, be an answer to simple yes/no question, e.g. Did we install the new software by 1 June?" Achievable: It must be within the power of the individual or group to achieve the objective. Relevant: The objective must be relevant to the true purpose of the project. Time: constrained There should be a defined point in time by which the objective should have been achieved. Objectives: 1)to implement the new application on time and within budget 2) to implement the new software application with the fewest possible software errors that might lead to operational failures 3) to design a system that is user-friendly. 4) to produce full documentation for the new system. Management: It has been suggested that management involves the following activities planning-deciding what is to be done: organizing-making arrangements: staffing-selecting the right people for the job etc.; directing-giving instructions: monitoring- checking on progress; controlling-taking action to remedy hold-ups: innovating-coming up with new solutions; representing - liaising with clients, users, developer, suppliers and other stakeholders. The effectiveness of all activities such as scheduling and staffing, which are planned at a later stage, depends on the accuracy with which the above three project parameters have been estimated. Scheduling: Based on estimations of effort and duration, the schedules for manpower and other resources are developed. Staffing Staff organization and staffing plans are made. Risk Management: This activity includes risk identification, analysis, and abatement planning. Miscellaneous Plans: This includes making several other plans such as quality assurance plan, configuration management plan, etc.