Software Flashcards
What is the difference between functional requirements and non-functional requirements?
Functional requirements – describes what a system must do and is specified by the user, non-functional requirements specify how well the system must perform
What are some basic NFR’s?
Performance, scalability, portability, compatibility, reliability, maintainability, availability, security, and usability
Describe the NFR ‘performance’
defines how fast a software system (or its component) responds to certain users’ actions under a certain workload
Describe the NFR ‘Scalability’
he ability of a system or application to handle an increasing amount of workload, data or users without compromising performance, availability or reliability
Describe the NFR ‘Portability’
determines if a system or its elements can work in different environments and establishes how well actions performed via one platform are run on another
Describe the NFR ‘Compatibility’
defines how a system can coexist and interact with another system in the same environment and how well it can exchange data with external systems
Describe the NFR ‘Reliability’
specifies how likely the system or its element would run without a failure for a given period of time under predefined conditions
Describe the NFR ‘Maintainability’
defines the time needed for a solution or its component to be fixed, changed to increase performance or other qualities, or adapted to a changing environment
Describe the NFR ‘Availability’
describes how likely the system is accessible to a user at a given point in time (one of the most business critical requirements)
Describe the NFR ‘Security’
ensures data within the system or its parts will be protected against malware attacks, data breaches, or unauthorized access
Describe the NFR ‘Usability’
basically about user-friendliness (software must be intuitive, easy to use, and meet the customer
Describe a text editor
○ Benefits: Fast to load, no auto complete, simple with few menu choice
○ Examples: Notepad, TextEdit, Sublime, VS Code (text editor with extensions)
Define IDE
Integrated Development Environment
Describe the features of an IDE
■ Time saving features like intelligent code completion and indentation
■ Built-in debugger
■ Built-in interpreter or compiler
■ Many have customizable plugins
- - -
■ Source code editor - Add and edit code
■ Runtime environment - Run program, converts source code to machine code
■ Syntax checking - Checks for potential errors while coding
■ Keyword highlighting - Color codes command words, variables, and data types
■ Debugging tools - Help detect and locate errors to be fixed
■ Break point - Stop code at specific points to check variables
■ Memory inspector - Displays content of memory to help debug problems
■ Threading - View, suspend, resume and see status of each thread
Name some common IDEs
IntelliJ, Eclipse, PyCharm, VS Code, Visual Studio, NetBeans, Xcode, AWS Cloud 9
What language is primarily used in IntelliJ?
Java
What languages are primarily used in the Eclipse IDE?
Java for Android development
What language is primarily used in PyCharm?
Python
What languages are primarily used in Visual Studio?
.NET, C++, JS, XML, HTML, and CSS. Often used for web development
What languages are primarily used in NetBeans?
Java, JS, HTML, and Android development
What languages are primarily used in Xcode?
C, C++, Objective c, Objective C++, AppleScript, Java, Python, Ruby, ResEdit, and Swift. Primarily used for iOS development
What languages are used in AWS Cloud 9?
Node js, Python, PHP, Ruby, GO, and C++
What is a compiled language?
A language that is converted into machine code by a compiler before running
What are some features of a compiled language?
○ OS / hardware specific
○ Runs quickly when in machine code
○ More difficult to debug, must be re-compiled after each change
○ Bootstrapping - process of using a compiler written in a particular programming language to compile a new version of the compiler written in the same language
What are some examples of compiled languages?
C, C++, C#, Java, and Rust
What is an interpreted language?
A language that is converted and run line by line by and interpreter
What are some features of an interpreted language?
○ Slower than compiled languages, translated one line at a time
○ Can run on any machine that has an interpreter
○ Able to modify while running
○ Easier for newer developers to use
What are some examples of an interpreted language?
Python, Coral, JavaScript, Ruby, MATLAB
What are some Object Oriented Programming languages?
○ C++, C#, Python, Java
○ Useful for code reuse
What are the categories of technology stacks?
Front-end, back-end, and full-stack
What is a framework?
a standardized platform or set of tools and guidelines designed to support the development and implementation of software applications, websites, or other digital solutions
Describe some front-end frameworks
React, Vue, and Angular
Describe some front-end styling frameworks
Tailwind CSS, Bootstrap, SASS
Describe some back-end frameworks
Spring (Java), Django (Python), ASP .NET
Describe the Apache Hadoop stack
Java based software platform. Manages data processing and storage for big data applications. The components are; HDFS (Hadoop Distributed File System), YARN (Yet Another Resource Negotiator), MapReduce, and Hadoop Common
Describe some full-stack web app framworks
Ruby on Rails, Apache Hadoop,
Describe MongoDB
NoSQL document-oriented open source database
■ Stores data in BSON format, better storage efficiency
■ Flexible and powerful querying system, supports complex queries with aggregation and indexing
■ Better suited for high-throughput applications with large datasets
■ More advanced security features such as field-level encryption, data masking, and auditing
■ Large and active community, comprehensive documentation and support resources
Describe CouchDB
NoSQL document-oriented open source database
■ Stores data in JSON format, widely used and easy to work with
■ MapReduce-based querying system, less flexible but more efficient for large datasets
■ Replication is more robust and easy to set up, with built-in support for conflict resolution and synchronization
■ Better suited for distributed applications with a high degree of data synchronization
■ Small but dedicated community, simpler and more lightweight codebase
Describe MySQL
Relational database that uses the SQL language.
What is a relational database?
A relational database is a type of database that stores and provides access to data points that are related to one another. It is based on the relational model, which organizes data into tables (also known as relations) consisting of rows and columns. Each table represents a different entity type, and rows within a table represent instances of that entity, with columns representing values attributed to those instances. Relationships between tables are established through foreign keys, enabling complex data structures and queries.
What are some advantages to using frameworks?
Tried and tested
● Flexibility - Easy to modify project as it develops
● Efficiency - Pre-existing libraries and frameworks
● Reliability - Well-used stacks, better expectations
● Scalability - Easy to add more users, traffic, storage
● Speed and Performance - Optimized frameworks help build quick and efficient projects
● Support - Existing support community
What are some common tech stacks?
LAMP, WAMP, MEVN, MEAN, and MERN
What are the technologies used in a LAMP stack and what is it used for?
Linux Apache MySQL and PHP.
○ For hosting websites and web applications on a Linux machine
○ All four components are open source
○ Backend stack
What are the technologies used in a WAMP stack and what is it used for?
Windows Apache MySQL and PHP.
○ Only difference between LAMP is the OS (Linux vs. Windows)
○ Backend stack
What are the technologies used in a MEAN stack and what is it used for?
MongoDB Express Angular and Node.js
○ For building dynamic web apps
○ Open source end-to-end JavaScript stack
○ Largely used for cloud-hosted applications, very flexible and scalable
○ Full stack
What are the technologies used in a MEVN stack and what is it used for?
MongoDB Express Vue.js and Node.js
Full stack
What are the technologies used in a MERN stack and what is it used for?
MongoDB Express React and Node.js
Full stack
What is a computer virus?
Type of malware designed to replicate itself. Running a program can spread a virus. May or may not cause problems.
Describe an ‘armored virus’
Complex code structures to prevent detection
Describe a ‘boot virus’
Infects boot sectors of the hard drive. Turning on the computer will trigger the virus to spread.
Describe a ‘trojan virus’
– Appears to be a legitimate program, but performs malicious actions
■ Attacker usually uses social engineering to trick the user into downloading or installing
■ Can spoof products by using the same icons and names
Describe a ‘rootkits virus’
Conceals malicious activities by altering system functions to hide itself
■ Software that allows for stealthy presence of unauthorized functionality in the system
■ Used when the attackers need to backdoor a system and remain unnoticed access as long as possible
Describe a ‘botnet virus’
Networks of compromised devices controlled remotely. Commonly called zombies.
■ Common uses: DDoS attacks, spam campaigns, and click fraud
■ From the moment of infection, botnet agents keep in touch with their remote Command-and-Control server
Describe a ‘companion virus’
Appears to be a legitimate file, similarly named as a familiar executable, but executes malicious code when opened
Describe a ‘macro virus’
Embedded in Microsoft Office files. Uses the mini-basic programming language
Describe a ‘stealth virus’
Any virus that attacks while trying to avoid detection
Describe a ‘polymorphic virus’
Constantly changes its code to create new variants and avoid detection
Describe ‘ransomeware’
Specified data or systems held captive by attackers until a form of payment or ransom is provided
Describe ‘worms’
Malware that self-replicates without user action. Uses the network as a transmission medium. Firewalls can mitigate infestations.
What are some vectors for computer virus infection?
Spam emails, instant messaging, file-sharing services, fake antivirus downloads, unpatched software, infected hardware
What are some examples of non-virus attacks?
● Unauthorized access
● Privilege escalation
● Insider threats
● Phishing - Trick users into providing sensitive information
● Code and SQL Injection - Inserted into applications or queries to gain unauthorized access
● Man in the Middle - Intercept of communication to eavesdrop, manipulate, or impersonate.