Chapter 1 Introduction to Software Engineering Flashcards
What are the constraints to software engineering?
Cost, time and constraints provided my customers and software themselves.
What are Techniques?
Formal procedures for producing results using some well-defined notation
What are Methodilogies?
Collections of techniques applied across software development and unified by a philosophical approach
What are tools?
Instruments or automated systems to accomplish a technique
What is the first law of software engineering?
A software engineer must be willing to learn the problem domain.
What is the definition of a customer?
A person who requires a computer system to achieve some business goals by user interaction or interaction with the environment in a specified manner.
What is a software engineer’s task?
To understand how the system to be needs to interact with the user or environment so that the customer’s requirement is met and design the software to be
What is the programmer’s task?
To implement the software to be designed by the software engineer
What are the qualities of computer scientist?
- Assumes techniques and tools have to be developed.
- proves theorems about algorithms, designs languages, defines knowledge representation schemes
- infinite time
What are the qualities of an engineer?
- develops a solution for a problem formulated by a client
- uses computers & languages, techniques and tools
What are the qualities of a software engineer?
- Works in multiple application domains
- has only few months while changes occur in the problem formulation and also in the available technology
What is UML?
Unified Modelling Language
What are the steps to the Feynman problem-solving algorith?
- write down the problem
- think vary hard
- write down the answer
What is a model?
An abstract representation of a system
What are the steps to problem solving?
- formulate the problem
- analyze the problem
- search for solutions
- decide of the appropriate solution
- specify the solution
What is abstraction?
The ability to ignore details of parts to focus attention on a higher level of a problem
What is modularization?
The process of dividing a whole into well-defined parts, which can be built and examined separately, and which interact in well-defined ways
What is risk-based development?
Development that anticipates surprises late in project
What qualities does a Rationale model have?
Assumes the system changes constantly
Application domain eventually stabilizes after adequate understanding
Solution domains are I’m constant change
What is the Rational of the system?
Additional knowledge and justification of decisions
What is a rational model
Items of knowledge that are logically deduced from previous items
What are the central themes of SE?
- concerned with big programs
- complexity is an issue
- software evolves
- development must be efficient
- software must effectively support users
- involves different disciplines
Why are software engineering techniques needed?
Because large systems cannot be completely understood by one person
What is the goal of software engineering?
To solve clients’ problems and provide to their needs