GENERAL CONCEPTS Flashcards

1
Q

What is the Software Community Goal?

A

Develop technologies that allow to build and maintain high-quality computer programs with faster, easier and less expensive reliability .

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

Why do we use software?

A

Software is used to acquire, modify, produce, manage, display, and transmit information.

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

Characterize Software

A
  1. Software is a logical, non-physical element,
  2. Software is developed, not manufactured (no production costs, “defects” are easier to fix and work depends on people and relationship between them),
  3. Software does not deteriorate from usage,
  4. No need for special usage care, but maintenance is much more expensive.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the main characteristics of functional programming?

A
  1. Treats computation as the evaluation of mathematical functions;
  2. Avoids state and mutable data;
  3. Emphazises the application of functions;
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

If software doesn’t deteriorate with time, why do we change it so often?

A

Because as time passes, we have the need to change it for a better and more sufisticated version of itself.

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

What are the main problems in software development?

A
  1. Imprecision in time and costs estimation,
  2. Difficulties in measuring progress as the software is being developed (software demands extremely high capital)
  3. Low production capacity, because the demandings are high and there’s a lack of skilled human resources,
  4. Software quality is not always the desired one, some bugs may be hard to find during development.
  5. Software is hard to maintain as its associated costs are sometimes higher than the development costs.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are the four “P” associate with the development of software? (Pressman)

A

People: motivations and commitment to the project,
Process: technical aspects and rules must be clear for a good project,
Product: product quality depends on if the software developer understood the need of the user,
Project: credible and controlled projects meet the requirements for a perfect project.

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

What are the base elements of Software Engeneering

A

1: Tools- how to do
2: Methods - provide the technical details of “how to”
3: Processes - what to do and when to do

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

What are the two main good practices in software development?

A
  1. Hierarchical Decomposition Principal: divide problems into smaller sub-problems and so on for a simpler solution,
  2. Abstraction Principle: at first we should focus on the main and most important problems as they are in theory harder to solve, leaving smaller problems for the revision part of the project.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are the five principals in software design?

A
  1. Separation of Concerns - based on the kinds of work it performs,
  2. Encapsolation - low coupling (low dependency between elements) & strong cohesion (high cooperation between elements),
  3. Dependency Inversion - dependency direction is towards abstration not implementation details,
  4. Single Responsability - objects have ** one and only one** responsability,
  5. Don’t Repeat Yourself - a concept should never be repeated in multiple places as this leads to errors.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the key elements of a computer program?

A

1: A set of algorithms
2: A set of data on which the algorithms operate

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

What is the programming paradigm?

A

The fact that the key elements of a computer program remain invariant throughout history and only their relationship has changed.

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

Which are the six main programming paradigms?

A

Procedual, Object-Oriented, Functional, Logic, Declarative and Multiparadigm Programming.

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

What are the elements to identify in procedural programming?

A

The functions, their relationships, and their characteristics.

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

What are the main characteristics of procedural programming?

A
  1. Focus on the specification and decomposition of the program functions,
  2. Divide and conquer—problems are divided into small pieces,
  3. Focus in processing,
  4. Functions and data have almost no intimate conncetion.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are the elements to identify in object-oriented programming?

A

Objects (attributes and methods), the relationship between them, and their characteristics.

17
Q

What are the main characteristics of object-oriented programming?

A
  1. Problems are seen as abstract (using real-world concepts rather than just computer concepts);
  2. The focus is the identification and modeling of objects contained in the problem domain;
  3. Focus is more on the data;
  4. Objects perform tasks by sending messages;
  5. Data and functions are closely related;
18
Q

Characterize the function programming paradigm.

A

Emphazises the application of functions, avoids state and mutable data, functions may or may not have parameters and a single return value and it’s more used in academic contexts.