Explain software crisis
It refers to the difficulty of writing useful and efficient computer programs within the required time. It was caused by the rapid increases in computer power and the complexity of the problems that arose but existing methods were not sufficient to address them.
Define software engineering (IEEE)
The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
Systematic - done or acting to a fixed plan; methodical
Disciplined - showing a controlled form of behavior or way of working
Quantifiable - capable of being measured
Define software systems engineering
It is concerned with the processes, methods, and tools for the development of large and complex software systems in an economic and timely manner.
Process - a series of actions or steps taken to achieve an end.
Method - a particular procedure for accomplishing something, esp. a systematic or established one. A method is like a recipe. A method may involve a particular paradigm or a set of paradigms. A paradigm is a particular approach or philosophy. E.g. OO, procedural, and so on.
Tools - something that is used to improve developer’s productivity. E.g. IDEs, VCS, etc.
Name the software development generic phases
Explain the motivations for selecting a software development process
Name the general principles of software engineering practice
Discuss the build-and-fix model
When utilizing the build-and-fix model, the development team finds out the customer’s needs and builds the software. After building, the team will determine if the software fits the needs of the client. If it does, work is complete. If it does not, the software is modified iteratively until it fits the needs of the client.
Discuss waterfall models
Advantages
Disadvantages
Discuss evolutionary models
Based on the idea of developing an initial implementation, exposing this to user comment and refining it through many versions until an adequate system is developed. These models are both iterative and incremental in nature.
Describe agile methods
Dissatisfaction with the overheads involved in software design methods of the 1980s and 1990s led to the creation of agile methods. The aim of agile methods is to reduce overheads in the software process (e.g. by limiting documentation) and to be able to respond quickly to changing requirements without excessive rework.
These methods:
Advantages
Disadvantages
Describe formal methods
Formal Specification
Verification
Implementation
-The formal specifications are converted to executable code
Advantages
-Discipline - By virtue of their rigor, formal systems require an engineer to think out his design in a more thorough fashion-
Precision - Natural language descriptions are notoriously ambiguous
Disadvantages