the principles of sustained software development lecture 2 cis 6101 – software processes and...

29
The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

Upload: edward-benson

Post on 18-Dec-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

The Principles of Sustained Software Development

Lecture 2CIS 6101 – Software Processes and

Metrics

1

Page 2: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

2

1. Introduction• We develop software on required features, bug fixing, and a plan. • Plans are typically linear,

– start with analysis and design of what must be done…– continue with coding, testing, fixing, – tracking against the plan and customer use.

• This ‘engineering plan’ does not work too well for software.• Real world of software development involves a changing ecosystem

of technology, competitors, and customers

• Until programmers are exposed to this commercial system, none of this seems significant.

• Once you’ve been there (really, more than ‘once’), you know!!!

Page 3: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

3

Bridge from Academic to Practical

• Must establish a mindset to create a culture of software development for sustained development despite surrounding complexity

• Without the proper mindset, developers fall back to traditional linear approaches due to a degree of comfort and familiarity.– (Linear approach do this, then that, then that in order…)– Lots of bureaucracy in this approach! – Tends to stifle innovation, flexibility, and change tolerance

• Which are central properties a dynamic and changing environment absolutely requires.

Page 4: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

4

Practice versus Principles• Practices often viewed as templates for success.

– But practices must be tuned to the situation and the team. (no one size fits all!)• Recall the six best practices of RUP: manage complexity, visual modeling,

change management, iterative development, and architecture-centric

• Bureaucratic rules are in place for predictability,– High level supervisors LOVE these (and feel that they need these)– often achieved at the cost of innovation and ability to respond to

customer requests.

• We can implement practices, but we need the right mindset / culture to support these practices

Page 5: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

5

Practice versus Principles

• Before a team can talk about development practices, we need to first focus on the principles to be followed.

• Principles guide us every day making tradeoffs and fostering the right mindset and culture for the team and organization;

• Practices follow from the principles you choose to adopt.

Page 6: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

6

2. Why Principles are More Important than Practices

• Similar to difference between vision and features. How so?

• Unsuccessful projects start with defining features designed to meet user needs. (the Whats)

• Successful projects start with a clear user need and often a ‘shared’ vision of HOW to meet that need.– We must first rise above the ‘features.’

• The vision is simple and can be used to develop an initial set of features and a prototype for customer feedback, needed to refine the feature set. – This is iterative development (as it is called in agile software development)

Page 7: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

7

Key Aspects in Vision-Oriented Approach to Produce Development

1. A user need and vision so it is clear WHAT is to be built

2. Rapid refinement to adapt to change

3. Close relationship w/users to provide timely feedback

4. Continual learning to refine product so it best meets user needs while avoiding unnecessary features.

Page 8: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

8

Rules (Lists of Practices)

• No magic set.

• Our education says we should have a set of rules (step-by-step procedures) to solve problems.

• But problems arise as we rarely anticipate the role of complexity in the application of the rules.

• Rules work fine for simple problems but break down as complexity increases.

Page 9: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

9

Principles and Practices (Vision and Features)

• Principles are like vision; Practices like features.

• Principles define what you want to accomplish; practices define how you want to go about it.

• Too much today is around sets of practices (best practices) – Again, following a set of practices implies safety, comfort, completeness, predictability,

sense of confidence…

• Practices are important, but if you don’t know what you are trying to achieve (the principles), then efforts will be misdirected.

• More important to recognize WHAT team is trying to achieve rather than HOW they achieve it. It is the VISION that is essential…

Page 10: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

10

Principles and Practices (Vision and Features)

• Good teams listen to practices and ask questions as to – what (vision; principles) they are trying to achieve, and – apply the practices as needed.

• Great teams see through the rule-based façade (practices; HOw); see rules as a solid foundation to build on.

• Great teams – work from a clear user need (high user value through features and

high quality) and a – vision (the principles) and – continually learn and refine their approach (the practices; hows) as

their project progresses.

Page 11: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

11

Three Elements to Sustainable Development

• Summarizing: a development team needs:

• 1. A vision and set of guiding principles that define what needs to be accomplished

• 2. Practices consistent with the principles – (these are not a set of rules; rather building blocks your team should refine

and add to over time

• 3. A tight feedback loop of experimentation, learning, and refinement so that during the development of the product the project team is able to change, modify, and enhance their practices as required so the team can best fulfill the principles (vision).

Page 12: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

12

3. Applying the Principles of Sustainable Development

• Given a clear vision and desire to achieve sustainable software development, we have these principles:

1. Continual refinement of the product and project practices2. A working product at all times3. A continual investment in and emphasis on design4. Valuing defect prevention over defect detection

Notice that these are Whats.Practices support these principles.Let’s look at each principle in turn.

Page 13: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

13

Principle 1: Continual Refinement of Product and Project Practices

• This is a recurring theme in software development.• Software is complex and must evolve over a long period of

changing requirements and evolving ecosystem– Markets, partners, technologies, and competition

• Things change during development – Team must plan for change by employing practices to support

managing change.• E.g. development team membership! New risks! New reqmts!

• Thus team needs user involvement and lightweight practices to keep on track, monitor progress and risks.

• The set of practices establishes the project heartbeat (rhythm) and is a must for solid sustained development.

Page 14: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

14

Principle 2: A Working Product at All Times• Keep product in a near-shippable state at all times, even if it is not

functionally complete. Product needs to be in a working state.

• Means emphasis of team is a working product and not producing documentation of user requirements, software design, etc. that ‘might’ lead a product.

• This is a key principle of agile development.

• Best way to get feedback is to provide users something they can really comment on, even if it is a work in progress. – Documentation, even really good documentation, does not elicit the same quality of

feedback that a working product can.– Even prototypes are better than a document.

• Working documents also show the time spent on productive activities. If too much time is spent on documentation, then time will be needed to get the product back to a working state, which is time often wasted.

Page 15: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

15

Principle 3: A Continual Emphasis on Design• Design (both good and poor) is very obvious and exists at

various levels and detail…– Design decisions are made every day and by all members of the team.– Team needs to allow itself to make design changes.

• Do not try to anticipate every future use at beginning of project.

• Design only what you need today while not closing out possibility of future enhancements.

• Agile development requires considerable design – maybe even more than traditional design because we ‘know’ about changes!

• Good design practices extend the life of the product by keeping implementation in a healthy state – fosters maintainability and changeability – essential nowadays;

Page 16: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

16

Principle 4: Value Defect Prevention over Defect Detection

• Defect Detection involves trying to discover and fix problems after changes have been incorporated into software.

• Defect Prevention emphasizes catching defects before changes are merged into the software.

• Assumption in defect detection is on defect tracking systems, manual testing efforts, and errors reaching the customer.– Organizations invest a lot in QA activities and in testing.– Tracking errors and their resolution, prioritizing, reporting, assigning

fixes to proper OPRs, etc. is a huge task – and expensive.

• Often, there is a virtual wall between developers and testers.• Developers develop new software and provide to QA / QC …

to test prior to release. (more)

Page 17: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

17

Principle 4 (more): Value Defect Prevention over Defect Detection• In defect prevention, defect tracking systems are still needed but

importance greatly reduced.– Have lower defect counts. Teams have multiple safeguards in place.– More regression testing, and more.

• In defect prevention: Heavy emphasis on automated testing to focus on testing the product in ways that the customer will use the products.

• Defect Prevention is required for sustainable development– Ensures team is highly efficient and is creating value for customer not on

wasted effort.

• By minimizing defect numbers, development teams are able to have productive conversations with users about features and workflow because users are able to use the product in realistic ways.

Page 18: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

18

Various Kinds of Culture Essential for Sustained Development

• Let’s look at the Culture for Sustained Development.

• Sounds like a bunch of gibberish, but look closely!!

Page 19: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

19

4. Culture, by Descriptive Words and Phrases: Disciplined

• Team must be highly disciplined in approach and be goal focused.

• Agile development has been often labeled as being undisciplined.

• Consider: Differences between Discipline and Ceremony• Ceremony – required actions must be performed

– Requirements document before a certain milestone; Milestones such as a feature freeze, weekly status meetings; Design documents; more…

– Progress measured by these document deliveriesk and often artificial shallow accomplishments…

• Discipline - Agile teams minimize ceremony by keeping to task; producing results (a working product ).– Unfortunately, people mistakenly believe unless documents are created,

there’ s no discipline.

Page 20: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

20

Culture, by Descriptive Words and Phrases: Responsible (Competence)

• Team must be responsible for its work and not play the part of a victim. No blame game!

• Responsible teams have the courage to take on any situation and do not get swept up by events.– They trust others to do the best they can and are diligent that

nothing falls between the cracks.– Never say that ‘that can’t be done.’ A ‘can do’ attitude.

Page 21: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

21

Culture, by Descriptive Words and Phrases: Leadership (Character)

• Team has multiple leaders who work together• Leaders are not just the managers, team leads, or coaches

• Leaders know success occurs when they can help others to succeed; provide opportunity for accolades they deserve;

• Leaders view success as a team accomplishment and failure as a personal responsibility, not an opportunity to blame others.

• Unfortunately, these people are few and far between; are rarely promoted to senior management because they lack the charisma, high-volume talking, and massive ego and self-confidence – traits often associated with getting ahead in corporate world.

Page 22: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

22

Culture, by Descriptive Words and Phrases: Visionary and Tactical

• Effective teams strive for an optimal balance between – visionary (thinking about the long term) and – tactical (focusing on today’s problems) and – This balance changes over the course of the project.

• Early in project: heavier emphasis on being a visionary; The WHATs, the principles; Not too much on practices (hows)

• Later, emphasis placed more on tactics to finish the project.

• Projects fail when there is too much emphasis on tactical issues too early.– Will note in 6016, we spend much time on front-end activities; vision, risk…– We use the RUP– Second part – more management, SCRUM, practices, etc…

• Great teams: able to balance the two at each moment in project.

Page 23: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

23

Culture, by Descriptive Words and Phrases: Shared Sense of Urgency (Chemistry - Attitude)• Important every one on team shares same sense of urgency to

complete project. (Attitude)

• If business people are more concerned about completion and developers are more concerned about the perfect architecture, failure will result.

• Team Building: A shared sense of urgency is also the most important factor in building teams.

• Team Building is NOT:– compatible personalities or team building exercises or even mutual respect

that makes the best teams; – it is a shared goal or aggressive but achievable deadline that the team uses

as a rallying cry for getting the project done.

Page 24: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

24

Culture, by Descriptive Words and Phrases: Shared Sense of Highly Collaborative Styles

• Collaboration is a vital success factor in sustainable development.

• Good teams are able to work together, – embrace the differences between personalities and rules and – strive for a successful project.

• They recognize there are clear rules for each of them to play.

• Must be done in person not via email / voice mail, if possible – Is the most effective form of collaboration.

Page 25: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

25

Culture, by Descriptive Words and Phrases: Complementary Talents and Skills

• Great cultures recognize talents and skills from each other.

• Too many companies focused on skill alone; recruit only for skills.• But skills can be taught, whereas talent cannot.

• Software development companies:– Perfect examples where people talented at complex problem solving make

excellent programmers.– Yet, most ads still look for years of experience programming in a particular

language when what they should be looking for are people who are talented problem solvers.

Page 26: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

26

Culture, by Descriptive Words and Phrases: Continually Improving and Learning

• Continual improvement and learning is a vital element of sustainable development.– Experienced employees know the organization and needs.– They know the principles and practices for sustained development / growth.

• Great people and teams continually learn and refine their projects and how they approach projects.

Page 27: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

27

Culture, by Descriptive Words and Phrases: Change Tolerant

• Great teams understand that change is necessary and desirable.

• They also understand change must sometimes be made in the face of conflicting or incomplete information.

• Just because a decision is made at one time does not mean it cannot be changed or modified as new information becomes available.

Page 28: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

28

Culture, by Descriptive Words and Phrases: Risk Aware

• Risk is a common element in all projects.

• Effective teams are always aware of risk and are able to differentiate between real and perceived risk; – Not afraid to make decisions with the best information available in the face

of possible risk.

• Always looking for ways to reduce risk too.

Page 29: The Principles of Sustained Software Development Lecture 2 CIS 6101 – Software Processes and Metrics 1

29

Culture, by Descriptive Words and Phrases: Fun

• Can’t always choose what you do, but you can choose how you do it.

• Good people and teams recognize this and find ways to make work more fun for their co-workers and customers.