And Answers 2025
engineering - Answer - The application of scientific principles and methods to the construction of useful
structures & machines
software engineering - Answer - 40 years old: NATO Conferences, Garmisch, Germany, October 7-11,
1968, Rome, Italy, October 27-31, 1969
Nowadays, everything depends on it
(Computer science as the scientific basis)
Development of software systems whose size/complexity warrants team(s) of engineers
Scope - study of software process, development principles, techniques, and notations
Goal - production of quality software, delivered on time, within budget, satisfying customers'
requirements and users' needs
Software engineering is an engineering discipline which is concerned with all aspects of software
production
Software engineers should adopt a systematic and organised approach to their work and use appropriate
tools and techniques depending on:
the problem to be solved,
the development constraints, and
the resources available
A key software engineering "axiom"
Better
Cheaper <-- pick any two
Faster
,difficulties - Answer - Few guiding scientific principles
Few universally applicable methods
As much managerial / psychological / sociological
as technological
why are there difficulties? - Answer - a unique brand of engineering:
Software is malleable
Software construction is human-intensive
Software is intangible
Software problems are unprecedentedly complex
Software directly depends on the hardware
It is at the top of the system engineering "food chain"
Software solutions require unusual rigor
Software has discontinuous operational nature
software programming vs engineering - Answer - programming:
Single developer
"Toy" applications
Short lifespan
Single or few stakeholders
Architect=Developer=Manager=Tester=Customer=User
One-of-a-kind systems
Built from scratch
Minimal maintenance
engineering:
Teams of developers with multiple roles
Complex systems
Indefinite lifespan
,Numerous stakeholders
Architect ≠ Developer ≠ Manager ≠ Tester ≠ Customer ≠ User
System families
Reuse to amortize costs
Maintenance accounts for over 60% of overall development costs
software costs - Answer - Often dominate computer system costs (software on a PC > hardware cost)
Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs
may be several times development costs.
Software engineering is concerned with cost-effective software development
60% development costs, 40% are testing costs
Evolution/maintenance costs > development costs
Costs vary depending on:
-The type of system being developed (custom built vs. mass market software)
-The requirements of system attributes such as performance and system reliability
-The experience of the development team(s)
Distribution of costs depends on the development model that is used
economic and management aspects - Answer - Software production = development + maintenance
Maintenance costs > 60% of all development costs: 20% corrective, 30% adaptive, 50% perfective
Quicker development is not always preferable: higher up-front costs may defray downstream costs,
poorly designed/implemented software is a critical cost factor
Mythical Man Month by Fred Brooks - Answer - Published in 1975, republished in 1995
Experience managing development of OS/360 in 1964-65
Central argument:
, Large projects suffer management problems different in kind than small ones due to division of labor,
critical need is the preservation of the conceptual integrity of the product itself
Central conclusions:
Conceptual integrity achieved through chief architect, implementation achieved through well-managed
effort
Brooks's Law: Adding personnel to a late project makes it later
software project failure - Answer - Increasing system complexity:
As new software engineering techniques help us to build larger, more complex systems, the demands
change. Systems have to be built and delivered more quickly; larger, more complex systems are required;
systems have to have new capabilities that were previously thought to be impossible.
Failure to use software engineering methods:
It is fairly easy to write computer programs without using software engineering methods and techniques.
Many companies have drifted into software development as their products and services have evolved.
They do not use software engineering methods in their everyday work. Consequently, their software is
often more expensive and less reliable than it should be.
software - Answer - Computer programs and associated documentation
Often referred to as "artifacts"
Software products may be:
Generic - developed to be sold to a range of different customers; The specification of what the software
should do is owned by the software developer and decisions on software change are made by the
developer.
Custom - developed for a single customer according to the customer's specification; The specification of
what the software should do is owned by the customer for the software and they make decisions on
software changes that are required.
software engineering vs computer science - Answer - Computer science - concerned with theory and
fundamentals
Software engineering - concerned with the practicalities of developing and delivering useful software