Using Social Networks to Analyse the Stakeholders of Large-Scale Software Projects

1- Introduction


1-1- Stakeholders?! Mmmm I heard this word before!
Whatever your software project is, you have stakeholders! If there are no stakeholders, then how and why to do it?! All the people who are engaged in a software project are called “Stakeholders”. Stakeholders are the ones who affect and be affected by the actions in the system we are building. Employees, Customers, students are all examples of stakeholders. The importance of stakeholders comes from their knowledge of the processes we are working on.
 
1-2- Ok? So What’s the point?
A lot of software projects fail just because people ignore or neglect the role of stakeholders. Based on reports [1], ignoring stakeholders is the most common reason for failures in software projects.  I don’t want to spend the whole time convincing you how important stakeholders are. JUST BELIEVE ME and let’s continue.
 
1-3- So stakeholders are important.. then?
It is once said, “Not all your fingers are the same!”. The problem isn’t really just about ignoring the role of stakeholders, but it is about dealing with them all in the same way. They aren’t the same! How can I deal with the manager of the organisation just like I deal with the concierge?! Yes they both interact with the system but not in the same manner and not with the same influence. The main idea is about building a social network where nodes are the stakeholders and links between them are weighted recommendations.
 

2- Using Social Networks to represent stakeholders and their importance: More details about the approach


2-1- Ok! So it is about building a weighted graph? How to put the weights?
Yes! We will represent the stakeholders and their influence by using a graph. Weights will be assigned by allowing each stakeholder to recommend other stakeholders.
 
2-2- I just can’t get the idea! Why to build a social network?
When we build a social network we can simply use all the Graph properties and the social network measures.
 
2-3- Well! Things will be clearer with an example!
Let’s take a simple example! We have 4 stakeholders, Alice is the manager of the system, Bob is a programmer, Carl is a post-graduate student and Dave is an undergraduate student. Every one of them recommends the people with whom he/she interacts. These recommendations take the form:
<Stakeholder, Role, Salience> where:
–         Stakeholder: his/her name
–         Role: the role of the supervisor
–         Salience: ordinal number represents the importance of this person (Let’s say it’s between 1 and 5 where 5 is the most important).
For example, Alice recommends both Bob and Carl as:
<Bob, programmer, 4>
<Carl, PostGradStudent, 2>
And so on for all others. After writing the previous triples for all we build the network.
unnamed
2-4- So? We have a cute social network! But how to use it?
Simply, we will priorities our stakeholders using social network measures such as:
          2-4-1- Betweenness Centrality: it ranks a stakeholder based on its role as a “broker” between various stakeholders. It counts the number of shortest paths in the network that go through this stakeholder. For the previous example, Carl is the most central one as both Alice and Bob use him to go to Dave.
         2-4-2- PageRank: it is Google’s base algorithm for ranking search results. By simple words, the importance of a node (stakeholder) is determined by the importance of the nodes referring to it. In the previous example, Alice and Dave have a link with the value (5) going in. However, Alice is more important in this measure because it is recommended by Bob who has a higher rank than Carl who recommends Dave! (since Bob has a higher value of recommendations going into him!) The same as in the web, where the importance of a website is really determined by the importance of the websites that point to it!
         2-4-3- Other Measures: I don’t want to turn my blog post into a graph measures lecture! So I won’t list all of the things you can do and measure but some other ideas are related to the total number of arrows and their values (degree of a node, in-degree, out-degree, etc…).
 
2-5- mmmm.. that’s cool! But which measure to use?
Actually, it depends on the problem we are solving and on the domain. We may use a mixture of these. I don’t want to go into the details of this but it is interesting! Lots of papers are about this. Just google it!
2-6- Has anyone tried this method practically?
YES!! StakeNet is a tool defined and used by people from the University College London (UCL) with a LARGE-SCALE SOFTWARE PROJECT with a 30000 user [2]. Identifying and prioritising stakeholders are done by this tool for the new UCL access control project. StakeNet performs better than other usual methods to determine the importance of stakeholders.(More details in the paper[2] about the evaluation process).
 

3- Conclusion


Well, in my eye using a social network to show the stakeholders and their relations is extremely useful. The first reason is that you won’t ignore them and the second you will give them priorities. Another important point is allowing all the stakeholders to have an opinion in determining other people importance.  Using this representation for large-scale software projects will be a great thing for all these reasons.
 

– The example and image idea are from the reference [2]. I re-draw it in a more “cool” way 😉

 

[References]
1- D. C. Gause and G. M. Weinberg. Exploring Requirements: Quality Before Design. Dorset House Publishing, 1989.
2- Lim, Soo Ling and Quercia, Daniele and Finkelstein, Anthony, StakeNet: using social networks to analyse the stakeholders of large-scale software projects, Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering-Volume 1, ACM, 2010.

9 thoughts on “Using Social Networks to Analyse the Stakeholders of Large-Scale Software Projects”

  1. Hi, I think this article is very clear and easy to read and understand. You help us understand some complex concept and proposed some measures to put the weight. I think most part of this article is about introduction and explanation, maybe you can talk more about your own opinions about this issue. Cheers

    1. @GAN-s1355673:
      Hi and welcome 🙂 thanks for reading it… Actually, you are right I spent most of the article explaining the concepts and measurements (since they might be new for some people), but I tried in the conclusion to show my opinion. I ,totally, agree with this method and especially for large-scale projects. The two ideas that I like the most about this method is that it (1): prioritise the stakeholders with some measures due to their importance and (2): it allows everybody to have a say in this! So all people are considered in deciding the importance of all others! 🙂
      thanks for your comment…

      1. Hi there, thanks for your reply. I think your article overall is a very good job and you started to write it very early, that’s great!

        1. you are welcome 🙂 Waiting to read yours soon…

          I am still waiting for other comments as i am an extremist in supporting my idea! i do believe that “Stakeholders” are the most important factor in the software project. Specially when we are considering large-scale ones.

  2. You present an interesting concept here, although I have a couple of doubts over the whole “role descriptor” idea (as per your example – manager, student, programmer).

    Firstly – how would you ensure consistency of role descriptors (eg. what if Carl refers to Alice [the undergrad] as an “undergrad student”, but Alice merely refers to Carl [the grad student] as “student”)? The obvious solution would be to give each individual a list of stakeholders to choose from, but this prompts the question of *how* this list would be made (and, significantly, *who* would be responsible for deciding the stakeholder groups)? Such a move would effectively negate the purpose of social (read: collaborative) networks.

    Further to this, how do you decide the granularity of role descriptors? Let’s assume a ‘perfect’ dataset (ie. where everyone refers to each other by their fullest, most useful role descriptor). How would you decide when it’s appropriate to make the distinction between, for example, simply “student” vs. “undergraduate student” vs. “first year undergraduate student” (vs. …)?

    I completely agree with your argument that the whole software ‘process’ is (or, at least, should be) stakeholder-centric, and this collaborative approach makes a nice attempt at ensuring this. However, it seems to depend entirely on the consistency of roles, which would have to be enforced by a single party. Is there a solution around this?

    1. @Iain:
      Hi Iain,
      thanks for reading!
      Regarding your first question, I didn’t want to go deep in all these details so I kept it too “general” but one approach might be:
      – Let all people in the project decide the role descriptors in the first round and then write them somewhere so the next round includes allowing them to specify the importance of each of them.
      – Another approach is simply more central by allowing the manager to decide the roles and then let people decide its importance. This way you can see the pattern as a half-way between the full central approach where stakeholders have no say at all and the previous one.
      – In the UCL project “StakeNet”, they did “Open-ended recommendations” and “closed-ended recommendations”, where in the first one respondents filled the triple , while in the latter they were given a list with all the roles and names and they should write down the salience value. (and they also filled a list of top-20 stakeholders). You can check the reference 2 up in my blog post where there is a figure showing this and there is a comparison between the two methods (whether people should write all the things or simply choose from a ready-list).
      Regarding the second question, it is really about the “actual” role of the people. Do I really need to make a distinction between the under-grad and the post-grad?
      For a restaurant there will be no difference, a student is a student and he will get a 10% discount whether he is under-grad or post-grad. However, in the library system the post-grad is allowed to take 10 books in the same time but the under-grad is allowed to take only 5! The post-grad is allowed to enter some specific places (post-grad study area), but the under-grad isn’t. The responsibilities and the way these people will interact with the system are used to define the actual role and how “general” it should be.

      Regarding your last part and whether there is a solution or not for the single determining of role descriptors, just as I said in the first part here in my answer. People might sit to deal about roles before setting the importance of each role.
      I hope my reply answers your questions and thanks again for reading and participating 🙂

      1. Hmm, whilst I like the StakeNet approach you discuss, there’s still somebody “running the show”: ultimately one party is deciding how relevant a stakeholder sub-group is. By keeping it open-ended at first, somebody will have to decide whether just “student” is a sufficient descriptor, vs. “undergraduate student”, in order to compile the closed-ended list.

        Who, then, would be responsible for this task? It has to be a stakeholder who performs this task and, as we all know, there are always conflicts-of-interest between stakeholder groups.

        A different question here (and one which isn’t quite as rhetorical!): if an individual happens to span two stakeholder groups, presumably we regard the individual in two contexts? For example, say Alice was a student, but she also worked part-time for her university. We would regard Alice separately from Alice, yes? Does she appear as two ‘nodes’ on the network?

        I do like this method of stakeholder identification but, as a project moves from its infancy through to maturity, its stakeholder groups will inevitably shift both in number and “priority”.. meaning that the whole process will need to be continuously maintained – an additional overhead on the already-burdened software dev process!

        1. @Iain:
          Hi again 🙂
          Well, I guess your first question is widely open and has no specific answer! To tell you from my own experience, I worked as a web developer and all such decisions were made by the head manager! He rules!! If he sees it is better to have more detailed components then you should do it! In my eye, it is really a decision that should be made by the project manager and the stakeholders themselves. It really depends on them and their interaction with the system. Let’s check what experts say about this. According to the great and famous book “Quality Software Project Management” By Robert T. Futrell, Donald F. Shafer, Linda Shafer, the PROJECT MANAGER is the one who decides who does what and who decides what in the project!!! Ok! This is in the standard and large-scale projects but I think it is more useful to let everyone has a say about this! Well! In the last minute there should be someone who will make the final decision. Mmmm this is the “Democracy”… Listen to everyone and then do what you want hahaha… Just kidding! No really it is a hard decision to take. Based on the Social Network Structure It should be really a “common” and “shared” decision.
          For the second question… this is a great one! Actually, some people suggest building the social network for ROLES not for PEOPLE! Really, don’t think about having a huge network as a problem! Graphs are used nowadays in building models for machine learning problems (I am taking the PMR course and it is mainly about building graphical models for some problems and sometimes you have a model with huge number of parameters (nodes) and they are really changing a lot over the time and they work fine 🙂 ). For the last part and whether changes will be a problem or not, let’s just think about any social network ,such as Facebook, and the large number of changes happening every minute! Well! It is working fine. We will not even have all these changes in the software projects. Social Network structure is really open to changes and dynamic.
          Well, I really want to thank you for your questions and I am ready if you have more… Hope I answered them well…

Comments are closed.