Midterm Flashcards
What is SWE?
An engineering discipline concerned with all aspects of SW production
What is the difference between SWE and CS?
CS focuses on theory and fundamentals; SWE is concerned with the practicalities of developing and delivering useful SW
What are the fundamental SWE activities?
specification, development, validation, and evolution
What are the key challenges facing SWE?
coping with increasing diversity, demands for reduced delivery times, and developing trustworthy software
What are the costs of SWE?
Roughly 60% developmental and 40% testing; for custom SW, evolution costs often exceed development
What are the types of SW products?
generic & customized products
What are the attributes of good SW?
maintainability, dependability and security, efficiency, and acceptability
What types of SW applications are there?
stand-alone, interactive transaction-based, embedded control systems, batch processing systems, entertainment (media) systems, systems for model and simulation, data collection systems, systems of systems
What are the eight principles of the ACM/IEEE Code of Ethics?
public, client & employer, product, judgement, management, profession, colleagues, and self
What are the biggest reasons that SW fails?
COME BACK
What is the difference between plan-driven and agile processes?
In plan-driven, activities are planned for progress to be measured against. In agile, there is incremental planning. In practice, the process is a mix of both.
What are the types of SW process models?
The Waterfall Method, Incremental Development, and Integration & Configuration
What is the Waterfall method and what is it good for?
a plan-driven process with distinct phases that you cannot go back to; best for large system engineering projects with stable requirements
What is incremental development?
A process where specification, development, and validation are interleaved (could be plan-driven or agile)
What are the pros and cons of incremental development?
there’s a reduced cost of accommodating changing customer reqs, its easier to get customer feedback, and quicker delivery/deployment of usable SW for the customer; the process isn’t visible and system structure tends to degrade with incremental changes
What is integration & configuration?
Making SW from already existing components for reduced costs & risks and faster delivery/deployment, but requirements compromises may not meet real needs of users and there’s loss of control over evolution or reused components
How do you reduce the cost of rework?
Anticipate (activities allows for change to happen like prototyping) and Tolerance (allow for change at a low cost)
How do you cope with change?
System prototyping and Incremental delivery?
What are the approaches to SW improvement?
Maturity approach (improving process and project management by using better SWE practices) and Agile approach (iterative changes)