In: Computer Science
What information on the competitive landscape should be included in a business plan? What frameworks would you use? What information on the key venture risks should be included in a business plan? Is it important for the business plan to be pessimistic or optimistic in regard to these risks?
A number of software development methodologies exist to encourage rapid design and implementation (e.g., agile software development, extreme programming, etc.). Select two of these methodologies and compare and contrast the specific product design and development processes each is attempting to address and improve.
Software development methodologies
Development methodologies is a battle between dogmatism and pragmatism. Dogmatism is people who just have a zeal – they say that this way is the way, if you deviate from this way, all is lost. Pragmatism, pulling together what works in the moment.
There are definite benefits to both. The people who are more dogmatic versus pragmatic, I believe produce a better level of insight into the system; because they’re really spending a lot of time focusing on their tool and what it can do and how to optimise it. They produce a better raw product. Pragmatists can look at all of these raw products and say, I’ll take that bit from there and that bit from there and can be more effective when it comes to changing requirements and changing projects.
What is a software development methodology?
Software development methodology is a process or series of processes used in software development. Again, quite broad but that it is things like a design phase, a development phase. It is ways of thinking about things like waterfall being a non iterative kind of process. Generally it takes the form of defined phases. It is designed to describe the how of the life cycle of a piece of software.
It is also codified communication. So you’re actually setting a set of norms between a group of people that say this is how you’re going to work and this is how you’re going to pass information between each of you in certain ways; whether that is documentation, whether that is discussion, whether that is drawings on paper.
Some examples
Surely there couldn’t be that many different software development methodologies. There are as many as you can possibly find and pretty much any time someone has one and decides to vary it even slightly from an existing one, they will put a new label on it and call it something new. That makes it quite hard to be across all of the different types.
One of the things I want to talk through is how unimportant it is to be fixed on using just one of these. I’m going to talk through a few different ones.
Software development methodologies
Successful projects are managed well. To manage a project efficiently, the manager or development team must choose the software development methodology that will work best for the project at hand. All methodologies have different strengths and weaknesses and exist for different reasons. Here’s an overview of the most commonly used software development methodologies
Agile development methodology
DevOps deployment methodology
These are the two methodologies to compare and contrast are as follows:
Agile development methodology
Teams use the agile development methodology to minimize risk (such as bugs, cost overruns, and changing requirements) when adding new functionality. In all agile methods, teams develop the software in iterations that contain mini-increments of the new functionality. There are many different forms of the agile development method, including scrum, crystal, extreme programming (XP), and feature-driven development (FDD).
Pros: The primary benefit of agile software development is that it allows software to be released in iterations. Iterative releases improve efficiency by allowing teams to find and fix defects and align expectation early on. They also allow users to realize software benefits earlier, with frequent incremental improvements.
Cons: Agile development methods rely on real-time communication, so new users often lack the documentation they need to get up to speed. They require a huge time commitment from users and are labor intensive because developers must fully complete each feature within each iteration for user approval.
Agile development methods are similar to rapid application development (see below) and can be inefficient in large organizations. Programmers, managers, and organizations accustomed to the waterfall method (see below) may have difficulty adjusting to an agile SDLC. So a hybrid approach often works well for them.
DevOps deployment methodology
DevOps is not just a development methodology but also a set of practices that supports an organizational culture. DevOps deployment centers on organizational change that enhances collaboration between the departments responsible for different segments of the development life cycle, such as development, quality assurance, and operations.
Pros: DevOps is focused on improving time to market, lowering the failure rate of new releases, shortening the lead time between fixes, and minimizing disruption while maximizing reliability. To achieve this, DevOps organizations aim to automate continuous deployment to ensure everything happens smoothly and reliably. Companies that use DevOps methods benefit by significantly reducing time to market and improving customer satisfaction, product quality, and employee productivity and efficiency.
Cons: Even in light of its benefits, there are a few drawbacks to DevOps: