Title: Why Is Software Difficult to Build?
1Why Is Software Difficult to Build?
- Lack of control
- Lack of monitoring
- Lack of traceability
- Uncontrolled changes
2Conflicts in Team Software Development
- Simultaneous updates how to prevent one person
from undoing the changes of another - Shared and common code how to notify everyone
who needs to know about a change - Versions how to make changes to all affected
versions when needed
3Other Software Processes
- With a focus on
- Configuration management
- Change management
4Other Processes
- Development Process is the central process around
which others revolve - Methods for other processes often influenced by
the dev process
5Other Processes In the context of Dev Processes
6Monitoring and control
- Aspect of project management process
- Lasts for the duration of the project and covers
the development process - Monitors all key parameters like cost, schedule,
risks - Takes corrective actions when needed
- Needs information on the dev process provided
by metrics
7Communication Facilitation
- Realistically no plan covers everything!
- Additional decisions are made during development
- Documents should be updated and communicated
- Typical environment
- Multiple teams
- Multiple user groups
- Multiple disciplines
- Multiple locations
- In many setting PM is center of communication hub
- Planning and content meetings
8Meeting Types
- Issues Meetings
- Regularly schedule meeting (ie. open in
everyones schedule) - Issues gathered the day before and distributed
- Issue initiator indicates required attendance
- QA Meetings
- Planning
- Discussion with business
- Discussion with developers
- Regular Review of open tickets
9Relationship with Dev Process
10Configuration Management Process
11Software Configuration Management Basics
- Identification identifying software
configuration items in a baseline - Control controlling the release of a product
and changes to it throughout its lifecycle - Status Accounting recording and reporting of
the status of components and changes - Auditing and Reviewing Validating the
completeness of a product and that SCM procedures
are being followed
12SCM Definitions
- Baseline One or more software configuration
items that have been formally reviewed and agreed
upon and serve as a basis for further development - Software Configuration Item A collection of
software elements treated as a unit for the
purposes of SCM - Configuration A collection of all the elements
of a baseline and a description of how they fit
together
13SCM Definitions (contd)
- Configuration Control Board Group with the
responsibility for reviewing and approving
changes to baselines - Software All of the code, specifications,
plans, descriptions, processes, and documents
associated with a software development effort - Version A specific instance of a baseline or
configuration item
14Background
- A software project produces many items -
programs, documents, data, manuals, - All of these can be changed easily need to keep
track state of items - Software Configuration Management (SCM)
- Systematically control the changes
- Focus on changes during normal evolution (req
changes will be handled separately) - CM requires discipline as well as tools
15Background
- SCM often independent of dev process
- Dev process looks at macro picture, but not on
changes to individual items/files - As items are produced during dev they are brought
under SCM - SCM controls only the products of the development
process
16Examples of Configuration Items
- Product concept specification
- Software project plans
- Software requirements specifications
- Software design descriptions
- Source code
- Database descriptions
- SCM procedures
- Software release processes
- Software test documents
- User documentation
- Maintenance documentation
17SCM Process and Dev process
18Need for CM
- CM needed to deliver product to the client
- What files should comprise the product?
- What versions of these files?
- How to combine these to make the product?
- Just for this, versioning is needed, and state of
different items has to be tracked - There are other functions of CM also
19Functionality Needed
- Capture current state of programs
- Capture latest version of a program
- Undo a change and revert back to a specified
version - Prevent unauthorized changes
- Gather all sources, documents, and other
information for the current system
20CM Mechanisms
- Configuration identification and baselining
- Version control
- Access control
- These are the main mechanisms, there are others
like - naming conventions,
- directory structure,
21Configuration Items
- Sw consists of many items/artifacts
- In CM some identified items are placed under CM
control - Changes to these are then tracked
- Periodically, system is built using these items
and baselines are established - Baseline logical state of the system and all
its items is a reference point
22Version Control
- Allows different projects to use the same source
files at the same time - Isolates work that is not ready to be shared by
the rest of the project - Isolates work that should never be shared
- Allows software engineers to continue development
along a branch even when a line of development is
frozen
23Version and access control
- Key issues in CM
- Done primarily on source code through source code
control systems, which also provide access
control - Allows older versions to be preserved and hence
can undo changes - Examples
- CVS Original open source system (1986)
- Subversion Open source CVS replacement (1999)
- Microsoft Visual SourceSafe (VSS) targeted for
smaller dev projects - IBM Rational ClearCase Industrial strength
solution
24Version and Access Control
- When programmer developing code is in private
area - When code is made available to others, it goes in
an access-controlled library - For making changes to an item in library, it has
to be checked out - Changes made by checking-in the item versioning
is automatically done - Final system is built from the library
25Version/Access Control
- Generally both version and access control done
through CM tools - Tools limit access to specified people - formal
check in, check out procedures - Automatic versioning done when a changed file is
checked-in - Check-in, check-out control may
- be restricted to a few people in a project
- Require successful compile/build cycle
26CM Process
- Defines the activities for controlling changes
- Main phases
- CM Planning
- Executing the CM process
- CM audits
27CM Planning
- Identify items to be placed under CM
- Define library structure for CM
- Define change control procedures
- Define access control, baselining,
reconciliation, procedures - Define release procedure
28CM Audit
- During project execution CM procedures have to be
followed (e.g. moving items between directories,
naming, following change procedures, ) - Process audit has to be done
- CM audit can also check if items are where they
should be
29Summary CM
- CM is about managing the different items in the
product, and changes in them - Developing a CM plan at the start is the key to
successful to CM - CM procedures have to be followed audits have to
be performed - Requires discipline and tools
30Requirements Change Management Process
31Background
- Requirements change at any time during the
development - Changes impact the work products and the various
configuration items - Uncontrolled changes can have a huge adverse
impact on project in cost/sched - Changes have to be allowed, but in a controlled
manner
32Change Control
- Proposed changes to baselines must have some
level of review - The impact of proposed changes must be identified
and understood. - When appropriate the approval of the CCB, key
managers and project members must be obtained - Approved changes must be properly implemented
- After changes are made all affected parties must
be notified
33A Change Mgmt Process
- Log the changes
- Perform impact analysis on the work products and
items - Estimate impact on effort and schedule
- Review impact with stakeholders
- Rework the work products/items
34Changes
- Change often triggered by change request
- Change req log keeps a record of requests
- Impact analysis for a change request involves
identifying the changes needed to diff items, and
the nature of change - The impact of changes on the project is reviewed
to decide whether to go ahead - Cumulative changes also often tracked
35http//www.marinebiodiversity.ca/COINAtlantic/deve
lopment-implementation-sustainability/geoconnectio
ns-coinatlantic/web-mapping-application/User20Ac
ceptance20Test20Plan20and20Change20Request20
Process20-20Cur....pdf/view
36Baseline CM
- Recall
- A baseline is one or more software configuration
items that have been formally reviewed and agreed
upon and serve as a basis for further development
37Baseline Management
- What baselines are required to be defined and
managed? - Typically aligned with major milestones
- Applies to documents as well as code
- How is the current software configuration
defined? - A snapshot of everything the product has produced
at some point in time
38Baseline Management (contd)
- Who must approve changes to baselines?
- Usually the Change Control Board (CCB)
- How and when are baselines created and physically
controlled? - Through the use of document control systems, code
control tools, and procedures to prevent the
making of unapproved changes
39Baseline Management (contd)
- How are people informed of changes?
- The CCB disseminates change information
- How are baselines verified?
- By reviews, inspections, and the testing of code
- Are baselines tied to project milestones?
- Many are, but during coding many may not be
40Baseline Management (contd)
- What information is required to process a change
to a baseline? - A description of the proposed changes
- Reasons for making the changes
- List of other items affected by the changes
- What tools, resources, and training are required
to perform baseline change assessment? - File comparison tools to identify changes
- Resources and training depend on size and
complexity of project
41Baseline Management (contd)
- How are unauthorized changes to source code
prevented, detected, and corrected? - No way to prevent unauthorized changes
- Provide software engineers with training
- A commercial available SCM systems provide
adequate protection - Unauthorized changes should be caught during
assessment procedures
42Baseline Management (contd)
- What tools, resources, and training are required
to perform baseline management? - A fully featured SCM tool
- On large projects a separate SCM group may be
needed - SCM training is required for all involved in the
process
43For your project
- Should have a configuration management process
defined - Change management procedures
- Any changes to the baseline documents should be
documented and include a formal change management
request
44Examples
- Collegiate Project Services http//www.collegiatep
roject.com/articles/PreliminaryChangeManagementPla
n.pdf - Eclipse http//www.eclipse.org/epf/process/change
_request_faq.php