Midterm 1 Flashcards
When was the term Software Engineering introduced?
The late 60s
What are the goals of software Engineering?
To produce quality software or well engineered software
What are some characteristics of quality software?
Peforms precisely as required, reliable, maintainable, good UI, efficient, delivered on time, delivered within budget
What are some reasons for the difficulty of software development?
The problem domain and solution domain is difficult.
The development process is difficult
What are the 4 facets of Software Engineering?
Problem solving
Modeling
Knowledge Acquisition
Rationale Management
What is software engineering?
A systematic approach to develop software within a specified time and budget
What are the stages of the software engineering life cycle?
Requirement Analysis
Design
Implementation
Testing
Evolution
What is specification (requirement analysis)?
The process of understanding and defining what services are required and identifying the constraints on these services
What is Design?
A description of the structure of the software to be implemented
What is Implementation
The process of converting a system specification and design into an executable system
What is validation?
Checking that the software system meets its requirements and specifications and that it fulfills its intended purpose
What is Evolution?
The process of modifying a software product after delivery
What are the 4 essential attributes of good software?
Maintainability
Dependability
Efficiency
Acceptability
What are the two types of software products?
Generic Products
Customized Products
What are the three parties involved in system development?
Users
Customers
Producers
How should systems take into account users?
Systems should be specified based on user needs
Validated whether it really functions according to user needs
Documented by describing the system from the user’s perspective
What is the Software Development Process or Software Process?
A structured set of activities required to develop a software system
What do all software processes involve?
Specification, Design and Implementation, Validation, Evolution.
What are the two types of software processes?
Plan-driven processes
Agile Processes
What are plan driven processes?
All the process activities are planned in advance and progress is measured against this plan
What are agile processes
Planning is incremental and iterative, and it is easier to change the process to reflect changing customer requirements
What is the main draw of the waterfall method?
It is hard to change after the process is underway
When should the waterfall method be used?
When the requirements are well understood and changes will be limited
What are the benefits of incremental development?
Changing is cheap
You can get customer feedback easier
More rapid delivery of a working product to the customer is possible
Early increments act as a prototype to help elicit requirements for later increments
Low risk of project failure
Highest priority system services can be tested more