Eljabiri PhD

Home
References
Key Links
Research Question
SOTA
Experiment
Dissertation
Publications
Academic Background
Work Experience
Awards
Accomplishments
PhD Advisors
PhD Helpdesk

clip_image002.gif
PhD Roadmap Model

Beyond Agile methods: Driving software projects productivity through team performance management

 

 The problem

 

     Over the last few years, Agile models of software development have become the icon of high speed software engineering.  Generally speaking ,   agile methodologies aim at boasting software development productivity via strategies such as evolutionary prototyping , time boxing  , self-organized collaboration and high degree of adaptability and responsiveness  to  change . While team performance is well recognized  as a critical factor  in increasing software development productivity  , the impact of particular  or combined agile models strategies on team performance and the influence of this collective impact on  software development productivity has received only a little attention in research work . Not only this is important to validate agile strategies as they are but also to improve their capabilities with other elements that can be easily overlooked in the heat of agile era .

    Consequently , It is important to :

1-      Identify common agile strategies in the context of team performance

2-      Identify  what makes every agile model unique in the context of team performance

3-      Study the impact of independent and combined agile models alike on team performance

4-      Review other RAD strategies that are not included in agile models in the context of team performance

5-      Review team performance measures  and find general strategies that would make team perform better

6-      Study how the an integrated model of all of the above would impact how teams perform and the impact of team performance on software development productivity 

 

    During recent years, the emphasis of problem solving strategies in software engineering has shifted dramatically from pre-defined processes (or long-term contractual plans) to dynamic adaptive models (or pay-as-you-go methodologies) . While both approaches  still rely on process models , adaptive  approaches  adjust the process continuously to manage change  as opposed to static problem solving prescriptions which  are  not less likely  to face tremendous chaos when encountering  evolving  challenges , uncertainty or equivocality  in today’s real  world projects  .

   Effective management of change requires not only construction of adjustable   models but also building them at high speed as well as efficient execution. Managing change and risk control are two sides of one coin since unpredictable yet almost inevitable change is today the primary cause of  software projects risks   .

   Consequently,  a broad array of revolutionary software engineering strategies have emerged under the agile software development  umbrella  over the last decade .  The common goal in agile  is to boast software development productivity in more adaptive ,  iterative and self-organized environments .  The key agile  strategies include  :

 

  1. XP - eXtreme Programming
  2. Scrum
  3. DSDM - Dynamic Systems Development Method
  4. FDD - Feature Driven Development
  5. Lean Software Development
  6. Crystal (Cockburn's Crystal Family)
  7. ASD - Adaptive Software Development
  8. TDD - Test-Driven Design
  9. XBreed
  10. AD -  Agile Data Modeling / Agile Database Techniques
  11. AM - Agile Modeling
  12. Agile-related approaches such as  open source development and rational unified process models.

   

Agile strategies are generally characterized by :

 

1-      Adaptability to evolving risks and business requirements

2-      Evolutionary development through a series of prototypes or deliverables

3-      Self-organization and high degree of decentralization

 

The above three characteristics are , in fact ,  the key strategies within which  productivity and high speed delivery of results are expected to be achieved in agile methodologies .  

 

Many consider reducing the cycle time of business operations as a key measure for  productivity .Time reduction  became   the driving force in most software engineering strategies  which  evolved  since early 80’s specially after the integration of rapid application development methods , tools , configurations and techniques . Rapid application development was approached through different ways in the software engineering history  . These ways or main streams in RAD can be summarized as follows :

 

1-        Reducing cycle time by cutting unnecessary tasks  (process reengineering )

2-        Reducing cycle time by synchronizing tasks ( concurrent development )

3-        Reducing cycle time by automating tasks ( generated RAD )

4-        Reducing cycle time by reusing code and project  components    (Object oriented strategies )

5-        Reducing cycle time by visualization and backtracking ( evolutionary prototyping )

6-        Reducing cycle time by computer-based logistics management ( collaboration technologies )

7-        Reducing cycle time by effective management of human resources

8-        Other streams such as avoiding single-point task failures , product lines , architected RAD , etc.

 

RAD forms

 

1- Limited –Scale RAD

 

1.1 - D-RAD (Dump)

1.2 - G-RAD (Generated) / RAD through technology (CASE &4 GL tools)

1.3 - C-RAD (Composite)

 

2- Full -Scale -RAD

 

     2.1- RAD through people  (Agile software development   )

 

1-      XP - eXtreme Programming

2-      Scrum

3-      DSDM - Dynamic Systems Development Method

4-      FDD - Feature Driven Development

5-      Lean Software Development

6-      Crystal (Cockburn's Crystal Family)

7-      ASD - Adaptive Software Development

8-      TDD - Test-Driven Design

9-      XBreed

10-  AD -  Agile Data Modeling / Agile Database Techniques

11-  AM - Agile Modeling

12-  Agile-related  approaches  

 

                            12.1- Open Source development

                            12.2- RUP (Rational Unified Process model)

 

         2.2- RAD through task elimination (Business Process Engineering)

         2.3- RAD through reducing time per task

 

           2.3.1- Collaboration Technologies (distributed teams)

                      2.3.1.1- Groupware

                      2.3.2.2- Wide area workflow management tools

           2.3.2- Parallel (concurrent) development

         

         2.4- RAD through avoiding single-point task failures

         2.5- RAD through reduction of backtracking and visualization (prototyping and risk management)

         2.6- RAD through streamlining activity networks

         2.7- RAD through effective management of human resources (dynamic modeling)

         2.8- RAD through acquiring better people  & transition to a learning organization 

         2.9- RAD through automatic transformation between phases  

                    2.9.1- Math and statistics utilization (Cleanroom software engineering)

                    2.9.2- Concept to code strategies 

2.10– RAD through reusability

2.10.1    -  Object-oriented software development

2.10.2    - Business Objects  and OOBPR

2.10.3    - COTS

2.11– RAD through product line models

2.11.1    -Aspect-Oriented

2.11.2    -Feature–oriented

2.12-  Architected   RAD (from IBM)

2.13- RAD and the personal software process (PSP)

2.14- RAD and the team software process (TSP)

 

1-      The problem solving process

2-      The elements of the problem solving process in software engineering

3-      The ways problem solving was approached in software engineering

4-      A taxonomy of software engineering problem solving strategies

5-      Measures of problem solving effectiveness in  software engineering

6-      The critical role of the development team in the problem solving process

7-      How can we assess  team performance  ?

8-      How was team performance approached in software engineering ?

9-      The reasons why RAD methodologies  originally emerged 

10-  The various  ways RAD methodologies approach productivity

11-  The needs for agile methodologies as a special version of RAD

12-  The elements of the agile methodologies that makes them unique from other RAD methodologies

13-  The elements of agile methodologies that makes them similar or that are shared between them

14-  The elements that distinguish SCRUM

15-  The elements that distinguish FDD

16-  The elements shared between SCRUM and FDD