GENERAL CONCEPTS Flashcards
What is the Software Community Goal?
Develop technologies that allow to build and maintain high-quality computer programs with faster, easier and less expensive reliability .
Why do we use software?
Software is used to acquire, modify, produce, manage, display, and transmit information.
Characterize Software
- Software is a logical, non-physical element,
- Software is developed, not manufactured (no production costs, “defects” are easier to fix and work depends on people and relationship between them),
- Software does not deteriorate from usage,
- No need for special usage care, but maintenance is much more expensive.
What are the main characteristics of functional programming?
- Treats computation as the evaluation of mathematical functions;
- Avoids state and mutable data;
- Emphazises the application of functions;
If software doesn’t deteriorate with time, why do we change it so often?
Because as time passes, we have the need to change it for a better and more sufisticated version of itself.
What are the main problems in software development?
- Imprecision in time and costs estimation,
- Difficulties in measuring progress as the software is being developed (software demands extremely high capital)
- Low production capacity, because the demandings are high and there’s a lack of skilled human resources,
- Software quality is not always the desired one, some bugs may be hard to find during development.
- Software is hard to maintain as its associated costs are sometimes higher than the development costs.
What are the four “P” associate with the development of software? (Pressman)
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.
What are the base elements of Software Engeneering
1: Tools- how to do
2: Methods - provide the technical details of “how to”
3: Processes - what to do and when to do
What are the two main good practices in software development?
- Hierarchical Decomposition Principal: divide problems into smaller sub-problems and so on for a simpler solution,
- 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.
What are the five principals in software design?
- Separation of Concerns - based on the kinds of work it performs,
- Encapsolation - low coupling (low dependency between elements) & strong cohesion (high cooperation between elements),
- Dependency Inversion - dependency direction is towards abstration not implementation details,
- Single Responsability - objects have ** one and only one** responsability,
- Don’t Repeat Yourself - a concept should never be repeated in multiple places as this leads to errors.
What are the key elements of a computer program?
1: A set of algorithms
2: A set of data on which the algorithms operate
What is the programming paradigm?
The fact that the key elements of a computer program remain invariant throughout history and only their relationship has changed.
Which are the six main programming paradigms?
Procedual, Object-Oriented, Functional, Logic, Declarative and Multiparadigm Programming.
What are the elements to identify in procedural programming?
The functions, their relationships, and their characteristics.
What are the main characteristics of procedural programming?
- Focus on the specification and decomposition of the program functions,
- Divide and conquer—problems are divided into small pieces,
- Focus in processing,
- Functions and data have almost no intimate conncetion.