Midterm Flashcards
(137 cards)
Why do we write software?
We write software to solve problems
What is essential complexity?
Essential difficulties are that are intrinsic to developing software.
These difficulties cannot be separated from the software development process.
What is accidental complexity?
Accidental difficulties emerge because of circumstance
What’s the “hard part” of writing software
Learning a new skill is hard.
The only way to get better, faster, and more efficient, is practice.
External Software Quality - what is it and what are the measures?
Refers to the quality of the software from the perspective of the stakeholders
Functionality, Reliability, Usability, Efficiency, Portability
Internal Software Quality - what is it and what are the measures?
Concerned with the software quality from the perspective of the developers
Primary - Maintainability
Within that: Analyzability, Changeability, Stability, Reusability, and Testability
what is the most important skill to achieving high internal software quality?
design
What is Compiling?
Compiling is turning human-readable source code into computer readable instructions
What is Interpreting?
Fundamentally the same idea 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
How does Java work?
A programmer edits the .java file, then the .java files goes to the JDK to get compiled, which creates a .class file, which the JRE runs, and the JVM and JIT within the JRE interact with the actual computer to run the .class file
What is JDK?
Java Development Kit
Compiles code and produces a .class file, which is the bytecode that specifies the machine instructions
What is JRE?
Java Runtime Environment
Used to run Java programs
What is JVM?
Java Virtual Machine
JVM is actually 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; JVM handles the direct interactions with the actual underlying hardware
What is JIT?
Just In Time Compiler
JIT is part of the JVM, specifically the part that can compile JVM bytecode instructions into machine code instructions for the underlying hardware
What is a distributed repository?
There is a remote repository, and you work on your working copy, commit to your local repository, and then push to the remote repository
What are the steps for merging?
- Commit your changes in your feature branch
- Checkout main
- Pull main
- Checkout feature branch
- git merge main to merge main into your feature branch
- Resolve any conflicts, commit and push
- Checkout main
- git merge featureBranch
How do you use branches effectively and safely?
One branch per feature
What are the advantages of Gradle?
- Greatly simplifies the process of downloading and using external libraries
- Greatly simplifies the process of updating to new libraries
- Greatly simplifies the process of building a Java project into a distributable Jar file
What does the dependencies section in Gradle do?
Dependencies section lists all the external libraries the program is using
What does the repositories section do in Gradle?
Repositories section tells Gradle that you want to download all references from the repository within the brackets
What does the Gradle build command do? “gradle build”
The gradle build command is used to compile, test, and package your project; uses the globally installed version of Gradle
What does Gradle’s test command do?
This tells gradle how to execute our tests
What is the meaning of a fat-jar
It is a jar that contains not only my own code, but also all of the dependencies of my code
Gradle wrapper (gradlew) - what does it do? Why is it useful?
./gradlew build: Uses the Gradle Wrapper, which ensures consistency by downloading and using the project-specific Gradle version