This document introduces cooperation principles in software development. It discusses the evolution of software engineering from isolated teams using centralized tools to distributed organizations employing internet-based tools. Cooperation in software development involves distributed teams collaborating across locations using shared resources and decentralized decision making. Challenges to cooperation include communication, knowledge sharing, coordination, and linguistic issues across different levels from teams to countries. Key areas for cooperation are procedural, modeling, and technological aspects across the software development life cycle from requirements to deployment. Successful cooperation requires open communication, shared tools, and involvement across all software product aspects.
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Introduction to the cooperation principles in software development - Part I
1. Introduction to the cooperation
principles in software development
Part I
Prof. Dr. Febe Angel Ciudad-Ricardo
fciudad@uci.cu
University of Informatics Sciences (UCI), Havana, Cuba
May 7th
, 2021
2. Content
● Software Engineering (SE) evolution
● Understandings of cooperation/collaboration
in Software Development (SD)
● Areas for cooperation/collaboration in SE
● Keys for cooperation/collaboration in SE
2
3. «(…) We all want to build software that makes
things better, avoiding the bad things that lurk in the
shadow of failed efforts. To succeed, we need
discipline when software is designed and built. We
need and engineering approach (…)»
Pressman, R. & Maxim, B. (2015). Software engineering: A practiotioner’s
approach. 8th
edition, New York: McGraw-Hill Education. ISBN: 978-0-07-802212-6
«(…) software engineering has evolved from an
obscure idea practiced by a relatively small number
of zealots to a legitimate engineering discipline.
Today, it is recognized as a subject worthy of serious
research, conscientious study, and tumultuous
debate (…)»
6. 20th
century Software
Engineering (SE)
● Local organization at institutional headquarters
● Small/medium project teams
● Face-to-face work
● Centralized tools
● Personalized network communications
● Mainframe systems
6
1960 2021
7. 21st
century Software
Engineering (SE)
7
● Distributed organization at
different locations
● Large project teams
● Telework &
telecommunications
● Internet-based work
● Community-based
communications
● Distributed systems with cloud
and third-party solutions
8. 21st
century Software
Engineering (SE)
8
● Distributed organization at
different locations
● Large project teams
● Telework &
telecommunications
● Internet-based work
● Community-based
communications
● Distributed systems with cloud
and third-party solutions
9. 21st
century Software
Engineering (SE)
9
● Distributed organization at
different locations
● Large project teams
● Telework &
telecommunications
● Internet-based work
● Community-based
communications
● Distributed systems with cloud
and third-party solutions
10. 21st
century Software
Engineering (SE)
10
● Distributed organization at
different locations
● Large project teams
● Telework &
telecommunications
● Internet-based tools
● Community-based
communications
● Distributed systems with cloud
and third-party solutions
11. 21st
century Software
Engineering (SE)
11
● Distributed organization at
different locations
● Large project teams
● Telework &
telecommunications
● Internet-based tools
● Community-based
communications
● Distributed systems with cloud
and third-party solutions
12. 21st
century Software
Engineering (SE)
12
● Distributed organization at
different locations
● Large project teams
● Telework &
telecommunications
● Internet-based work
● Community-based
communications
● Distributed systems with cloud
and third-party solutions
13. 20th
vs 21st
century Software
Engineering (SE)
● Local organization at institutional
headquarters
● Small/medium project teams
● Face-to-face work
● Centralized tools
● Personalized network
communications
● Mainframe systems
13
● Distributed organization at
different locations
● Large project teams
● Telework & telecommunications
● Internet-based tools
● Community-based
communications
● Distributed systems with cloud
and third-party solutions
1960 2021
sixty-one years of evolution
14.
15. Understandings of
cooperation/collaboration in SD
What we understand about cooperation/collaboration in SD?
15
shared ideas
about the
software
teamwork
base
close links
between the
team members
tasks
17. Understandings of
cooperation/collaboration in SD
COLLABORATIVE SOFTWARE ENGINEERING
17
«Collaboration in software engineering is
usually understood as artifact-based or model-
based collaboration, where the focus of activity
is on the production of new models, the creation
of shared meaning around the models, and
elimination of errors and ambiguity within the
models» (Whitehead et al., 2010)
18. Understandings of
cooperation/collaboration in SD
DISTRIBUTED SOFTWARE ENGINEERING
18
Refers to planning, designing, building, testing,
and managing software with decentralized
teams located across different physical
workspaces. These teams use Internet-based
collaboration tools and communication
platforms to build software.
19. Understandings of
cooperation/collaboration in SD
GLOBAL SOFTWARE ENGINEERING
19
It is carried out by teams of knowledge workers
located in various parts of the globe developing
commercially viable software for a company.
Often, centralized software development is
moved from “home” locations to dispersed
teams or/and external organizations in remote
locations.
24. Levels of cooperation/collaboration in SD
24
Team
Company
Coun-
try ● Organizational
● Temporal
● Socio-cultural
● Cognitive & educational
● Geographical
● Political
● Economical
25. Levels of cooperation/collaboration in SD
25
Team
Company
Coun-
try
CHALLENGES:
• Communication,
• Linguistic issues,
• Coordination,
• Knowledge sharing and transfer,
• Interpersonal conflicts,
• Project and process
management,
• Cultural background,
• Hardware configuration,
• Tool management,
• Software architecture,
• Version control, and
• Lack of cooperation, task
allocation and collaboration
26. Levels of cooperation/collaboration in SD
26
Team
Company
Coun-
try
CHALLENGES:
● Communication,
● Knowledge sharing and transfer,
● Coordination,
● Linguistic issues,
● Strategic issues,
● Project and process management,
● Tool management,
● Diverse technologies,
● Lack of skills and experience,
● Work review,
● Maturity level,
● Client management,
● Lack of informal contacts leadership,
● Team resizing,
● Domain knowledge,
● Delay in response,
● Unit testing,
● Privacy,
● Productivity measure,
● Negligance of clients,
● Software architecture,
● Domain knowledge,
● Staff turnover,
● Integration, socio-cultural issues,
● Hardware configuration, and
● Lack of knowledge experience and control
27. Levels of cooperation/collaboration in SD
27
Team
Company
Coun-
try
CHALLENGES:
● Communication,
● Knowledge sharing and transfer,
● Coordination,
● Politics and policies,
● Linguistic issues,
● Socio-cultural issues,
● Reduced transparency,
● Understanding of requirements
rationale,
● Team cohesiveness,
● Lack of informal contacts and textual
information,
● Integration,
● Diverse terminologies,
● Tool management,
● Time overlap, and
● Different engineering approaches
28. Levels of challenges for
cooperation/collaboration in SD
28
• Interpersonal conflicts,
• Cultural background,
• Version control,
• Lack of cooperation, task
allocation and collaboration
● Politics and policies,
● Reduced transparency,
● Understanding of
requirements rationale,
● Team cohesiveness,
● Lack of informal contacts and
textual information,
● Integration,
● Diverse terminologies,
● Time overlap, and
● Different engineering
approaches
1. Communication,
2. Knowledge sharing and transfer,
3. Coordination,
4. Linguistic issues,
5. Project and process management,
6. Tool management,
7. Software architecture, and
8. Hardware configuration
CRITICAL
CHALLENGES
WRAPPING
CHALLENGES
30. Areas for cooperation/collaboration in SE
30
PROCE-
DURAL
MODELLING
TECHNO-
LOGICAL
business
models
approaches
methods
methodologies
conceptions
patterns architectures
designs
development
storage
verification
& validation
releasing
31. Areas for cooperation/collaboration in SE
31
PROCE-
DURAL
MODELLING
TECHNO-
LOGICAL
business
models
approaches
methods
methodologies
conceptions
patterns architectures
designs
development
storage
verification
& validation
releasing
32. Areas for cooperation/collaboration in SE
32
PROCE-
DURAL
MODELLING
TECHNO-
LOGICAL
business
models
approaches
methods
methodologies
conceptions
patterns architectures
designs
development
storage
verification
& validation
releasing
33. Areas for cooperation/collaboration in SE
33
business
models
approaches
methods
methodologies
conceptions
patterns architectures
designs
development
storage
verification
& validation
releasing
TECHNO-
LOGICAL
MODELLING
PROCE-
DURAL
34. Keys for cooperation/collaboration in SE
34
● Decide the approach and keep it all the way.
● Communicate as much as you can by different ways as
possible.
● Share your thoughts and speak you mind all the time.
● Do not use your own tools, but the same ones that your
colleagues can access.
● Cooperate in all the software product aspects during the
whole procedure and by the same tools as everybody.
● Keep in mind that “you don't need to be a lone wolf, but rather
one of the herd”.
35. Part II announcements
35
● Levels of cooperation/collaboration in SE
● Tools for cooperation/collaboration in SE
● Relationships of cooperative/collaborative SE
with others computer science movements
and fields
● Future work in ELINF project SE approach
36. Introduction to the cooperation
principles in software development
Part I
Prof. Dr. Febe Angel Ciudad-Ricardo
fciudad@uci.cu
University of Informatics Sciences (UCI), Havana, Cuba
May 7th
, 2021