How do Software Development Lifecycle, Systems Development Lifecycle, and Project Management Lifecycle differ?
Court Jordan, MS UX/HCI
?? Experienced startup builder & innovator | Product & Service designer & strategist | Skier & ice hockeyer | Book dragon, francophone, philosopher and tea connoisseur
Software Development Lifecycle Overview
Phases
The Software Development Lifecycle (SDLC) consists of the following phases: starting the project, researching and identifying requirements, analyzing the system, designing the system to various levels of fidelity, coding and testing, performing system/integration testing and user acceptance testing (UAT), implementing the system, winding up the project, maintaining what’s been released, and ultimately, retiring features (Leon, 2015) that have outlived their usefulness or were not successfully adopted by enough users. Depending on the size of the project, some of these phases may not be included or may be significantly shortened (Leon, 2015).
Estimate work, clarify scope, define standards
During the project start-up phase, an agency who is working with a client will study and get clarification on the proposal and/or contract, make an estimate of work, clarify scope and the degree to which the client will be participating (Leon, 2015). An in-house team will do much of this, with the exception of the contract with a client, as their client is essentially the rest of the company. Both agencies and in-house teams will define the standards for the project plan, as well as the specifics of the project plan, infrastructure, processes, and documentation and testing standards (Leon, 2015).
Research and document requirements
In the next phase, the team will research and document user requirements, as well as creating a detailed plan for backup/recovery and meeting security requirements (Leon, 2015). If they are creating a new product, the team needs to understand what functionality the software will provide (Leon, 2015) and what tasks they expect users to perform using the application, as well as the underlying processes. If enhancing an existing product or feature, the team will need to analyze how the system or feature currently behaves and any constraints that currently govern that behavior, as well as identifying weaknesses in the current processes (Leon, 2015) in order to determine how to improve the user experience, such as optimizing the task flow or more seamlessly integrating it into the rest of the application.
Perform cost-benefit or impact analysis of potential solutions
After completing this analysis, identifying requirements, and documenting known problems, the team moves into the systems analysis phase. This entails studying the requirements documentation, evaluating alternatives via an impact or cost-benefit analysis, determining system requirements for reliability, performance, security, backup/restore capabilities, and error recovery (Leon, 2015). After discussion with stakeholders, the team may decide to make a prototype to test their hypotheses around key task flows.
Create high- and low-level design documentation
The next phase, systems design, is where the project team creates detailed design documents, beginning with the high-level design, where they set design objectives and constraints (Leon, 2015). They can choose to refine the prototype here, getting more granular with the task flow, information architecture, field labels, help text, error messages (Leon, 2015). They can measure task success and failure rates, as well as better understand users’ expectations of how the application will behave, their perception of ease-of-use, and their general sentiment in using the application or feature. This high-level document (HLD) will also capture system architecture technology and network requirements, and any dependencies (Leon, 2015). Moving to the low-level design document (LLD), the developers will identify coding standards and skeletons to use, and write the specification for each program, including logic, structure, inputs/outputs, error and help messages, as well as work with QA on the unit testing plan (Leon, 2015).
Perform system/integration and regression testing
After the high- and low-level design documents and testing plan have been created, the developers and QA move into system/integration testing, such as checking that code meets specifications, finalizing error and help messages, conducting unit testing, identifying and fixing errors (Leon, 2015). These teams then move into system/integration testing, which could incorporate a beta testing program, wherein actual users test the beta version of the product. This stage also includes regression testing and reporting findings (Leon, 2015). Once the system/integration testing is complete, the development and QA team members perform user acceptance testing to ensure that the system satisfies the acceptance criteria, identifying any discrepancies and fixing any errors (Leon, 2015).
Deploy to production
After development and QA have thoroughly tested the new product or feature in a staging environment, developers implement the new solution, deploying the code to production. This implementation phase often includes training users on the system (Leon, 2015). At this point, depending on the size of the company, if there is a maintenance team, they will take over to handle support and further enhancement requests.
Perform retrospective and archive project documentation
At that point, the project moves into the windup phase, wherein the team holds one or more retrospectives to determine what went well, what could be improved, and what needs to be added for the next project. The team members are now free to help with other projects. As the project then moves into the maintenance phase, if the project was developed following a good Software Configuration Management (SCM) system, then the maintenance team will have all information such as current issues, how to prevent errors, appropriate support procedures, accurate technical documentation, and robust user documentation (Leon, 2015).
Once a product or feature has reached the end of its lifecycle, which could be due to technological advancements, outliving its usefulness, poor adoption, inadequate documentation, or not meeting user expectations, it is determined that maintaining or enhancing the feature is no longer cost-effective, in which case the product or feature is removed, to simplify code for developers and free up QA resources from continuing to need to test this during each release.
Strengths and weaknesses of SDLC
Although the SDLC has some strengths, in that it is very thorough and greatly mitigates risk and failure, since the project is carefully planned, each task must be completed sequentially, and there is robust quality testing in both the system integration and user acceptance testing phases, with feedback gathered throughout the process. However, it has many weaknesses, such as high ramp-up time for new people added to the project, a lot of potential for communication breakdown, especially with international teams, where team members may rarely work in the same time zone, there are often language barriers, and two cultures may be at different ends of cultural expectation norms, including power distance, or how empowered a team member is to make decisions without consulting a manager, which is very low in the US (the team member is more empowered), but very high in popular hiring locations for software companies, such as India. Also, due to the complexity of software projects, putting more people on a project actually increases the delays, in a phenomenon known as Brooks’ law (Leon, 2015).
In addition to these team dynamic areas, developers also have to contend with several problems, including problems with shared data problem, multiple maintenance, and simultaneous updating. In the shared data problem, developers need to avoid overwriting another person’s work, so they download the source code to their own computers, effectively creating their own workspace (Leon, 2015). To deal with the multiple maintenance problem, developers created centralized libraries of components, which were the predecessors of code repositories like Github. To get around the simultaneous update problem, wherein there is no restriction to the repository and no gatekeeper to validate changes being introduced into the code, it is essential that the team have a solid Software Configuration Management (SCM) setup in place, so that it’s clear who can make changes, all users are updated of changes, and a gatekeeper determines which changes will be pushed to the main code branch (Leon, 2015).
Ways to improve SDLC
Since software projects are inherently complex, project managers need to have a plan and tools to ensure that changes are well-planned, communications do not break down, they have a proactive warning system to try to avoid potential issues, and they need to record everything to improve troubleshooting capabilities. They also have to deal with employee turnover, so need to ensure that the project’s success is based on processes and not dependent on a particular employee’s knowledge and skills (Leon, 2015).
By implementing a Software Configuration Management system, a company can realize the following benefits: improved competitiveness in the market, better customer service and higher customer satisfaction, better return on investment, improved control and handling of complexity, improved security, ability to reuse more components, lower costs to maintain the system, more robust quality assurance, faster identification of bugs and turn-arounds to release fixes, development that depends on processes rather than particular people, and acceptance criteria to ensure that the correct solution was built (Leon, 2015).
Systems Development Lifecycle Overview
Phases
The Systems Development Lifecycle (SDLC) consists of the following phases: planning the project, analyzing system requirements, creating an outline for the specifics aspects of the system, beginning the coding from the outlines from the design stage, testing the system, implementing it, and maintaining the system (Preston, 2020). SDLC focuses more on the security of a system.
Decide if the project benefits outweigh the costs
In planning the project, the team needs to identify problems in the company, then decide whether the project’s benefits outweigh its costs in terms of time, human resources, and budget. The team then defines the scope of the project, as well as an outline for the development cycle to identify any potential problems (Preston, 2020). They will also create a project schedule during this phase.
Analyze system requirements and identify current weaknesses
During the analysis phase, the team analyzes the requirements and may create a prototype to test hypotheses. They also determine development and maintenance costs. If there is a current system, they identify weaknesses in the system and ideate on how to improve them. They will also determine whether they should build the entire system or buy either the system in its entirety or components of the system (Evans, 2019). They evaluate the risks and impact of the system on the company. Information security teams then assess the project from a security perspective (Evans, 2019). The team performs research to understand the needs of end users and creates a cost-benefit analysis, including reductions in cost and errors, as well as enhanced customer satisfaction and a larger share of the market (Evan, 2019). During this phase, developers often create a software requirement specification (SRS) that includes the software and hardware specification, as well as the system’s network requirements (Preston, 2020).
Design system requirements
After the analysis phase, the team moves into the design phase. As security is critical in SDLC, the team designs the user authentication or encryption methodologies and creates a backup/restoration procedure (Evan, 2019). They will also create specifications for database and file requirements, as well as procedures for system startup and shutdown. During this phase, developers will create an outline of the application, focusing on the user and system interfaces.
Code and build the system
Moving into the development stage, the developers begin coding and building the system, including its security features (Evan, 2019). They use the program specifications from the design phase to describe the program logic and processing requirements (Evan, 2019). Database administrators or back-end developers build the database that the system will use, and network engineers integrate the hardware that will support the entire system (Janine, 2022).
Perform rigorous testing
Before deploying into production, developers and quality assurance teams test the system rigorously. There are three tests: unit testing, system testing, and parallel testing. In unit testing, the team identifies any issues with the system in a standalone environment, focusing on decision logic, integration testing, error handling, stress testing and file management (Evan, 2019). In the next phase, system testing, they focus on areas such as security testing, input/output verification, and system performance (Evan, 2019). Finally, in a virtual environment, they perform the parallel testing, to ensure that the new system is equivalent or better than the current system (Evan, 2019).
Set up and release systems
Finally, they move into implementation, where they set up the physical and virtual systems and release them to the public. This phase includes transitioning from the old system to the new, as well as migrating any remaining data (Evan, 2019). It addresses installation procedures and ensures that there is a backup/restoration process, wherein they can roll back changes if the transition fails (Evan, 2019). They will continue to have to monitor the system to identify maintenance needs, including addressing bugs or performance issues, and are responsible for making any additional changes to the system after implementation (Preston, 2020).
Strengths and weaknesses of SDLC
Although the strengths of the SDLC method outnumber the weaknesses, the weaknesses greatly impact the overall project schedule. Since the SDLC focuses on doing tasks sequentially, this requires more time. Scope creep is also a concern. During the feedback collection, the team may find that the end users will not be satisfied with the new system, which could cause further delays.
However, there are many strengths inherent in this robust framework, including having clear stage progression, ability to iterate, and extensive documentation and guidelines (Preston, 2020). This enables team members to be more easily replaced, since processes, knowledge and decisions have been documented throughout the project. Due to the rigorous testing, teams reduce the risk of releasing major bugs or performance issues to the public.
领英推荐
Ways to improve SDLC
The SDLC method is an older method that has, in many ways, outlived its usefulness. Although it is still used today, there are other methods that seem like they would work better, including the V-model, spiral, agile, Big Bang, and iterative methods. The V-model is similar to the waterfall method, but eliminates a major weakness by adding a testing phase to every development stage to catch potential bugs or defects (Preston, 2020). Unlike the V-model which is strict and disciplined, the spiral method is flexible, focusing on the four main phases of a project, going around and around in a spiral until the project is deemed complete (Preston, 2020). It is good for large projects that can incorporate feedback early on in the lifecycle (Preston, 2020). The Big Bang method is the most flexible and is often used when customers don’t know what the final product should look like (Preston, 2020). It is used mainly for small projects or experimental life cycles that are used to help other projects in the same company (Preston, 2020). The final method is iterative; it focuses on repetition, creating a new version of the software for every phase. Because development is done early in the lifecycle, the cost of implementation is less (Preston, 2020).
Many software companies, even very technical ones, use an adaptive, agile development approach, reducing the concerns around resource, budget, and time constraints. Agile enables each team member to perform their tasks simultaneously, thus enabling multiple parts of a project to progress more quickly, as will be discussed in greater detail in the next section.
Project Management Lifecycle Overview
Development approaches and phases
There are several development approaches a company can take using the project management lifecycle: predictive, hybrid, or adaptive. A predictive approach is useful when the project and product requirements can be defined, collected, and analyzed at the start of the project. This may also be referred to as a waterfall approach. In the hybrid approach, which is a mix of the predictive and the iterative or incremental approaches, project teams continually adapt as they gather more feedback during the progression of the project. In the iterative approach, the team clarifies scope and requirements by gathering feedback from internal and external stakeholders, through interviews, usability testing, satisfaction surveys, and more. In the incremental approach, teams add more features and functionality to the system, getting feedback throughout the process. Finally, there is the adaptive approach, wherein the team evolves the product based on user feedback — agile is an example of this approach.
Predictive lifecycle development approach
In a predictive project management lifecycle development approach, the phases of a project include a feasibility assessment, designing, building, testing, deploying, and closing. During the feasibility phase, the project team determines if the business case the project is based on is a valid one, and if the company will actually be able to deliver the expected outcome. In the next phase of design, the team analyzes and plans the design of the project deliverable. Next comes the build phase, wherein the team constructs the deliverable in conjunction with integrated quality assurance testing. This continues in the test phase, when the team does a final review to ensure that the product meets acceptance criteria and user expectations. Next, the project deliverables are deployed into production, then finally the project is closed, project information and deliverables are archived, and project team members are released to other projects (Project Management Institute, 2021).
Incremental lifecycle development approach
In an incremental development approach, the project could move from concept through several cycles of planning, designing, and building. In the adaptive approach, the project vision and plan are defined, then iterative cycles called sprints begin. At the end of each sprint, there is a functional deliverable and feedback is collected from stakeholders (Project Management Institute, 2021). During this time, the project team will also need to be identifying which major themes, or epics, need to be included in the next release cycle, after which they will break the epics down into features, then into user stories and tasks in the backlog.
Balance constraints and make trade-offs
During the course of the project, the team needs to establish and review the processes the team is using, to identify bottlenecks or blockers (Project Management Institute, 2021). As many things can change during the course of a project, including, but not limited to, available budget, unexpected costs, delivery dates, project teams need to continually balance these constraints, making trade-offs when necessary, such as reducing the number of requirements or releasing a minimally viable feature, rather than the originally planned, more robust one.
Define requirements
Within the Delivery Performance Domain of the project management lifecycle or framework, a team needs to define requirements, break down the total scope of work, and define when the project should be considered done, which means it must meet the acceptance criteria for quality (Project Management Institute, 2021). These requirements need to be clear, concise, verifiable, consistent, complete, and traceable. This includes ensuring that the requirement cannot be misinterpreted, that no requirements contradict other ones, and that each requirement has a unique identifier (Project Management Institute, 2021).
Strengths and weaknesses of Project Management Lifecycle
The Project Management Lifecycle is very concerned about ensuring stakeholders feel engaged and invested in the project. Project managers work to kick off the project, determine requirements, manage expectations, resolve issues, negotiate conflicts, prioritize functionalities and features, and make decisions with stakeholder buy-in. Thus, a strength of the Project Management Lifecycle is that project managers need to have strong soft skills, such as listening attentively, building interpersonal relationships, being empathetic, and managing conflicts, as well as leadership skills including creation the vision and applying critical thinking throughout the process (Project Management Institute, 2021).
Another strength is that project managers will work with stakeholders to generate a lot of solutions, then as a group, narrow down on the best one, dealing with trade-offs to handle human, time, and budget constraints.
However, project managers must also deal with the inevitable scope creep, which occurs when additional scope or requirements are added, without changing the schedule, budget, or available resources. To combat this problem, teams implement a change control system, wherein all changes are rated based on the level of effort vs expected value they will bring.
Ways to improve Project Management Lifecycle
Often, software companies hire project managers who have very strong technical skills, but may not have very strong soft skills in the areas of negotiation and people management. Providing training to these project managers in this area would likely reduce delays caused by conflicts.
In software companies, using an adaptive, agile development approach will reduce the problems around resource, budget, and time constraints, as well as the potential for the breakdown of communication, as team members will need to communicate, whether synchronously or asynchronously, often in order to align on expectations, resolve disputes, and meet deadlines.
For small teams, many team members will have to wear multiple hats to accomplish all of the tasks to make the project successful. In smaller teams, such as start-ups, there often is no clear delineation of roles and responsibilities, as everyone is doing a lot of things outside of their traditional job roles. In larger teams, it becomes more important for roles and responsibilities to be clearly defined, to avoid duplication or work and potential territorial disputes.
Comparison and contrast
When comparing Project Management Lifecycle and Systems Development Lifecycle, project teams need to do a cost-benefit analysis, as well as balance the needs of multiple stakeholders and their subjective understandings of what is most valuable, which can lead to scope creep.
With all three lifecycles, project teams need to determine whether the project output, in this case, the software or system, meets the needs and expectations of the users. If it doesn’t, they will need to provide training on the new software application or feature. For Software-as-a-Service applications, in the Project Management Lifecycle, project management teams also need to create the onboarding experience for an application, such as a product tour, how-to guides, call-outs to remind users to perform important tasks, and onboarding checklists to complete.
The Project Management Lifecycle includes twelve principles, one of which is systems thinking. Similar to the Systems Development Lifecycle, project managers must consider how their project works within a release of several projects or features, as well as how that entire release impacted the perceived ease-of-use of their product, as well as overall user retention and even expansion. Multiple project managers may be working on separate components of a feature deliverable, thus they will need to align with stakeholders, such as User Experience and Engineering, to ensure that the system components integrate seamlessly.
As with both Software and Systems Development Lifecycles, in the Project Management Lifecycle, project managers in highly regulated industries such as government, or who are working as part of an agency on a client project will need to be able to deal with change, whether it be to renegotiate a contract, mitigate changing costs, or follow a particular change protocol to obtain approvals from entities in external systems, such as those in the financial and government sectors.
In both Systems Development Lifecycle and Project Management Lifecycle, teams are evaluating and responding to system interactions, which can improve outcomes. Both explore alternatives, consider risk and unintended consequences, adjust assumptions and plans as they get feedback from different sources, including any client and the system’s end users, and identify potential future improvements. This is very similar to Software Development Lifecycle, where teams are evaluating and responding to stakeholder input, competitive research, usability testing, and customer feedback. Although many software companies have embraced agile to varying degrees, many teams unfortunately still have a system that is somewhere between Software Development Lifecycle, or waterfall, and true agile, so still are not realizing the true benefits of agile.
Whether it is a software, systems, or other type of project, project teams will need to adjust the framework they use to consistently create positive outcomes, considering ”the business environment, team size, degree of uncertainty, and complexity of the project” (Project Management Institute, 2021). In all three lifecycles, teams should analyze and understand the unique constraints and requirements for each project, then tailor their projects to “us[e] ‘just enough’ processes, methods, templates, and artifacts to achieve the desired outcome” (Project Management Institute, 2021). In addition, in all three, teams need to continually assess whether what they are building is actually meeting the needs of the entity financing or supporting the project, as well as the expectations of their end users.
All three seek to maximize positive outcomes, known as opportunities, while mitigating the risk of negative ones, also called threats. Projects in all three can run into similar issues: delay, escalating costs, technical failures, decreased performance, all of which can impact the company’s reputation (Project Management Institute, 2021). Opportunities, on the other hand, can be reduced time and cost, improvements to performance, a bigger share of the market, and an improved reputation (Project Management Institute, 2021).
All three also need to be adaptable, responding to unexpected factors, so as to mitigate the risk that the finished product will not meet the needs of internal or external stakeholders. During the course of the project, they may find an alternate solution that would work better than what was originally defined, such as new technological advancements. While making the change, project teams in all of these lifecycles will benefit from a holistic view towards modifying the plan, following a change management protocol to avoid problems like scope creep (Project Management Institute, 2021).
As with the Software and Systems Development Lifecycles, the predictive development approach of the Project Management Lifecycle entails defining and analyzing the project and product requirements when the project is first kicking off, which is also known as the waterfall approach (Project Management Institute, 2021).
During testing, all three lifecycles require the resultant system, application, or feature to be rigorously tested to ensure that it meets the acceptance criteria.
All three lifecycles need to be concerned with measuring the return on investment (ROI), as well as the adoption and end user satisfaction with the finished system or project. The Project Management Lifecycle uses various methods to rate end user satisfaction, including the Net Promoter Score (NPS), but also is concerned with team member satisfaction, including their emotional assessment of the project and ensuring that team members, often across the world, have good work/life balance and do not get burned out to the point that they decide to go to a different company (Project Management Institute, 2021). In all three, “any project team member or stakeholder can motivate, influence, coach, and grow the project team, regardless of role or position” (Project Management Institute, 2021).
In the Project Management Lifecycle, especially at a software company, project managers have to have both hard technical skills and soft skills, such as negotiation and managing people. They have to exhibit empathy, try to understand opposing viewpoints, and work towards a solution with many diverse stakeholders. Although Software Development Lifecycle does this as well, the managing of people’s needs and expectations is not as omnipresent as in the Project Management Book of Knowledge, wherein there are twelve principles around effective management and leadership.
References
Evans, B. (2019, January 7). The System Development Life Cycle: A Phased Approach to Application Security. Security Intelligence. Retrieved September 25, 2022, from?https://securityintelligence.com/the-system-development-life-cycle-a-phased-approach-to-application-security/
Leon, A. (2015). Software Configuration Management Handbook: Vol. Third edition. Artech House. Retrieved on September 22, 2022, from?https://eds-s-ebscohost-com.ccco.idm.oclc.org/eds/detail/detail?vid=2&sid=f7ac861a-eec2-4ce1-ad2a-98396df0ff25%40redis&bdata=JnNpdGU9ZWRzLWxpdmUmc2NvcGU9c2l0ZQ%3d%3d#AN=1155217&db=nlebk
Preston, M. (2020, January). 7 Phases of the System Development Life Cycle Guide. CloudDefense. Retrieved September 25, 2022, from?https://www.clouddefense.ai/blog/system-development-life-cycle
Project Management Institute. (2021). A Guide to the Project Management Body of Knowledge (PMBOK? Guide) — Seventh Edition and The Standard for Project Management (ENGLISH): Vol. Seventh edition. Project Management Institute. Retrieved on September 24, 2022, from?https://eds-p-ebscohost-com.ccco.idm.oclc.org/eds/detail/detail?vid=1&sid=03b98785-86e3-43ec-b3f9f15e0a5b62c0%40redis&bdata=JnNpdGU9ZWRzLWxpdmUmc2NvcGU9c2l0ZQ%3d%3d#db=nlebk&AN=2942429
Ungvarsky, J. (2022). Systems development life cycle (SDLC). Salem Press Encyclopedia of Science. Retrieved on September 22, 2022, from?https://eds-s-ebscohost-com.ccco.idm.oclc.org/eds/detail/detail?vid=13&sid=56104c60-ba09-44e0-b9ec-7296502ad332%40redis&bdata=JnNpdGU9ZWRzLWxpdmUmc2NvcGU9c2l0ZQ%3d%3d#AN=119214383&db=ers
Professional Website Developer with 7+ Years of Experience
5 个月Court, thanks for sharing!