Chapter 1 Introduction to software engineering Flashcards
What is software
Computer programs and associated documentation
For whom may software products be developed
a particular costumer
the general market
Types of software
Custom
Generic
Embedded
Real time software
Data processing software
(Some software systems have both real time and data processing aspects)
Embedded software
Built into the hardware
Hard to change
Generic software
Sold on open market
Often called: COTS (commercial off the shelf), Shrink-wrapped
Real time software
Must react immediately
Safety is often a concern
Data processing software
Used to run businesses
Accuracy and security of data are key
What is software engineering
The process of solving costumers’ problems by the systematic development and evolution of large, high-quality software within cost, time and other constraints
Differences among custom, generic and embedded software
Difference between software engineering and computer science
Computer science: concerned with theories/fundamentals, not practicalities.
Software engineering: concerned with all aspects of computer systems, including hardware, software processes
Nature of sofware
Intangible
Reproducible
Labor intensive
Modifiable
High/rising demand
Generic activities in all software processes
Specification
Development
Validation
Evolution
Specification
what the system should do and its development constraints
Development
Production of the software system
Validation
Checking that the software is what the costumer wants
Evolution
Changing the software in response to changing demands
Types of software engineering projects
Most projects are evolutionary or maintenance projects
- Corrective : fix problems
- Adaptive : support, update
- Enhancement : add features
- Reengineering (perfective): internal cleanup
Project stakehloders
Users
Customers
Software developers
Development managers
Difficulties and risks of software engineering
Many complex details
Uncertain requirements
Constant change
Uncertainty about technology
Uncertainty about software engineering skills
Software Qualities
Usability
Reusability
Reliability
Efficiency
Maintainability
CASE
Computer aided software engineering
The use of computer-based support in the software development process
Examples of CASE
JDeveloper
Visual Studio
iUML
What are the costs of software development
Roughly 60% development
40% testing
Internal software qualities
Characterize aspects of the design of the software
Have an effect on the external quality attributes
Example:
The amount of commenting of the code
The complexity of the code
(Reusability)