Final Flashcards
(366 cards)
What is ad hoc development?
a one-time solution to a problem
What does CHAOS define success as?
a project being delivered on time, on budget, with all expected features
What is the software crisis / No silver bullet
there is still no single development which by itself promises even one order-of-magnitude improvemnet with a decade in productivity, reliability, and simplicity
technology improves much faster than human’s development skills
Why do we write software?
to solve problems
What are Essential complexities?
difficulties that are intrinsic to developing software
What are accidental complexities?
difficulties that emerge due to circumstance
What is External Software Quality?
refers to the quality of the software from the perspective of the stakeholders (anyone affected by the software, not just the user - i.e. anyone who holds stake in the usage of the software)
What are the External Quality Measures?
Functionality: does it do everything it is supposed to do?
Reliability: what is the capability of the software to maintain performance under certain conditions over a certain period of time?
Usability: how much effort is needed for a customer to use software?
Efficiency: when operating, what resources are used, and to what extent, by the software?
Portability: how able is the software to be transferred from one environment to another?
What is Internal Software Quality?
the software quality from the perspective of the developers
What is the primary measure in internal software quality?
Maintainability: how maintainable it is from the developers
What are the Software Maintenance measures?
Analyzability: to what extent can the software construction be understood?
Changeability: the effort it requires to make changes to the software
Stability: the extent to which changes in one part of a software construction affect other parts
Reusability: the extent to which parts of the construction can be reused in other parts of the construction or in other software projects
Testability: the extent to which the software can be tested to find faults or defects in the software construction
What is the most important skill to achieving high internal software quality?
design
What is software entropy?
over time, software naturally becomes harder to modify - maintainability decreases
What is compiling?
turning human-readable source code into computer readable instructions
ex: waiting for someone to produce a translated transcript after a speech ended
What is interpreting?
fundamentally the same thing as compiling, only rather than turning the entire program into machine code first and then running second, when code is interpreted, we do both at the same time with the help of another program
ex: using headphones to listen to a live translator who is translating a speech as it is being made
what does the command
java example.Main
do?
runs the .class file
what does the command
java -jar MyJar.jar
do?
runs a jar file
what does the command
javac Student.java
do?
compiles a java file into a .class file
What does the JDK mean and do?
JDK: Java Development Kit
compiles code and produces a .class file, which is the bytecode that specifies the machine instructions
used for compiling
What does JRE mean and do?
JRE: Java Runtime Environment
used to run Java programs
doesn’t interact with the JDK
What does JVM mean and do?
acts like a separate computer
virtual machines have their own operating system, memory, processor, instruction set (machine language), etc. - each of the resources is effectively borrowed from the host (physical) machine
handles the direct interactions with the actual underlying physical
an interpreter, that interprets the code it is given at runtime, which is the class bytecode compiled by the JDK, and passed to the JVM by the JRE
What does JIT mean and do?
part of the JVM, specifically the part that can compile JVM bytecode instructions into machine code instructions for the underlying hardware
natively compiled machine code, machine code specifically compatible with the underlying physical hardware, is much more efficient than interpreted Java code
boosts optimization and efficiency
Benefits of the JDK, JRE, JVM, JIT approach?
Portability: an application built and compiled on Windows will behave the same way on a Linux and Mac computer if they have a compatible JRE
Convenience
Distributability
Performance
How do you create a package?
package edu.virginia.cs.dategetter