• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/14

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

14 Cards in this Set

  • Front
  • Back
What factors affect the optimal size of a team?
Determining the optimal team size is a matter of weighing the benefit of having an increased number of people on the team versus an increased number of communication channels required to keep everyone on the team in sync.

Developer communicates with no one, Developer communicates with a large number of people, Optimal team is 3-7,
What are the pros and cons of different developer communication relations?
Developer communicates with no one, pros: spends 100% of time on the development process, cons: errors due to a misunderstanding of requirements are not likely to be caught.

Developer communicates with a large number of people - cons: communication time is increased while actual development is decreased

Optimal team is 3-7, this allows the team to modulate the development out into assignable tasks while maintaining a lower number of required communication channels.
What is the purpose of Team Software Process (TSP)?
to create procedures or guidelines in advance for teams to apply on projects.
What are the objectives of the TSP?
Build self directed teams (3-20 engineers, establish own goals, process, and plans, track work), show managers how to manage teams (coach, motivate, sustain peak performance), accelerate CMM improvement (make CMM 5 "normal), Provide improvement guidelines to high-maturity organizations, facilitate university teaching of Industrial grade teams
What is the Capability Maturity Model
a systematic manner of assessing the overall capability of an organization to develop software.
Explain why cost estimation precision varies so greatly early in project lifecycle.
Because the project requirements may not have been fully discerned or finalized. The cost of a project will depend on how complex it will be and the complexity can only be determined when at least an initial set of project requirements have been submitted. Until we learn more about a project and what it must do and how it must perform, the cost estimation will vary greatly.
Explain the general sequence of computation when using the COCOMO technique for cost estimation.
The constructive cost model bases its cost estimation on how many lines of code may be required. It uses comparisons with past jobs to estimate cost and duration directly or to estimate lines of code. It can also use the function point method to estimate lines of code by computing unadjusted function points and applying the adjustment process. It can also use lines of code to estimate computation labor and duration.
Define a function point and how it might be used to estimate cost.
Function points were developed to assess the size of a project without having to know its design and without having to make any prior assumptions about code size. The function point technique is a means of calibrating the capabilities of an application in a uniform manner, as a single number. This number can then be used to estimate lines of code, cost, and duration by comparison with function point values of other projects.
How can milestones help improve project management?
Project milestones are concrete objectives that must be achieved at specific times. A project manager monitors the progress of a project against these milestones to determine whether or not it is on schedule. The obvious metric here is the number of days between a milestone's schedule and the day on which it was actually reached.
List 5 good habits for implementation.
Use expressive naming: ensure that the names accurately convey the meaning of the entity to which it refers. Global variable compromise the principle of information hiding and so we want to minimize their use. Function parameters: should only be used to passing info into and out of functions. If you need a working var, declare it inside the function. Explicit numbers: not good practice to use in code, instead use a control variable that takes on the numeric value of the particular var it needs when the function is called (e.g. control var in a for loop, use a .length). Initialization and declaration: declare vars as close to their first use as possible. This makes debugging easier since you can see the declaration not far removed from where it is used. Set declared vars to a default value. This ensures that the value of the var is known and eliminates the chance that a garbage value is used when the var is invoked.
Define defensive programming and explain three specific methods of defensive programming.
The effective practice of minimizing bugs by anticipating potential errors and implementing code to handle them. Error handling: Implementing code that will respond appropriately when data that is not within the legal bounds of the system is encountered. Essentially we are accounting for illegal input as defined by our app's logic. Buffer overflow prevention: checks the user's input to ensure that it is within the legal memory bounds of the var for which its value will be stored. If this check is not done, then the potential for user input to overwrite memory locations not intended for it exists. Enforce intentions: Enforce restricted areas of an application by using private fields or by using FINAL constant values that cannot be changed.
List and briefly define 5 qualities of an implementation.
FSERS - F*** school, education really sucks.

Flexibility: can the code be changed with req changes?
Security: Measure of how secure the system is
Efficiency: does it satisfy speed and data storage requirements?
Reusability: how much of the code can be reused in other apps?
Sufficiency: does it satisfy all design specs for this element?
Define refactoring.
The process of altering source code so as to leave its existing functionality unchanged. For example, if you wish to change the name of a Java class, you can use refactoring to change its name, and the change will cascade across all files that use the class so that functionality will not be lost.
List and describe 4 main refactoring taxonomies defined by Fowler.
BCGO - B**** can get out.
Big Refactoring: refactoring at the class level that has more of an architectural impact. Composing methods: concerns the process of creating, removing, and combing methods to suit an evolving app. Basically, changing a public field to private making it a self encapsulated field. Or if you want to change a String into a Name object. Generalization: refactoring that uses inheritance to convert a design and code base from one form to another that better suits the situation, such as a field that is common to several subclasses being pulled up into the superclass so that it is inherited all subclasses instead of being declared explicitly. Organizing data: refactoring that has to do with the location of data in a design or implementation.