Midterm Flashcards
What is Software Engineering?
Developers of software in a team or solo
What are the 3 Main Areas of Software Engineering?
Development, maintenance and management
What is Software?
- Requirements Specification Document
- Design Specification Document
- Programs
- Test Cases
- User and Technical Documentation
What are Large Software Systems?
- large number of functions, classes, and lines of code
- team of developers
- high cost
- lifetime measure in years
- software costs dominate hardware costs
What is the Science of Building Large Software Systems
On time/within budget, correct operations, acceptable performance
What was the Software Crisis?
Requirements of projects were unclear/unmet, no describing what the software should look like or do, high cost and pressure, and lack of coordination within the team
What are the two types of software?
- Generic products: developed for a general market
- Bespoke (customized): developed for a specific organization/company
What are the 6 phases of software life cycle?
- Feasibility Study: should we proceed with the proposed project?
- Analysis: describe the problem requirements.
- Design: produce a high quality solution to the problem. (build software architecture and refine to modules)
- Implementation: implement the solution. (produce source code)
- Testing: was the problem solved? (assess each quality)
- Maintenance: fix bugs, enhance features, adapt to new things.
Why is Software still Delivered Late?
- Changing requirements not reflected in schedule
- Underestimation of technical difficulties
- Unrealistic deadlines
- Lack of communication among project members
- Fail to see that the project falls behind schedule
What are some Production Activities?
- Analyze problem requirements
- Decide on high-level software architecture
- Refine architecture
- Implement and test programs
- Write user documentation
- Release to the customers
- Provide support and maintenance
What are some Management Activities?
- Conduct the software feasibility study
- Plan and schedule the development tasks
- Estimate the total cost
- Coordinate among developers
- Manage risks (miscalculation or coworker leaving)
- Track progress of project completion
What were some of Technical/Practical disasters with Software Before?
- Improper code reuse
- Inadequate testing
- Over budget
- Logical problems that is rare and unique.