What is a project?
A project is temporary efforts (with defined start and end points) aimed to create a unique product or service. Projects usually include the following limitations:
- project scope;
- development time;
- project cost or budget;
- resources (human, technical).
What is project management?
Project management is a set of principles, practices, and techniques applied for project teams control and project schedule, cost, quality and requirements control to achieve project specific goals.
What is software development methodology?
The methodology defines the processes, responsibilities and workflows necessary for aim achievement. So software development methodology is a set of the best practice to control software development process. Those methods also include guidance to improve quality and efficiency of software development efforts. Usually software development methodologies are related not only to the technical side but to the organizational aspects of software development process.
What are the project phases?
All projects can be managed better when divided into parts such as phases, stages, activities, tasks and steps. During the development process the project passes through specific phases. Their number can vary depending on used methodology. Collectively the project phases are known as the project life cycle. Usually there are the following stages of the project:
- Analysis & Design;
- Development (coding);
- Testing (validation);
- Deployment & Integration;
The most popular software development methodologies
At the moment there are lots of software development methodologies, each of them has its own recognized strengths and weaknesses. One software development methodology could not be appropriate for all projects. Each of the available methods is the best for certain projects types based on various technical, organizational, project and team considerations.
The most popular methodologies are:
Development Methods Comparison
Table 1 compares leading development methodologies. The focus is on high-level software processes, not on detailed methods. This list is not supposed to be comprehensive instead it lists the development methods that are commonly used. Table 1 includes advice for when to apply the methodology, and its pros and cons.
Table 1. Software development methodologies Comparison
|Methodology||When to Use It||Advantages||Disadvantages|
When the client expects no changes in the scope and is sure about how the final product will look
Could be used for government projects when you know the budget and duration of the project before it starts.
- The ability to determine project cost and time in the first stage
- The client does not spend much time (and efforts) for the project
- It is very clear but powerful software development method (clear phases help to realize the whole picture of the project)
- The project should be started with requirement analysis and creating clear, unambiguous and professional Software Requirement Specification
- It essentially requires a huge amount of documentation at every stage. This gives better understanding of the project and logic
- The scope should not be changed
- All software requirements should be specified on the first phase and there is no possibility for mistakes
- Project communications with the client are extremely limited being performed either at the beginning or at the end of the development (or phases)
- The developed product possibly can not correspond to changing economic conditions
- High risk of budget exceeding or schedule due to unforeseen (or changed) requirements
- It's slow and not flexible through trying to cover all risks in the early stages of the project
The spiral model is mostly used in large projects
It is reasonable to use the spiral model in projects which business goals are unstable but the architecture should be realized well enough to provide high loading and stress ability
- This is a meta-model, which can be used by other models
- Flexible process allows changes to be implemented at several stages of the project
- The active involvement of the customer in the process
- The customer retains control over the direction and implementation of the project
- The customer 's expertise of the project grows with the project growth
- This methodology is not complete
- The customer should spend more time on the project than while waterfall method is applied
- Spiral models work best for large projects only, where the costs involved are much higher
- Risk of budget or schedule exceeding
- Lack of clear organizational recommendations for team structure, management and development processes, iterations, etc.
Medium to large project teams (10+ people).
- Well-documented and complete methodology with all necessary documentation description
- Open and public – RUP is openly published, distributed and supported
- Changing requirements – proactive resolve of customer’s changing requirements and related risks
- The development time required is less due to reuse of the components
- Contains a set of good software tools for the project (UML, IBM Rational Method Composer, Rational ClearQuest, Rational Rose)
- RUP is bloated and too expensive for small projects and teams The team members need to be expert in their field to develop a software under this methodology
- The development process is too complex and disorganized- Unless you have a real expert, you are unlikely to succeed in adapting to this process. The process is too complex, too difficult to learn, and too difficult to apply correctly
- RUP does not capture the sociological aspects of the software development and the details of how to incrementally develop
XP is aimed for small and medium sized co-located project teams (4-10 people)
XP is mostly used for smaller and medium projects
- It is enough high-level of system requirements for the project start
- Increases deliverables quality and saves time while doing documentation
- Flexible process enabling smooth development of the product meeting customer's needs
- Flexible process allows changes to be implemented at any stages of the project
- Allows to develop working prototype of the system as soon as possible
- Impossible to develop realistic estimates of working efforts needed to provide a quote, because at the beginning of the project no one knows the entire scope/requirements
- Customer should be available full-time for the team
- XP can lead to expensive re-development and increase of the project scope
- Requirements are defined incrementally, rather than trying to get them all in specification documents
- Software developers are usually required to work in pairs
- Lack of structure and necessary documentation
- Can be very inefficient—if the customer’s requirements change through various iterations
Any size project
It is particularly useful for fast moving web or media projects (3D animation, interactive application, etc.)
- Flexible process
- Ability to control development process by customer
- Increases the values of the project in early stage
- Promotes customer satisfaction
- Is focused on delivery speed
- Provides openness and visibility to customers
- Increased quality of software
- Cross-functional, self-organized teams
- High visibility of progress and regular feedbacks from the customer
- Emphasis on face-to-face communication
- Allows to develop system working prototype as soon as possible
- Increased investment return and decreased cost - prevents from wasting money on the features that will never be used
- Scrum by itself is never enough, and that development teams have to shop in other methods (usually XP) for additional practices
- This methodology needs experienced team members only
- Customer (Product Owner) has to be present and available full-time for the team
Any size project
In case if the customer is not sure about how the final product will look
- After Waterfall approach for detailed Software Requirement Specification (SRS) development and approving the developers use Scrum approach to iteratively deliver the product, get the feedback from the customer and adjust the requirements
- All advantages of Scrum
What methodology is the best for your project?
Here are some questions you need to be answered before deciding on which methodology to use:
- How stable are the requirements? One of the biggest factors that dictate your choice of a methodology is the clarity and stability of the project requirements. Frequent requirement changes after the start of the project require Agile methodology (e.g. Scrum). If all requirements are clear and unchanging you can use Waterfall methodology
- How much time do you want to spend for the project? If you are willing to take an active part in the project, Agile methodology will give the best result
- Do you know all requirements for the system? If yes, you can achieve stability on project requirements and allow you to use the waterfall approach. If not, you should use Agile methodologies or Waterfall-Scrum approach.
- Is the time line aggressive or conservative? An iterative approach helps to achieve aggressive time lines by giving opportunities to deliver partial functionalities early. This gives an impression that the project is delivering despite an aggressive time line, generally referred to as "quick wins". If your project is not time sensitive and end-users can wait for the release of the system, Waterfall would be a workable approach.
- What is the size of the project? Large enterprise projects generally require large number of the project teams to work on clearly defined deliverables. The scale of the deliverables is proportional to the size of the project team assigned to do it. Thus, larger project teams are assigned larger set of deliverables which need to be clearly defined. With this kind of scenario, long iterations or Waterfall would be preferable.
What we offer
Our creative company has wide and extensive knowledge and great experience of project development and offers the following:
- Software development methodology (Scrum, Waterfall, Waterfall-Scrum, etc.) that is used in our company allows us to achieve the best quality and to satisfy all customers’ needs ;
- Our well-experienced analysts can develop result-oriented project specifications in compliance with your needs;
- After approval of project specification our developers are ready to start diligent working on the project;
- Team of professional Developers, Artists and pure Analysts
- Responsible Project Manager for your project management and on-going communication with you about project issues;
- Free web hosting space on our servers throughout the project life cycle to upload project releases weekly for your on-going review;
- Access to AceRemote Project™ – our system project management application which will provide you with all updates of the project and notices and will make your communication with the team much easier;
- Our support - we handle all your technical questions.
All copyrights of the images used in the article are property of their owners