Professional Documents
Culture Documents
COMP 211
LEARNING OBJECTIVES
1. Understand the nature and importance of software.
COMP 211
SOFTWARE IS
Types of software:
generic custom
Our focus
embedded
Alternative classification:
data processing organizes and stores business data real-time controls devices/processes in real time
COMP 211
SOFTWARE IS (contd)
Important
pervasive and essential part of almost all organizations key part of many products (design; embedded systems)
Big business
several hundred billion dollars/year spent worldwide and growing
Software Demand
Personal computing, information, education Commercial Scientific & Technical 1950 1960 1970 1980 1990 2000
Man-months
8000 6000 4000 2000 100 200 300 400 500 1000s of language statements 600
Application domain
problems are complex developers are not domain experts
Coding
creating useful software is a complicated engineering process
COMP 211
Impossible (or unnecessary) to achieve all of them simultaneously (time/cost/conflicting or not important)
The System
coupling
module: any piece of a system which it makes sense to consider separately modules not arbitrary (should have cohesion) cohesion
coupling a measure of the number and types of interconnections (dependencies) a module has with other modules
interface
encapsulates a module so the developer is prevented from using knowledge about how the module is implemented
and the possibility of module-based (component-based) development using a suitable software architecture
This reduces the complexity of cost and time estimates for developing the system!
COMP 211
14
COMP 211
15
1.2
SOFTWARE ENGINEERING IS
Theestablishment and use of sound engineering The establishment and use of sound engineering principles in order to obtain economically software that is principles in order to obtain economically software that is reliable and works efficiently on real machines. reliable and works efficiently on real machines. Frtiz Bauer Frtiz Bauer ...multi-person construction of multi-version software. ... multi-person construction of multi-version software. Dave Parnas Dave Parnas
engineering principles is a disciplined effort economicallyreliableefficiently has built-in quality real machines solves a real problem (implied) multi-person requires team effort multi-version is not a one-shot effort
INTRODUCTION & OVERVIEW 17
COMP 211
SOFTWARE ENGINEERING IS
engineering principles is a disciplined effort that: systematically uses methodologies, techniques and tools, and a store of relevant knowledge, architectures and components uses a modular approach to system building with phases applies appropriate project management techniques economicallyreliableefficiently has built-in quality that: meets cost, time and other constraints has meaningful quality assurance (e.g., standards) does formal testing of modules and the system as a whole real machines solves a real problem (implied), therefore: development is focused on meeting user requirements multi-person requires team effort that: pays attention to team organization, dynamics, and management multi-version is not a one-shot effort, therefore, we: plan for maintenance have excellent documentation
INTRODUCTION & OVERVIEW 18
COMP 211
a modeling activity
problem domain model models the application domain solution model models the system to be built
COMP 211
19
LOT of documentation
COMP 211
20
SUMMARY
Developing large software systems is complex We need to deal with this complexity by
Having appropriate quality design goals Using modular development techniques Training computer scientists to use software engineering techniques
Most of software engineering involves modeling and documenting system requirements and solutions, not coding Modeling and documenting may often seem tedious and boring but they are essential for helping to reduce complexity and thus building better software systems!
COMP 211
21