Software Development Concepts Flashcards
Programming Languages
Languages written to develop software applications.
Can be characterized by how many Translation Steps are needed to convert them into codes used directly by the computer.
Low - Level Programming Languages
Like Assembly, one step away from the machine code used by the computer (1’s and 0’s). Does not read like “english”.
High-Level Programming Languages
Most modern programming is done in high-level languages.
Multiple compiler or translation steps needed to convert to machine code.
Tends to read more like “english”
Interpreted languages
Python is one of these.
The lines of code are translated on-the-fly, meaning…as they are executed.
Compiled languages
The code is compiled or translated from the high-level language to machine code and then saved as a stand-alone “executable” program.
Most software is “distributed” to users in this form.
Python can be “compiled” but does not need to be compiled to be used.
Procedural Programming
Large programs are created by breaking the “problem or task” into a set of procedures or functions. These “solve the problem” step by step. Similar to following directions, or recipes.
The C programming language is the procedural language most in use today. Though, most non-procedural languages can be used to write “procedural” programs.
Object Oriented Programming
Object Oriented Programming (OOP) breaks large programs into a set of “Objects” that describe entities (often real-world entities).
Each object includes: The data representing the object and any actions that the object can perform or that can be done to the object.
C++, C#, Java, Python, Visual Basic and many more are examples of OOP languages.
These languages can also be used to create procedural programs if desired.
Abstraction
A technique for hiding the underlying complexities of computers/operations from the programmer while still providing a robust and idealized interface.
API
Application Programming Interface
An implementation of the concept of Abstraction.
Provides a set of functions, data and tools for easily implementing complex tasks by utilizing other (complex) software applications.
Sometimes referred to as Libraries.
Software Development
A process that includes all steps in program creation from conceptualization of the problem to be solved through the final deliverable software solution.
It may include research, user design, development, prototyping, refinement, re-use, re-engineering, maintenance and delivery.
Software Development Phases
- Requirements Gathering and Analysis
- High Level Software Design
- Implementation
- Testing
- Deploying and Maintenance
What questions are answered in the
Requirements Gathering and Analysis
stage of Software Development
What is the purpose of the software?
Who will use the software and why?
What are the specific requirements by the customer(s)?
Who would be engaged to provide insight during the
Requirements Gathering and Analysis
stage of Software Development
Domain Experts:
People who are knowledgeable about the specific field the software will be used in.
Technical Writers:
People who can create clear documentation that accurately explains the software requirements. The terminology and explanations must be precise and easy for both the domain experts and the software developers to understand.
What questions are answered in the
High Level Software Design
stage of Software Development
What is the high-level architecture of the software project?
What big pieces can the project be broken into?
What existing systems can be leveraged?
What parts will need code to be written?
How will the code be organized?
Who would be engaged to provide insight during the
High Level Software Design
stage of Software Development
Software Architects: Typically senior level programmers and developers.