Test1 Flashcards
(37 cards)
What is the software crisis?
Only 30% of software projects are successful.
Definitions of successful, challenged, and failed/impaired software projects.
Successful - project completed on time & on budget with most desired features & functions.
Challenged - over-budget, over-time, fewer features & functions.
Failed/Impaired - project cancelled or unused.
Causes of the software crisis.
A large amount of completely different applications of software. Initially developed software changes very frequently. Large time lag & cost incurred from conception to implementation. It’s a new field, so there wasn’t much managerial experience.
Failure factors. Stupid mnemonic device: Computer User Interfaces Lack Life
C - changing requirements & specifications. U - Unclear objectives I - Incomplete requirements & specs. L - Lack of user input L - Lack of planning
Waterfall method. RADIIM
- Requirement specifications.
- Analysis
- Design
- Implementation & unit testing
- Integration
- Maintenance
Phases of software development process. (RSITM)
- Requirements analysis.
- System design.
- Implementation and prototyping
- Testing, verification, and validations
- Maintenance.
Requirement specification (waterfall method step # and definition)
Step #1. Talking to the customer.
Analysis (waterfall method step # and definition)
Step #2. Focus on the “what” of the system.
Design (waterfall method step # and definition)
Step #3. Focus on the “how” of the system.
Implementation & unit testing (waterfall method step # and definition)
Step #4. Code the “how” and make sure the individual code pieces work.
Integration (waterfall method step # and definition)
Step #5. Put it all together and make it work.
Maintenance (waterfall method step # and definition)
Final phase. All “follow-up” stuff after shipping (dangerous phase apparently).
Problem with waterfall method.
Doesn’t allow iteration since each level must be completed & “signed off” on by managers higher in the organization.
Functional approach to programming definition.
Focuses on what to do & how to do it (assignment statements, expressions, if-statements, loop, subprograms, etc).
Problem with functional approach.
Functions work on data but the data is kept separate from them (no inherent connection between them.
How does OOP address the problems with the functional approach?
You never think of what is done without considering who does it, and to whom (function & data are kept together).
How does OOP model the real world?
We have classes, from which objects are created. These objects represent real-world entities. In the real world, everything that is done has a doer, and the action is done to something (object).
The set of actions that an object of a class may be requested to perform are called ____
Responsibilities.
Definition of cohesion.
How natural to the class are the entire set of responsibilities that are assigned to that class.
Definition of coupling.
Which classes interact (talk) to each other and how much they need to know about each other.
Ideally, we’d have (high/low) cohesion & (high/low) coupling.
High cohesion & low coupling.
Most important tasks in OOP.
Finding the objects, defining their operations, how they interact, their internal structure, and organizing them.
5 attributes of a complex system.
- Hierarchy
- Few objects with many instances
- Intra-component linkages are stronger than inter-component linkages
- Evolves from a simpler system
- The level of detail is arbitrary (Booch model)
Spiral model
Allows iteration. Basically you go through the waterfall method over & over, each iteration results in a new release/version of the product.