Final Material - Midterm Material Flashcards
What is the aim of software engineering?
To produce fault-free software that satisfies user needs, is delivered on time, and within budget
What is a software development life cycle?
A description of the steps that should be performed when building software
What are the major steps of a software development life cycle?
Requirements, analysis, design, implementation, testing, and maintenance
What is the most costly phase of a software development life cycle and why?
Maintenance (about 2/3 of total cost). This is because it is spread over a much longer time frame
What is the difference between a software process and a process model?
A layer of abstraction similar to the difference between an ADT and an implemented data type
What is the waterfall model?
Plan-driven process model with separate and distinct phases of specification and development
What are the stages of the waterfall model?
Requirements definition System and software design Implementation and unit testing Integration and system testing Operation and Maintenance
What are the problems with the waterfall model?
It is difficult to change things once the process has begun and is costly to go back
The client only sees a working product when it is entirely complete
When should the waterfall model be used?
When requirements are well understood and changes will be limited. Also for large systems engineering projects
What are the 5 levels of the Capability Maturity Model (CMM) and what do they mean?
- Initial - Process is unpredictable, poorly controlled, and reactive
- Repeatable - Processes are made for specific project but there is no organization wide process and so the organization is reactive as a whole
- Defined - A process has been defined at the organization level but projects may change the process to meet its specifics
- Managed - You are measuring the process and analyzing the resulting data
- Optimizing - Using the collected data to make improvements to the process
What is the rational unified process?
A generic process for object-oriented models designed and documented using UML. It is iterative and incremental
What are the phases of the rational unified process?
Inception - Establish the business case for the system
Elaboration - Develop understanding of the problem domain and system architecture
Construction - System design, programming, and testing
Transition - Deploy the system in its operating environment
What are the core workflows of the rational unified process?
Requirements, analysis, design, implementation, test
What are the rational unified process best practices?
- Develop software iteratively - Plan increments based on customer priority with higher priority items coming first
- Manage requirements - Explicitly document customer requirements and keep track of changes
- Use component based architecture - Organize the system out of reusable components
- Visually model software - Use UML models to present static and dynamic views of the software
- Continuously verify quality - Performing testing throughout the project
- Control changes - Manage changes using a change management system and configuration management tools
What are the 4 points of the agile manifesto?
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan