CS1530 Final Exam
Value-Adjustment Factor
.65 + .01(summation of answers to each of the 14 questions of the GSC Function Points).
Pros of Estimation by Analogy
Based on actual project data.
Early Design Model
COCOMO II Model, Can get rough estimates before the entire architecture has been decided.
3 Classification of Gang of Four
Creational, Structural, Behavioral.
Cost Estimation Step 3
Estimate the schedule (Calendar months).
Mushroom Management
Keeping employees uninformed and misinformed (kept in the dark and fed manure).
Pros of Parkinson's Law
No Overspending.
Design by Committee
Result of having many contributors to a design, but no unifying vision.
Cons of Top - Down
Tend to overlook low level components, No detailed basis.
Integration Testing
verifies that separate systems can work together
Model-View-Controller (MVC)
A pattern of app design in which view controllers serve as the communication pipeline between views and the data model.
Cash cow
A profitable legacy product that often leads to complacency about new products.
Defect Density
A rate-metric which describes how many defects occur for each size/functionality unit of a system. Number of defects divided by System Size. System Size can be based on Lines of Code or Function Points.
Top - Down
AKA Macro Model, Derived from the global properties of the product and then partitioned into various low level components.
Stovepipe
AKA Silos. A structure that supports mostly up-down flow of data but inhibits cross organizational communication.
Software Testing
Activity to check whether the actual results match the expected results and to ensure that the software system is defect free.
Cyclomatic Complexity
Aimed at indicating a program's testability and understandability. Based on graph theory. Measures number of linearly independent paths comprising the program. Number of edges minus number of nodes plus two times the number of unconnected parts of the graph.
Observer
An object that "watches" the state of another object and takes action when the state changes in some way.
Management by perkele
Authoritarian style of management with no tolerance of dissent.
Application Composition Model
COCOMO II Model, Good for projects built using rapid application development tools.
Post-Architecture Model
COCOMO II Model, Most detailed model, used after overall architecture has been decided on.
Constructive Cost Model
COCOMO. Three different models: Organic, Embedded, and Semi-detached. Uses two equations to calculate effort in man months and the number on months estimated for project.
Expert Judgement
Capture the knowledge and experience of the practitioners and providing estimates based upon all projects to which the expert participated.
Model
Classes in your system that are related to the internal representation of the state of the system.
View
Classes in your system that display the state of the model to the user. Usually the GUI or UI, Shouldn't contain app Data.
Controller
Classes that connect model and view. Defines how user interface reacts to user input. Receives messages from View. Sends messages to Model. Sometimes part of view.
Goals of Design Pattern
Codify good design. Give design Structures explicit names. Capture and preserve design information. Facilitate restructuring/Refactoring.
Design Pattern
Common solution to recurring problems in design. 4 Parts: Name, Problem, Solution, Consequences and Trade-offs. Language and Implementation independent.
Anti-Patterns
Common solutions to common problems where the solution is ineffective and may result in undesired consequences.
Estimation by Analogy
Comparing the proposed project to previously completed similar project in the same app domain. Actual data from the completed projects are extrapolated. Can be used either by system or component level.
Bottom - Up
Cost of each software components is estimated and then combined the results to arrive the total cost for the project. Use the knowledge acquired by doing the small software components to construct estimation for system.
Factory Pattern
Create object without exposing the creation logic to the client and refer to newly created object using a common interface. Part of Creational.
Strategy Pattern
Create objects which represent various strategies and a context object whose behavior varies as per its strategy object. Decouples interface from implementation. Part of Behavioral.
Observer Pattern
Defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically. Known Uses: Java Message Service. Belongs to the Behavioral .
Cost Estimation Accuracy
Determined by the rate at which estimates converge to the actual cost. Use the mean magnitude of relative error to determine this.
Analysis Paralysis
Devoting disproportionate effort to the analysis phase of a project.
Problems with LOC
Different Lines of Code based on what language and what developer was used. Calculate Lines of code after implementation. Probably not useful for getting prediction of cost and effort for management.
Cons of Facade Pattern
Does not prevent clients from accessing the underlying classes.
Singleton Pattern
Ensures a class has only one instance, and provides a global point of access to it. Known Uses: OS and Print Task Manager. Part of Creational.
Collecting Software Engineering Data
Establish Goal of Data Collection Develop List of questions Establish Data Categories Design and Test data Collection forms/programs Collect and validate data Analyse Data.
Cost Estimation Step 2
Estimate the Effort (man-months).
Cost Estimation Step 1
Estimate the size of the product. (Lines of code or function points).
GSC Function Points
Extension to Function Points because it didn't address certain functionality which systems can offer. Involves answering 14 questions about the system and modifying the original function point count accordingly.
Dependency Injection
Facilitates loosely coupled object-oriented software systems. Technique by which collaborating objects are passed to the class that needs to work with them, and the class itself codes against an interface or base class, rather than a specific implementation class.
Escalation of commitment
Failing to revoke a decision when it proves wrong.
Beta Testing
Final testing before releasing application for commercial purpose. Typically done by end users or others.
Pros of Algorithmic Model
Generate repeatable estimation. Easy to modify input data. Easy to refine and customize formulas. Objectively calibrated to experience.
Software Cost Components
Hardware, software, Travel, Training and Effort Costs (The dominant factor in most projects).
Root Cause of Anti-Patterns
Haste, Apathy, Narrow-Mindedness, Sloth, Avarice, Ignorance, Pride.
Cons of Estimation by Analogy
Impossible if no comparable project had been tackled in the past.
Moral Hazard
Insulating a decision-maker from the consequences of his or her decision.
Cost Estimation Methods
Judgement, Estimation by analogy, price to win estimation, parkinson's law, and Algorithmic (Parametric) model.
Unit Testing
Looking for errors in a subsystem in isolation.
Average Staffing
Man Months divided by Time to Develop
Cons of Bottom - Up
May overlook system level costs. More time consuming.
Function Points
Measure the functionality offered by a system. Language and developer independent. Deal with External inputs, External outputs, Logical internal Files, External Interface Files, and External Inquiries.
Cost Estimation Step 4
Meta-Step. Provide estimates in ranges and periodically refine the ranges to provide increasing precision as the project progresses.
Man Months
Mode Factor A times number of thousand lines of delivered instructions raised to Mode Factor B times Effort Adjustment Factor.
Time to Develop
Mode Factor C times Man Months Raised to the Mode Factor D.
Pros of Observer Pattern
Modularity: Subject and Observers may vary independently. Extensibility: Can define and add any number of observers. Customizability: Different observers provide different views of subject.
Pros of Bottom - Up
More Stable, More detailed, and allow each software group to hand an estimate.
Smoke Testing
Non-exhaustive software testing, ascertaining that the most crucial functions of a program work, but not bothering with finer details
Functional Point Equation
Number of external inputs Times four plus Number of external outputs times five plus Number of logical internal files times ten plus Number of external interface files times seven plus Number of external enquiries times four.
Pros of Price to win estimation
Often rewarded with the contract.
Cons of Expert Judgment
Only as good as expert's opinion. Hard to document the factors used by the experts.
Cons of Singleton
Potential for misuse of global instance. Implementation may be less efficient than a global Concurrency issues.
Software Cost Estimation
Predicting the resources required for a software development process. Best when done throughout software life cycle.
Price to Win Estimation
Price believed necessary to win the contract.
Facade Pattern
Provides a unified interface to a set of interfaces in a subsystem. Defines a higher-level interface that makes the subsystem easier to use. Part of Structural.
Abstract Factory Pattern
Provides an interface for creating families of related or dependent objects without specifying their concrete classes. Part of Creational.
Failure Rate
Rate of defects over time. Represented by the Lambda symbol. Difference in reliability of a project at different time interval divided by the reliability at the beginning of the interval times the interval.
Pros of Singleton
Reduces namespace pollution Makes it easy to change your mind and allow more than one instance. Allow extension by subclassing.
Pros of Top - Down
Requires minimal project detail, Usually faster and easier to implement, Focus on system level activities.
Pros of Facade Pattern
Shielding clients from subsystem promotes weak coupling b/w subsystem and the clients. Simplifies porting systems to other platforms.
Mean Magnitude of Relative Error
Summation of all estimates' percentage error over the number of estimates.
Con of Parkinson's Law
System is usually unfinished.
White Box Testing
Testing based on an analysis of the internal structure of the component or system.
Regression Testing
Testing of a previously tested program following modification to ensure that defects have not been introduced or uncovered in unchanged areas of the software, as a result of the changes made. It is performed when the software or its environment is changed.
Black Box Testing
Testing, either functional or non-functional, without reference to the internal structure of the component or system.
Measurement
The process by which numbers or symbols are assigned to attributes of entities in the world according to clearly defined rules. Software Measurement deals with Product, Process and People.
Parkinson's Law
The project costs whatever resources are available.
Cons of Price to win estimation
Time and money run out before the job is done.
Alpha Testing
Type of testing a software product or system conducted at the developer's site. Usually it is performed by the end users.
Cons of Algorithmic Model
Unable to deal with exceptional conditions. Some experience and factors cannot be quantified. Sometimes Algorithms may be Proprietary.
Cons of Observer Pattern
Unexpected Updates: Observers don't know about each other. Update Overhead.
Matrix Management
Unfocused organizational structure that results in divided loyalties and lack of direction.
Algorithmic (parametric) Model
Use of mathematical equations to perform software estimation. Accuracy of model can be improved by calibrating the model to the specific environment.
Pros of Expert Judgment
Useful in absence of quantified data. Can factor difference between past experiences and project requirements. Can factor impacts caused by new tech, apps and languages.
Mean time between Failure
Useful in safety-critical applications. One divided by the Failure Rate.
Observable Object
in an observer design pattern, the object "of interest" that represents data or state that may change in the future. Often notifies the observers when its state or data changes.
Adapter Pattern
the design pattern that translates one interface for a class into a compatible interface. Part of Structural.