Chapter One
Chapter One
Engineering
FAQs about software engineering
Professional and ethical responsibility
Computer science is concerned with theory and
fundamentals; software engineering is concerned
with the practicalities of developing and
delivering useful software.
Computer science theories are still insufficient to
act as a complete infrastructure for software
engineering (unlike e.g. physics and electrical
engineering).
System engineering is concerned with all
aspects of computer-based systems
development including hardware, software and
process engineering. Software engineering is
part of this process concerned with developing
the software infrastructure, control, applications
and databases in the system.
System engineers are involved in system
specification, architectural design, integration
and deployment.
Roughly 60% of costs are development costs,
40% are testing costs. For custom software,
evolution costs often exceed development costs.
Costs vary depending on the type of system
being developed and the requirements of system
attributes such as performance and system
reliability.
Distribution of costs depends on the
development model that is used.
It erative development
0 25 50 75 100
0 25 50 75 100
Structured approaches to software development which
include system models, notations, rules, design advice
and process guidance.
Model descriptions
• Descriptions of graphical models which should be produced;
Rules
• Constraints applied to system models;
Recommendations
• Advice on good design practice;
Process guidance
• What activities to follow.
Software systems that are intended to provide automated
support for software process activities.
CASE systems are often used for method support.
Upper-CASE
• Tools to support the early process activities of requirements
and design;
Lower-CASE
• Tools to support later activities such as programming,
debugging and testing.
The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and acceptable.
Maintainability
• Software must evolve to meet changing needs;
Dependability
• Software must be trustworthy;
Efficiency
• Software should not make wasteful use of system resources;
Acceptability
• Software must accepted by the users for which it was designed. This
means it must be understandable, usable and compatible with other
systems.
Heterogeneity, delivery and trust.
Heterogeneity
• Developing techniques for building software that can cope with
heterogeneous platforms and execution environments;
Delivery
• Developing techniques that lead to faster delivery of software;
Trust
• Developing techniques that demonstrate that software can be
trusted by its users.
* براءة اإلختراعPatents •