Project management approach

Yumasoft methodology and project management system is applicable to every particular IT project. To organize the process of work the most effective way we follow well-known and established Methodologies, use modern Project Management Instruments and offer flexible ways of Project Management Organization.

Methodologies

Software development methodologies that Yumasoft practices are based on iterative / incremental methodology since it is appreciated as a forward step from traditional Waterfall model. Depending on specifics of every project and every Client at Yumasoft we use both Formal and Agile methods of software development process organization.

Formal Methods

Rational Unified Process (RUP)

As iterative software development methodology RUP development process is divided into iterations whi ch are grouped into 4 phases. Each iteration includes some parts of workflows. Assuming that work process according to RUP is measured in two dimensions:

Time – Iterations:
  • Inception - stage of project analysis
  • Elaboration – working out the detailed plan of development
  • Construction – development of the project
  • Transition – software testing and customer delivery
 Engineering disciplines:
 
1.       Business modeling – establishment of better understanding and communication channel between business (organization (client) in which the software will be used) and software engineering. Understanding of structure, further development destination, current problems and possible improvements of the target organization.
2.       Requirements – getting client’s requests and transforming them into a set of requireme nts, building a technical specification.
3.       Analysis and design –showing how the source code will be structured and written, representing what will become components in the implementation;
4.       Implementation - realizing of systems through the implementation of components.
5. Test – verifying the interaction between objects, the proper integration of software components. Making sure that all requirements have been correctly implemented, bugs are fixed, tested and closed.
6.       Deployment – producing successful product releases, delivering the software to end users, installing, providing assistance and help.
 
Supporting disciplines:
 
1.       Change management – includes configuration management (systematic structuring of the products, keeping documents and models under version control), change request management (keeping track of the changing requests), status and measurement management (tracking statuses of change requests – new, logged, approved, assigned or complete, its priorities, etc.).
2.       Project Management – two-level planning: The software development plan (general, The Phase plan) and The Iteration plan.
3.       Environment – providing the software development organization with needed processes and tools – software development environment
 
Generally is used when:
  • Level of criticality is high - is used when even a little permanent failure is not acceptable (surgery software);
  • Requirements are defined clearly and can be changed in exceptional cases;
  • It is required to develop separate project or task, which can be measured in time exactly.

This methodology can work both with fixed price and time and materials payment models.

Agile Methods

Scrum

Iterations in Scrum are called Sprints. In opposite to RUP’s iterations each sprint in Scrum are cyclic (reccuring) should deliver potentially shippable increment of the software - working and tested.

The software development process in Scrum organized via following stages:

  1. Building of Product backlog – high level document contained prioritized high level requirements of what should be done.
  2. Forming of Sprint backlog – choosing which Product backlog items should be implemented during the sprint. It is decided on sprint planning meeting.
  3. Sprint – the implementation process itself during which growth of the software functionality appears. It is not allowed to make any requirements changes in sprint backlog while the sprint period is going (usually from two to four weeks, according to the team decision).
  4. Every day during the sprint Daily Scrum meetings inside the team are held.
  5. In the end of each sprint period Sprint Review meeting is held to present the demo to the client and review what work has been completed and what has not.
  6. On the end of the sprint development team delivers Working Increment of the software and demonstrates how to use it.
Generally is used when:
  • The problem cannot be fully understood and defined at the starting point;
  • Clients need to change the requirements about what they want during the software development process;
  • The team needs to react the most effective way on emerging requirements;
  • The project requires using modern new-released technologies, and it is hard to estimate exact timeframe for development (mutual venture).
Time and Materials payment model suits to this methodology the best way.

Extreme programming (XP)

XP is further step in agile programming from Scrum in destination to extremely shortened time of iterations, extremely frequent requirements detailing, and extremely close communication and joint work with the customer.

Eliminating mentioned differences, the software development process in XP is rather similar to Scrum. Its stages are following:

  1. Investigation of Unfinished Features from the product backlog and starting the process from the most important ones.
  2. Starting every iteration with Iterative Planning – getting customer’s requirements, definition and specification of them and making sure that no additional improvements can be included into iteration requirements – each iteration starts from scratch, no redevelopment or development of what was planned to do on previous iteration are accepted.
  3. Creation of Honest Plans – estimation of requirements got on Iterative Planning.
  4. Development of features planned to deliver in current iteration with Daily Communication (similar to Scrum) inside the team and with Client when needed. The principle of Team Empowerment claims moving the team leader role inside the team during the software development process.
  5. Delivering of working software at each and every iteration.

The pace of iterations changing forms a Project Heartbeat. The goal is to make it fixed by length and as short as possible. While Scrum recommends 30 days iterations, XP is struggling for a week.

Generally is used when:
  • Client needs to see new functionality often to have an opportunity to make needed corrections;
  • Changes in requirements are critically needed even in the latest phases of software development process and it should be planned instead of creating of a stable set of requirements;
  • Client enjoys being the part of the team and being always accessible in close connection to the team;
  • The project requires using modern new-released technologies, and it is hard to estimate exact timeframe for development (mutual venture).

Time and Materials payment model suits to this methodology the best way.

Instruments

To make the software development process manageable and transparent at every project at every stages Yumasoft use following project management instruments:

  • Two-level project management structure –Project Managers as a part of every development team and General Project Manager as a part of Yumasoft Management Team;
  • Project Management software – general (MS Project, etc.) and IT-specified (JIRA, Rally Dev, LightHouse, OnTime, TRACK, etc.).
  • Using of Unified Modeling Language (UML) - another instrument, which allows the description of all aspects of any project, enabling developers to have the unified vision for the software project, easy managing of work coordination. UML ensures the project integrity and flexibility of the development process management (Rational Rose).

Project Management Organization

Besides two-level project management structure following our principle of flexible approach to clients we offer different options of Project Management organization:

1. Project Management from our side :

  •   Project Manager as a part of our side development team, responsible for project management and communication with Client only

Generally is used when:

  • Development team consists of large number of developers (5 and more);
  • Client does not take an active role in software development process.
  •   Project Manager as a part of our side development team, who is at the same time Senior developer and Tech Lead, responsible for project management, communication with Client, architecture building and programming

Generally is used when:

  • Development team does not consist of large number of developers (2-5 developers);
  • Client takes part in software development process, usually there are development team working on the same project on Client’s side.

2. Project Management from Client's side. Generally is used when development team is small (1-2 developers)

Generally is used when:

  • Development team is small (1-2 developers);
  • Client takes an active part in software development process, usually there are development team working on the same project on Client’s side and clearly defined separate tasks are provided to outsourcing software development team.

Every Client is unique and furthermore every project is unique. In some parts it can require extreme programming while in others the requirements can stay constant for extremely long time. So to fit to one of our core corporate values and stand on flexible approach to the customer we mix the methodologies and always choose the right one for the right project phase.

Flexible usage of methodologies and flexible approach to Project Management Organization aggregated with 7 years of experience in software development process organization allows us to manage even the most complicated software development projects the most effective way and lead our clients to success.