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
How is working as a team different than working in a team?
Everyone has value Have personal goals as a team member Use the skills you have Be committed to the team Be a good listener Be open to new ideas and viewpoints Learn to compromise Don't be intimidated Your input is valuable
What are the steps of a basic software project?
Problem Requirements engineering Reqs specification Design Implementation System Testing Working system Maintenance
What is requirements engineering?
A process that yields a description of a desired system(which functions, possible extensions, required documentation, performance requirements)
Includes a feasibility study
Resulting document: requirements specification
What does the design step include?
Earliest design decisions captured in software architecture
Decomposition into parts and interfaces between
Emphasis on what rather than how
Resulting document: specification
What does the implementation step include?
- focusing on individual components
- making goals towards the standards of the software
- language selection
- modules and class concept
What does the Testing step include?
- checking if the software works correctly
- validation
- verification
- testing
What does the maintenance step include?
Correcting Errors found after testing
Adapting the software to changing requirements
What is corrective maintenance?
Correcting errors
What is adaptive maintenance?
Adapting to changes in environment
What is perfective maintenance?
Adapting to changing user requirements
How is effort usually distributed between these steps?
Design 15% Requirements engineering 10% Specification 10% Coding 20% Testing 45%
What happens to the testing requirements if you increase the design requirements?
Testing effort decreases
How much total effort does maintenance consume?
50 to 70%
What is the usual distribution of maintenance activities?
Perfective 50%
Corrective 21%
Adaptive 25%
Preventive 4%
What are the software engineering ethics principles?
Act consistently with the public interest
Managers shall promote an ethical approach
Act in a manner that is in the best interest of the client and employer
Advance the integrity and reputation of the profession
Ensure that products meet the highest professional standards possible
Be fair to and supportive of colleagues
Participate in lifelong learning and promote an ethical approach
Maintain integrity in professional judgment
What are three ways of considering quality?
- the quality of the product
- the quality of the process
- the quality of the product in the context of the business environment
What determines the quality of the product?
User judge external characteristics
Designers and maintainers judge internal characteristics
Thus different stakeholders may have different criteria
Need quality models to relate the user’s external view to developer’s internal view
What is included in correctness?
Traceability
Completeness
Consistency
What makes up reliability?
Consistency
Accuracy
Error Tolerance
What are the qualities of efficiency?
Execution Efficiency
Storage efficiency
What qualities make up integrity?
Access control
Access audit
What qualities make up usability?
Operability
Training
Communicativeness
What qualities make up maintainability?
Simplicity
Conciseness
Self-descriptiveness
Modularity
What qualities make up testability
Simplicity
Instrumentation
Self-descriptiveness
Modularity
What are the qualities of Flexibility?
Simplicity
Expandability
Generality
Modularity
What qualities are included in portability?
Simplicity
Software system independence
Machine independence
What qualities are included in reusability?
Simplicity Generality Modularity Software system independence Machine independence
What qualities are there for interoperability?
Modularity
Communication commonality
Data commonality
What is ROI?
Return on interest
What terms are ROI interpreted in?
Reducing costs
Predicting savings
Improving productivity
Costs
What is a software life cycle?
A set of activities and their relationships to each other to support the development of a software system
What is software development methodology?
A collection of techniques for building models applied across the software life cycle
What are inherent problems with software development?
Requirements are constantly changing
Frequent changes are difficult to manage
There is more than one software system
What are the steps to the software process
Requirements elicitation System specification Design Implementation Integration Testing
What roles are in the process ?
Project manager Business analyst Software architect Software engineer Software tester
Why do projects fail?
Unrealistic goals Inaccurate estimates of needed resources Ambiguity defined system requirements Risk management Poor communication Poor project management Politics
What are the benefits of a software process?
Provides an organizational tool Provides a large-scale shared framework Facilitates necessary communication Forces us to break down the problem Provides management
What is Software Engineering?
The process of solving customers’ problems by systematic activities in the development of software and creation of high-quality software systems within constraints.