Professional Documents
Culture Documents
Outline:
Avoiding Classic mistakes
- People related
- Technology related
- Product related
- Process related
Applying Software development fundamentals
- Management fundamentals
- Technical fundamentals
- QA fundamentals
Risk Management
- Element of Risk Management
- Risk Identification
- Risk Analysis
- Risk Prioritization
- Risk Control
Schedule-oriented practices
The four pillars of rapid development. The best possible schedule depends on classic-mistake
avoidance, development fundamentals, and risk management in addition to the use of schedule-
oriented practices.
Process related
Overly optimistic schedules:
This sort of schedule will fail by under-scoping the project and hurt the long-term morale
and productivity of the developers.
Insufficient risk management:
If project risks are not actively managed, the project will lead into a slow-development
mode.
Contractor failure:
weak relationship with contractors can lead to a slow-down in the project
Insufficient planning
Short-changed upstream activities:
Starting coding without properly designing the project plans will cost 10 or 100 times more
than doing it with properly designed plans.
Short-changed quality assurance
Eliminating design and code reviews, eliminating test planning, and doing only perfunctory
testing will reduce the development of the project and ends up with major bugs.
Omitting necessary tasks from estimates
People forget about the less visible tasks and those tasks add up.
Code-like-hell programming
Developers should be sufficiently motivated rather forcing them to work hard.
Product related
This type of mistake talks about which can affect the outcome of the project.
Requirements gold-planting:
More requirements that are not necessary, and pay less attention to complex features
Feature creep:
On average 25% of requirements can be changed and affect the project schedule.
Developer gold planting:
Frequently, developers attempt to try new technologies that they saw in other projects,
which is not necessary.
Applying Software development fundamentals
1. Management fundamentals
Estimation and Scheduling: Accurate estimation is an essential input for effective planning,
which is essential for efficient development.
Planning: work for not to face a poor planning
Tracking: progress tracking, status meetings, status reports, milestone reviews, budget reports,
and management by walking around.
Measurement: used to analyze status, quality, and productivity using metrics including how
much or how little data to collect and how to collect it.
2. Technical Fundamentals
Design:
Major design styles practices (such as object design, structured design, and data structure
design)
Foundational design concepts (such as information hiding, modularity, abstraction,
encapsulation, cohesion, coupling, hierarchy, inheritance, polymorphism, basic algorithms,
and basic data structures)
Standard design approaches to typically challenging areas (including exception handling,
internationalization and localization, portability, string storage, input/output, memory
management, data storage, floating-point arithmetic, database design, performance, and
reuse)
Design considerations unique to the application domain you’re working in (financial
applications, scientific applications, embedded systems, real-time systems, safety-critical
software, or something else)
Architectural schemes (such as subsystem organization, layering, subsystem
communication styles, and typical system architectures)
Use of design tools
Requirement management:
Requirements-analysis methodologies including structured analysis, data structured
analysis, and object-oriented analysis
System-modeling practices such as class diagrams, dataflow diagrams, entity-relationship
diagrams, data-dictionary notation, and state transition diagrams
Communication practices such as Joint Application Development (JAD), user-interface
prototyping, and general interview practices
The relationships between requirements management and the different lifecycle models
including evolutionary prototyping, staged releases, spiral, waterfall, and code-and-fix
Construction:
Coding practices (including variable and function naming, layout, and documentation)
Data-related concepts (including scope, persistence, and binding time)
Guidelines for using specific types of data (including numbers in general, integers, floating-
point numbers, characters, strings, Booleans, enumerated types, named constants, arrays,
and pointers)
Control-related concepts (including organizing straight-line code, using conditionals,
controlling loops, using Boolean expressions, controlling complexity, and using unusual
control structures such as go to, return, and recursive procedures)
Assertions and other code-centered error-detection practices
Rules for packaging code into routines, modules, classes, and files
Unit-testing and debugging practices
Error-Prone Modules:
Error-prone modules tend to be more complex than other modules in the system, less
structured, and unusually large.
They often were developed under excessive schedule pressure and were not fully tested.
If a module’s error rate hits about 10 defects per 1000 lines of code, review it to determine
whether it should be redesigned or re-implemented
Testing:
The most common quality-assurance practice is undoubtedly execution testing, finding
errors by executing a program and seeing what it does.
The two basic kinds of execution testing are unit tests, in which the developer checks his or
her code to verify that it works correctly, and system tests, in which an independent tester
checks to see whether the system operates as expected.
Technical Reviews:
Technical reviews include all kinds of reviews that are used to detect defects in
requirements, design, code, test cases, or other project artifacts.
Reviews vary in level of formality and ineffectiveness, and they play a more critical role in
development speed than testing does.
The following sections summarize the most common kinds of reviews.
Walkthrough:
The term “walkthrough” is loosely defined and refers to any meeting at which two or more
developers review technical work to improve its quality.
Walkthroughs are useful for rapid development because you can use them to detect defects
well before testing.
The earliest time that testing can detect a requirements defect
Code reading:
formal review process than a walkthrough but nominally applies only to code.
In code reading, the author of the code hands out source listings to two or more reviewers.
(more effective rather than individuals)
The reviewers read the code and report any errors to the author of the code.
Inspection:
Inspections are a kind of formal technical review that is extremely effective in detecting
defects throughout a project.
Inspections, developers receive special training in inspections and play specific roles during
the inspection.
The “moderator” hands out the work product to be inspected before the inspection meeting.
The “reviewers” examine the work product before the meeting and use checklists to
stimulate their review
Comment on technical reviews
Managing Risks
Elements of risk management
The job of software risk management is to identify, address, and eliminate sources of risk before
they become threats to the successful completion of a software project.
You can address risks at any of several levels.
Risk Assessment
Risk assessment is made up of risk identification, risk analysis, and risk prioritization:
Risk identification: produces a list of risks that have the potential to disrupt the project’s
schedule.
Risk analysis: assesses the likelihood and impact of each risk and the risk levels of
alternative practices.
Risk prioritization: produces a list of risks prioritized by impact. This list serves as a
basis for risk control.
Risk Control
Risk control is made up of risk-management planning, risk resolution, and risk monitoring:
Risk-management planning produces a plan for dealing with each significant risk. It
also makes sure that the risk-management plans for each of the individual risks are
consistent with each other and with the overall project plan.
Risk resolution: is the execution of the plan for dealing with each significant risk?
Risk monitoring: is the activity of monitoring progress toward resolving each risk item?
Risk monitoring can also include the ongoing activity of identifying new risks and feeding
them back into the risk-management process.
Risk identification
Organization and management risks
Development environment risks
End user’s risks
Customer risks
Contractors risks
Requirements risks
Product risks
External environment risks
Personnel risks
Design and implementation risks
Process risks
Risk Analysis
After you’ve identified the risks to your project, the next step is to analyze each risk to determine
its impact.
Risk Exposure
Risk exposure is equal to the probability of the unexpected loss multiplied by the size
of the loss.
Estimating Size of Loss
break down the loss into smaller losses, estimate those, and then combine the
individual estimates into an aggregate estimate.
Estimating Probability of Loss
estimations done by a person who most familiar with the system estimate the
probability of each risk,
Risk Prioritization
Once you’ve created the list of schedule risks, the next step is to prioritize the risks so that you
know where to focus your risk-management efforts.
risk-assessment table sorted by risk exposure.
Risk Control
Risk-Management Planning
to develop a plan to handle each of the high-priority risks identified during the previous activities.
The risk management plan describes who, what, when, where, why, and how of each risk’s
management.
It should also contain general provisions for monitoring the risks, closing out risks that have been
resolved, and identifying emerging risks.
Risk Resolution
Risk dependencies between another risk.
Risk Monitoring
risk-monitoring tools is the use of a “Top-10 Risks” list that you create. The Top-10 list contains
each risk’s current rank, its previous rank, the number of times it has been on the list, and a
summary of steps taken to resolve the risk since the previous review.
Interim Postmortems
the Top-10 list is probably the most useful risk-monitoring practice, a fast-track project should
also include postmortems conducted throughout the project.
Risk Officer
The job of the risk officer is to be alert to risks to the project and to keep managers and developers
from ignoring them in their planning.