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
Describe how intellectual property rights are an issue of professional responsibility
Engineers should always be aware of local laws governing the use of intellectual property
Describe how Computer Misuse is an issue of professional responsibility
Software engineers should not use their technical skills to misuse others’ computers - disseminations of viruses, malware, etc.
Describe software entropy
“Software entropy is the risk that changing existing software will result in unexpected problems, unmet objectives, or both. Although negligible when software is first created, software entropy grows with each development iteration.” -the internet
Describe why programming in a “professional setting” can be more difficult than programming in an academic setting
Generally, when programming for an assignment, there is a detailed, exact list of requirements and tools available to solve the problem. In a professional setting, the tools must be chosen by the programmer and the requirements may be less clear or more abstract.