Chapter 6 n Human Aspects of Software Engineering
























- Slides: 24
Chapter 6 n Human Aspects of Software Engineering Slide Set to accompany Software Engineering: A Practitioner’s Approach, 7/e & 8/e by Roger S. Pressman Slides copyright © by Roger S. Pressman For non-profit educational use only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach, 8/e. Any other reproduction or use is prohibited without the express written permission of the author. All copyright information MUST appear if these slides are posted on a website for student use. 1
It is essential that we understand… n that the human aspects of software engineering often have as much to do with the success of a project as the latest and greatest technology n that without skilled and motivated people, success of a software project is unlikely n that software engineers on a team must play well with each other and with other project stakeholders n the characteristics of successful software engineers n the structure & dynamics of successful project teams 2
Characteristics of Successful Software Engineers n Sense of individual responsibility – driven to deliver as promised n Acutely aware of the needs of team & stakeholders n Brutally honest – realistic and truthful about design flaws and schedule slippage, and offers constructive criticism n Resilient under pressure – is able to manage the pressure so that his performance does not suffer n Heightened sense of fairness – shares credit, avoids conflict of interest, does not sabotage other’s work n Attention to detail – carefully considers the technical decisions he makes on a daily basis against broader criteria (e. g. , performance, cost, quality) n Pragmatic – they adapt based on the circumstances 3
Layered Behavioral Model for Software Development Business environment In the two outer layers, organizational behavior governs the actions of the company and its response to the business environment Focus is on team structure and social factors that govern success. Group communication, collaboration, and coordination are as important as the skills of team members Focus is on identifying the problem, the skills required to solve it, and the motivation to finish the solution within the constraints of the outer layers in the model 4
Boundary Spanning Team Roles § Teams often establish artificial boundaries that reduce communication and, as a consequence, reduce the team effectiveness § To overcome this problem, a set of boundaries spanning roles should be defined to allow members of a software team to effectively move across team boundaries § These roles may be assigned explicitly or can evolve naturally 5
Boundary Spanning Team Roles Ambassador – represents team to outside constituencies Scout – crosses team boundaries to collect information Guard – protects access to team work products Sentry – controls information sent by stakeholders Coordinator – communicates across the team and organization 6
Characteristics of Effective Software Teams Members of effective teams are more productive and motivated than average. They possess: a sense of purpose – have a common definition of success a sense of involvement – allowing every member to feel that their skills and contributions are valued a sense of trust – in the knowledge and skills of the other team members a sense of improvement – a focus on learning, reflecting, and improving continuously diverse skill sets 7
Effective Teams Avoid the following Team Toxins 1. A frenzied work atmosphere in which team members waste energy and lose focus on the objectives of the work to be performed 2. High frustration caused by technological, business, or personal factors that cause friction among teammates 3. “Fragmented or poorly coordinated procedures” or a poorly defined or improperly chosen process model that becomes a roadblock to accomplishment 4. Unclear definition of roles resulting in a lack of accountability and resultant finger-pointing 5. “Continuous and repeated exposure to failure” that leads to a loss of confidence and a lowering of morale 8
Team Structure Paradigms Closed — structures a team along a traditional hierarchy of authority. Such teams can work well when producing software that is quite similar to past efforts, but they will be less likely to be innovative when working within the closed paradigm. Random — structures a team loosely and depends on individual initiative of the team members. When innovation or technological breakthrough is required, teams following the random paradigm will excel. But such teams may struggle when “orderly performance” is required. 9
Team Structure Paradigms Open —attempts to structure a team in a manner that achieves some of the controls associated with the closed paradigm but also much of the innovation that occurs when using the random paradigm. Open paradigm team structures are well suited to the solution of complex problems but may not perform as efficiently as other teams. Synchronous — relies on the natural compartmentalization of a problem and organizes team members to work on pieces of the problem with little active communication among themselves. 10
The choice of the right structure for a team depends upon … n The “best” team structure depends on the management style of your organization, the number of people who will populate the team and their skill levels, and the overall problem difficulty. n The factors can be listed as n the difficulty of the problem to be solved n the size of the resultant program(s) in lines of code or function points n the time that the team will stay together (team lifetime) n the degree to which the problem can be modularized n the required quality & reliability of the system to be built n the rigidity of the delivery date n the degree of sociability (communication) required for the project 11
Generic Agile Teams n The small, highly motivated project team (agile team), adopts many of the characteristics of successful software project teams and avoids many of the toxins that create problems. n However, the agile philosophy stress individual competency coupled with group collaboration as critical success factors. 12
Generic Agile Teams n To make effective use of the competencies of each team member and to foster effective collaboration through a software project, agile teams are selforganizing and may have many structures. o o n An adaptive team structure Uses elements of random, open, and synchronous structures Planning is kept to a minimum, constrained only by business requirements and organizational standards. 13
XP Team Values Communication – close informal verbal communication among team members and stakeholders and establishing meaning for metaphors as part of continuous feedback Simplicity – design for current needs, not future needs Feedback – derives from the implemented software, the customer, and other team members Courage – the discipline to resist pressure to design for unspecified future requirements Respect – among team members and stakeholders 14
Using Social Media in Software Development n n Email, texting, and videoconferencing have become universal activities in software engineering work. But these communication mechanisms are really nothing more than modern substitutes or supplements for the face-to-face contact. Social media is different. The value of social media grows as team size increases, and is magnified further when the team is geographically dispersed. There a number of different forms of social media and each has a place in software engineering work. 15
Using Social Media in Software Development Blogs – can be used to post a series of short articles describing important aspects of a system or voicing opinions about system features or functions that are yet to be developed. Microblogs (e. g. Twitter) – allow posting of real-time messages to individuals who subscribe to them. Targeted on-line forums – allow participants to post questions, opinions, case studies or any other relevant information. A technical question can be posted and within a few minutes, multiple “answers” are often available. 16
Using Social Media in Software Development Social networking sites (e. g. Facebook, Linked. In) – allow connections among software developers for the purpose of sharing information. This allows “friends” on a social networking site to learn about friends of friends who may have knowledge or expertise related to the application domain or problem to be solved. Social book marking (e. g. Delicious, Stumble. Upon, Cite. ULike) – allow to recommend Web-based resources that may be of interest to a social media community of like-minded individuals. 17
Software Engineering using the Cloud Benefits n Provides access to all work products n Removes device dependencies and available everywhere n Provides avenues for distributing and testing software n Allows information developed by one member to be available to all team members Concerns n Dispersing cloud services outside the control of the software team may present reliability and security risks n Potential for interoperability problems becomes high with large number of services distributed on the cloud n Cloud services stress usability and performance which often conflicts with security, privacy, & reliability 18
Software Engineering using the Cloud n From the human perspective, the cloud offers far more benefits than risks for software engineers. n One of the key benefits of the cloud is its ability to enhance the “social and collaborative aspects of software development. ” 19
Services Designed to Enhance Collaborative Software Development Namespace that allows secure, private storage of work products Calendar for coordinating meeting and project events Templates that allow team members to create artifacts that have common and consistent look and feel Metrics support to allow quantitative assessment of each team member’s contributions Communication analysis to track messages and isolates patterns that may imply issues to resolve Artifact clustering showing work product dependencies 20
Factors that Cause Complications in Team Decision Making n Problem complexity n Uncertainty and risk associated with the decision n Work associated with decision has unintended effect on another project object (law of unintended consequences) n Different views of the problem lead to different conclusions about the way forward n Global software teams face additional challenges associated with collaboration, coordination, and coordination difficulties 21
Global Software Development Teams n For the past few decades, an increasing number of major software products have been built by software teams that are often located on different continents n These global teams have many of the characteristics of a conventional software team, but they also face other unique challenges that include coordination, collaboration, communication, and decision making 22
Factors Affecting Global Software Development Teams 23
Factors Affecting Global Software Development Teams n Distance complicates communication, but at the same time, accentuates the need for coordination. n Distance also introduces barriers and complexity that can be driven by cultural differences. n Barriers and complexity attenuate communication. n The problems inherent in this dynamic can result in a project that becomes unstable. 24