Chapter 1: Introduction Flashcards
Describe the Software Crisis that occurred in the 1960’s
The software crisis of the 1960’s arose because the individual approach to software development did not scale up to large systems, leading to unreliable, expensive and late software.
Describe the Structured Programming paradigm
Structured programming involves using while loops and subroutines extensively instead of the more primitive “goto” statement that can lead to spaghetti code
Name some programming paradigms that arose in the 20th century
Examples:
- OOP Object Oriented Programming
- Rapid Application Development (RAD)
- Scrum
- Extreme Programming
and more
Approximately what percentage of software engineering is coding?
~7%
Why is it difficult to estimate the complexity of a software product?
Software is abstract and invisible. Purely estimating complexity on lines of code, developers working on the project, etc. may not be representative of the actual complexity. There is not an agreed upon method for measuring software complexity.
What are the two dimensions of software engineering?
- Technical Dimension - complexity of the actual system being built
- Management Dimension - complexity that arises from managing a team of software engineers
True or false: technical problems in software generally outweigh management problems
False: most problems in SWE arise at the management level
Define legacy code
Source code relating to a no longer supported computer technology or software
What is the difference between generic and customized software products?
Generic - stand-alone software that people can use - word processors, games, etc.
Customized - specialized software for companies to commission - embedded control systems, traffic monitoring systems, etc.
List the 4 essential attributes of good software
- Maintainability
- Dependability and security
- Efficiency
- Acceptability
Define software heterogeneity
The amount of dissimilar elements to achieve the same purpose. i.e. writing the software in 2 languages to run on different operating systems increases heterogeneity
Define cyclomatic complexity
Increases with linearly-independent paths through a program module - essentially, more if/else statements leads to higher cyclomatic complexity
Describe the difference between a “coder/programmer” and a “software engineer”
A coder or programmer is somebody who knows how to code, a software engineer is a person who employs software engineering techniques to design, development and maintenance of software
Describe how Confidentiality is an issue of professional responsibility in SWE
Engineers should respect the confidentiality of their employers and clients
Describe how Competence is an issue of professional responsibility
Engineers should not misrepresent their level of competence