Software Development Concepts Flashcards

1
Q

Programming Languages

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Low - Level Programming Languages

A

Like Assembly, one step away from the machine code used by the computer (1’s and 0’s). Does not read like “english”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

High-Level Programming Languages

A

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”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Interpreted languages

A

Python is one of these.

The lines of code are translated on-the-fly, meaning…as they are executed.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Compiled languages

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Procedural Programming

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Object Oriented Programming

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Abstraction

A

A technique for hiding the underlying complexities of computers/operations from the programmer while still providing a robust and idealized interface.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

API

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Software Development

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Software Development Phases

A
  1. Requirements Gathering and Analysis
  2. High Level Software Design
  3. Implementation
  4. Testing
  5. Deploying and Maintenance
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What questions are answered in the
Requirements Gathering and Analysis
stage of Software Development

A

What is the purpose of the software?
Who will use the software and why?
What are the specific requirements by the customer(s)?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Who would be engaged to provide insight during the
Requirements Gathering and Analysis
stage of Software Development

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What questions are answered in the
High Level Software Design
stage of Software Development

A

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?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Who would be engaged to provide insight during the
High Level Software Design
stage of Software Development

A

Software Architects: Typically senior level programmers and developers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What questions are answered in the
Implementation
stage of Software Development

A

What programming languages should be used?
What new software modules need to be written?
What existing software modules/libraries can be leveraged?
What data structures will need to be stored and manipulated?
What new functions / methods will be needed?

17
Q

Who would be engaged to provide insight during the
Implementation
stage of Software Development

A

Computer Programmers

Other: Artists, Modelers, Animators, Musicians, Sound Effect Experts, Usability Experts,…

18
Q

What questions are answered in the
Testing
stage of Software Development

A

What errors are in the code?
-Syntax Errors: Errors due to coding typos
-Runtime Errors: Errors that cause the program to crash
-Logic Errors: Errors that cause the program to produce incorrect results / responses
Is the software easy to use (user-friendly)?
Does the software satisfy all the requirements?

19
Q

Who would be engaged to provide insight during the
Testing
stage of Software Development

A

Computer Programmers
Software testers/quality assurance experts
Alpha and Beta customers (customers that agree to help test the un-finished product)

20
Q

What questions are answered in the
Deploying and Maintenance
stage of Software Development

A

How will the software be distributed to the customers?
What computer infrastructure is needed by the system? (Network Servers, Databases, Custom Hardware, …)?
How will the computer infrastructure be maintained?
How will software updates (patches) be managed and delivered?
How will customer feedback be managed?

21
Q

Who would be engaged to provide insight during the
Deploying and Maintenance
stage of Software Development

A

Computer Systems Experts
System Security Experts
Computer Programmers

22
Q

Common Software Development Methodologies

A

Waterfall
Iterative
Incremental
Agile

23
Q

Waterfall Methodology

A

One of the oldest development methodologies.
Linear progression from
Requirements
to Design
to Implementation
to Verification
to Maintenance
Pros: Clean process with little uncertainty as to how it will progress
Cons: Prone to development failure should any phase not be completed perfectly.

24
Q

Iterative Methodology

A

The same as Waterfall with one large change.
It is assumed and planned that the Verification phase
will lead to significant changes in requirements.
The process is assumed to repeat from the Requirements stage to the Verification stage until the product is suitable for deployment.

25
Q

Incremental Methodology

A

This is the process I suggest you use in class.
Instead of gathering All requirements, then designing All of the program….
Gather the most basic critical requirement, then design, implement, and verify it.
Then return to the requirements phase and add the next most basic or critical requirement, then design, implement, and very these additions.
Cycle through making the solution more complex and complete until ready for deployment.

26
Q

Agile Methodology

A

Gather an overview of the entire project and its requirements.
Cycle through a quick, but not complete or perfect, round of development from Requirements through Verification.
Quick being a week or two of development effort.
Then cycle these quick development efforts until the solution is deployable.

27
Q

Software Development and Design Documentation

A

Critical to the success of a programming endeavor
Techniques include:
Pseudo Code
Flow Charts
Entity Relation Diagrams
Universal Modeling Language (UML) Diagrams