describes best practices for managing and developing the workforce of an organization. P-CMM is a framework for improving an organization’s processes for managing and developing its workforce, and no specific approach to team organization is put forward.
A project's progress is affected by
–degree of communication (LOW to HIGH COUPLING)
–ability of individuals to communicate their ideas (LOW to HIGH COHESION)
Software failures can result from breakdown in communication and understanding
Ways to ensure a productive
–clearly decide who should be in the meeting
–develop an agenda
–have someone who tracks the discussion
–have someone who ensures follow-up actions
–Successful manager and highly skilled programmer
–Does the Architectural Design (OOA)
–Allocates coding among the Team Members
CP The Backup Programmer
–The Backup Programmer must be in every way as competent as the Chief Programmer, and
–Must know as much about the project as the Chief Programmer
–The Backup Programmer does Black Box Test Case planning and other tasks that are independent of the Design process
CP the Programming Secretary
–Responsible for maintaining the program production library (documentation of the project), including:
»Source code listings
Impracticality of the CP model
The Chief Programmer must be a highly skilled Programmer and a successful Manager
There is a shortage of highly skilled Programmers
There is a shortage of successful Managers
The qualities needed to be a highly skilled Programmer are unlikely to be found in a successful Manager, and vice versa
Team Manager/Team Leader model
The Team Leader is responsible for only technical Management
Team Manager only does non technical management of the team.
Synchronize and Stabalize setup:
Works well for large projects, Project leader over Team Leaders who oversee small parallel teams.
3/4 BUILDS per project
At the end of the day — synchronize (test and debug)
At the end of the build — stabilize (freeze the build)
Pair programming, programmers do not test their own code
PCMM 2: Repeatable:
communication and coordination,
training and development,
A strength of the synchronize-and-stabilize approach is that:
A rigid discipline is maintained in specifying the product’s deisgn
B the chief programmer takes personal responsibility for each line of code
C non-technical managerial decisions are handled within the group
D communication and coordination are handled by the programming secretary
**E individual creativity and autonomy are nutured
The XP approach may bring benefits to a team. Which of the following is not a benefit of the XP teams approach:
A programmers do not test their own code
**B there is still too little evidence regarding its efficacy
C less experienced programmers can learn from others
D group ownership of code
E none of these, they are all strengh
In extreme programming there is no overall design phase before the various builds are constructed. Instead the design is modified while the product is being built. This procedure is termed:
Which of the following is not a software life-cycle model?
2. rapid prototyping
3. synchronize and stabilize
**5. all are software life-cycle models
A tool that can automatically manage multiple versions is a(n):
1. upperCASE tool
2. lowerCASE tool
4. structure editor
**5. configuration management tool
Stepwise refinement is a problem solving technique that underlies many software engineering techniques. It can be defined as a means to:
**5. postpone decisions on details until as late as possible in order to be able to concentrate on the important issues
–The Software Engineer can concentrate on the relevant aspects
In software engineering the term quality implies:
**5. the extent to which the product satisfies its specification
"Stored test cases that the product has previously executed must be rerun to ensure that the modifications made to add new functionality to the product have not destroyed the product's existing functionality".
Which of the following is a type of abstraction?
**4. all of these
5. none of these
The two main design strategies are known as functional design and object-orientated design. Which of the following statements is false?
1. In an object-orientated design the system state is decentralised and each object manages its own state information.
2. In functional design the system state is centralised and state information is accessed by different functions.
3. Functional and object-orientated approaches are complementary techniques.
4. the most appropriate design strategy is selected for each stage of design, there is no need to adhere to a single approach during the whole design process.
** 5. The same design approach must be used in the design of different system components to ensure consistency, especially for large software systems.
The problem that once a class has been implemented, any change to an existing class directly affects all is descendents in the inheritance hierarchy is known as:
** 1. the fragile base class problem
Experience of object-oriented programming has shown that the inheritance network must be periodically reviewed and restructured ____________ .
** 4. to reduce its complexity and functional duplication.
Moving Target problem:
Any change to a software product can potentially cause a regression fault
ALL 5 flows are worked on during the entire lifecycle!!
Iteration and incrementation
each increment is viewed as a miniature and complete waterfall
–Rapid prototyping model plus risk analysis preceding each phase
Precede each phase by
Follow each phase by
–Planning of the next phase
–It is easy to judge how much to test
–No distinction is made between development and maintenancel
–For large-scale software only
–For internal (in-house) software only
easiest but most costly way to develop software
no specifications, no design
Software Engineers need two types of tools:
–Analytical (theoretical) tools
»Cost Benefit Analysis
»products that assist with software development and maintaining software
The 5 Basic Metrics
–In Lines Of Code
–Number of Faults detected
COMPUTER AIDED SOFTWARE ENGINEERING
can support the entire software lifecycle.
UpperCASE (front end tool)
LowerCASE (back end tool)
Online Interface Checkers (intellisense)
Source Level Debugger to:
–Machine-code core dumps
–Similar low-level documentation
CONFIGURATION CONTROL TOOLS
CMM Level 3
CASE Environments should be used at CMM level 3 or higher
Buisness modeling (Feasability study, line numbers doc w/ use case)