10 Software Process Management Best Practices
Regardless of
software process management type (waterfall, scrum, iterative etc.),
there are some main rules which should be considered about software
process management. In this post we will mention most important of these
practices theorically:
1. Define roles and tasks of team members: For productivity, roles of team members should be defined clearly. These roles may be project manager, team lead, develeoper, tester etc. Furthermore, authorizations and responsibilities of these roles should be defined very clearly. Task-assignment based development should also be applied for avoiding redundant effords and chaos.
2. Define meeting types: Meetings are very important if we are talking about software process management and should be defined in detail (meeting participants, context, average duration etc.). Team members should also obey meeting rules. This will bring more productive meeting and development process, and will avoid losing time unnecessarily.
3. Define documentation strategy: Every single software process has a documentation strategy, even agile or extreme methods (backlogs, lessons learned info, bug items etc.). These documentation types should be defined clearly (document physical properties, standard sections, document update period, version numbering etc.) for consistency, understandability and more effective software production.
4. Define software quality metrics and measure them:
There are so many metric types (line of code, cyclomatic complexity etc.) in software world. According to the properties of your software type, some of these should be chosen to measure quality and growth of code. These info may be discussed periodically and production quality will be increased after assessments. 5. Perform issue/requirement tracking: Requirement management or issue tracking is one of the key points in software development. They determine the scope of software, also supports a traceability base for functional tests. Those issues/requirements are preferred to be saved and managed with useful tools which have more features than text editing. 6. Perform version controlling: Version controlling is also crutial in production. This should include code and other documents. It will support co-working on code, returning to older versions of code and will ease versioning and dependency management. Versioning strategy (version numbering,versioning periods etc.) should also be determined clearly to obtain consistency. 7. Perform testing: Testing is one of the main phases of software development. Unit testing must be performed for every type of software, except a few exceptions like some user interface code. Other testing types (system, user, integration etc.) should be defined clearly and applied consistently as defined. This will increase quality of production and decrease bugs. 8. Perform dependency management: As software projects grow, more external libraries (jar, dll, ...) or projects (external projects or internal company projects) are included. If those items are added to projects imprecisely, later updates or version changes will bring chaos and so much time consumption. Dependency management strategies and tools should be used for efficient productivity. 9. Perform code reviews frequently: Code review brings high quality code. First of all it enforces developer to produce better code, because it will be controlled by others. Besides, a junior developer will learn better coding quickly by corrections of senior developers. So, code review is a partial type of pair programming and it enhances productivity. 10. Save "lessons learned" info for your projects: Even if there are experienced staff in projects, there may be unforeseen events which may obstruct or retard development process. This can be a complex item configuration, error, production experience etc. Those happenings are highly preferred to be written in "lessons learned" documents and shared in public locations. This will avoid recurrence of time loss and provide more productive software process management.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)






Comments
Pavel Kotlov replied on Tue, 2013/02/19 - 1:17pm
Winston Royce, who first introduced waterfall, used it as an example of "how not to do it". So although many of the Practices described above are considerable, the simple fact that you mention waterfall in the same List as scrum at the very beginning of your article, disqualifies you as an expert on SPM.
Mete Senocak replied on Mon, 2013/03/25 - 3:34pm
in response to:
Pavel Kotlov
Wow, quite a harsh judgement, I would say. The sentence at the beginning says "Regardless of software process management type (waterfall, scrum, iterative etc.)" and lists different types of SPMs. I don't read here that waterfall is compared to scrum in any way. The emphasis is on the10 SPM Best Practices BTW, and I find all 10 very important and useful, independent of the SPM type you are implementing.
I would take this opportunity to emphasize the importance of 1. Define roles and tasks (I prefer "roles and responsibilities"), and 2. Code review. They save a big headache at the end.
Roger Sall replied on Tue, 2013/04/09 - 1:25pm
in response to:
Mete Senocak
Roxanne Mioto replied on Fri, 2013/04/12 - 1:23pm
Gerenciation of ip melatonina, ácido ursólico and lipo 6 ultra
Junio Mousull replied on Wed, 2013/04/17 - 8:37pm
in response to:
Pavel Kotlov
By separating the viewer from the editor in distinct modules, we will enable the user to install a different editor for the same viewer for bbom
Junio Mousull replied on Wed, 2013/04/17 - 8:44pm
in response to:
Pavel Kotlov
read more in Open Source Java Software Development Center
Junio Mousull replied on Wed, 2013/04/24 - 9:38am
Junio Mousull replied on Sat, 2013/05/04 - 6:58pm
Junio Mousull replied on Tue, 2013/05/07 - 1:05pm
See nite burn
Junio Mousull replied on Thu, 2013/05/09 - 7:26pm
Junio Mousull replied on Thu, 2013/05/09 - 7:33pm
in response to:
Pavel Kotlov
Junio Mousull replied on Mon, 2013/05/20 - 7:32pm
Junio Mousull replied on Tue, 2013/05/21 - 10:31am
Junio Mousull replied on Tue, 2013/05/21 - 10:39am
Junio Mousull replied on Wed, 2013/05/22 - 7:47pm