Test1 Flashcards
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.