Software Engineering & Object-Oriented Analysis & Design β Software Process and Requirements, NEC licence examination syllabus (Nepal Engineering Council).
Software Characteristics
Why software engineering is not manufacturing β and why almost every intuition from physical engineering misleads.
π Where this lives: the reason a project slips is almost never that someone typed slowly. Software has no manufacturing phase, so all the cost is design β which means schedule estimates are estimates of intellectual work, and those are notoriously unreliable. It is also why "just add more developers" fails: you cannot parallelise understanding. Brooks wrote that down in 1975 and the industry has been rediscovering it ever since. Search "The Mythical Man-Month Brooks law"; it is the most-cited and least-applied book in the field.
The defining characteristics
1. SOFTWARE IS DEVELOPED, NOT MANUFACTURED
A car has a design phase and then a manufacturing phase, and
manufacturing dominates the cost. Software has ONLY the
design phase β copying is free.
β CONSEQUENCE: quality cannot be inspected at the end of an
assembly line. It must be built in during design, because
there is no other phase in which to add it.
β CONSEQUENCE: cost estimation means estimating INTELLECTUAL
effort, which is far less predictable than estimating
material and machine time.
2. SOFTWARE DOES NOT WEAR OUT
Hardware follows the BATHTUB CURVE: high initial failures
(manufacturing defects), a long flat period, then rising
failures from wear.
Software has no physical wear, so the ideal curve would
simply fall and stay flat. The ACTUAL curve rises again β
not from wear but from CHANGE:
failure β€β² β± β rises from CHANGE
rate β€ β² actual curve β±
β€ β²___ ______β±
β€ β²β±β²__β± β each change introduces defects
β€ ideal (flat forever)
ββββββββββββββββββββββββββββΊ time
Every fix or enhancement risks introducing new defects, and
the code becomes harder to change as it accretes. That decay
is called SOFTWARE ENTROPY or "bit rot" β a misleading name,
since nothing rots; the code is byte-identical. What changed
is its ENVIRONMENT and its accumulated modifications.
3. SOFTWARE IS COMPLEX
Complexity grows faster than size. A program of n interacting
parts has up to n(nβ1)/2 possible interactions:
10 modules β 45 possible interactions
50 modules β 1,225
100 modules β 4,950
This is why MODULARITY and INFORMATION HIDING matter: they
are the only tools that stop the interaction count from
exploding.
4. SOFTWARE IS INVISIBLE / INTANGIBLE
You cannot look at software and see its structure the way you
can look at a bridge. Progress is therefore hard to measure β
"90% done" is the most dishonest phrase in the industry, and
it is dishonest without anyone intending to lie.
5. MOST SOFTWARE IS CUSTOM-BUILT, NOT ASSEMBLED
Other engineering disciplines assemble standardised
components. Software reuse is real but still limited, which
is what COMPONENT-BASED SOFTWARE ENGINEERING (ACtE0802
topic 14) tries to change.
6. SOFTWARE IS EASY TO CHANGE β AND THAT IS THE PROBLEM
Changing a bridge requires cranes; changing software requires
a text editor. Because change is cheap to ATTEMPT, it is
attempted constantly, and each attempt risks correctness.
Physical constraints impose discipline that software lacks.
Application domains and the legacy problem
SOFTWARE APPLICATION DOMAINS:
SYSTEM software compilers, OS, drivers, utilities
APPLICATION software business and standalone programs
ENGINEERING/SCIENTIFIC simulation, CAD, numerical analysis
EMBEDDED software resides in ROM, controls hardware
PRODUCT-LINE software a family of related products
WEB/MOBILE apps network-delivered, frequently updated
AI software non-algorithmic solutions β expert
systems, pattern recognition, neural
networks
LEGACY SOFTWARE β the software that is old, essential and
frightening to touch.
Β· it embodies business rules that exist nowhere else, often
not in any document
Β· the original authors have left
Β· it may have no tests
β the rational choice is usually to keep and adapt it, not
rewrite it, because a rewrite discards decades of accumulated
bug fixes and undocumented requirements. That is
counter-intuitive and it is why "let us just rewrite it"
projects fail so often.
THE FOUR OPTIONS for legacy code:
1. SCRAP it entirely (only if the business process has
changed)
2. CONTINUE maintaining it as-is
3. REENGINEER it to improve maintainability, keeping the
functionality
4. REPLACE it (highest risk)
SOFTWARE MYTHS worth being able to refute β they appear in
exams as "comment on the following statement":
MANAGEMENT MYTHS
"A book of standards is enough." β having standards and
USING them are different things.
"Adding programmers to a late project speeds it up."
β BROOKS' LAW: it makes it later. New people need
training (taking time from productive staff) and add
communication paths β n people have n(nβ1)/2 channels.
"Outsourcing solves the problem." β a company that cannot
manage software internally cannot manage a vendor.
CUSTOMER MYTHS
"A general statement of objectives is enough to start."
β ambiguous requirements are the leading cause of
project failure.
"Requirements change is easy to accommodate."
β cost of change rises steeply with phase (below).
PRACTITIONER MYTHS
"Once the program works, we are done." β 60β80% of total
lifetime effort is spent AFTER first delivery.
"The only deliverable is working code." β documentation and
tests are what make the code changeable.
"Quality assurance wastes time." β see the cost-of-change
curve.
THE COST OF CHANGE β the single most important quantitative
idea in software engineering.
The relative cost of fixing a defect, by the phase in which it
is FOUND (Boehm's classic figures, still broadly reproduced):
phase found relative cost
ββββββββββββββββββββββββββββββββ
requirements 1Γ
design 3β6Γ
coding 10Γ
unit/integration test 15Γ
system test 30β70Γ
AFTER RELEASE 40β1000Γ
cost β€ β± 100Γ
β€ β±
β€ ____β±
β€ ___β±
β€ ____β±
β€ 1Γ β±
ββββββββββββββββββββββββββββββββββββββββΊ
req design code test system release
WORKED IMPLICATION: a defect that costs βΉ1,000 to fix during
requirements costs βΉ100,000 after release β a 100Γ multiplier.
If a requirements review costing βΉ50,000 catches even ONE such
defect, it has paid for itself twice over.
That arithmetic is the entire justification for reviews,
inspections, and writing requirements down before coding. It is
not process for its own sake; it is a 100:1 return.
WHY THE CURVE IS SO STEEP: a requirements error found at
requirements time means editing a sentence. The same error
found after release means diagnosing it in production, fixing
the code, re-testing everything it touches, re-releasing,
possibly migrating data, and dealing with whatever damage the
wrong behaviour already caused.
Brooks' Law deserves stating carefully because it is so often misquoted. It is not "more people never help" β it is that adding people to a late project makes it later, because onboarding consumes the time of the people who are already productive, and communication overhead grows as n(nβ1)/2. Adding people early, to a well-partitioned problem, works fine.
π Go further: the cost-of-change curve is the argument DevOps was built to attack. If a defect costs 100Γ more after release, the answer is either to prevent it earlier or to flatten the curve β and continuous delivery flattens it: with automated tests, a one-command deploy and instant rollback, a post-release fix costs hours rather than weeks. That is why the modern position is not "test more before release" but "make release cheap enough that the curve stops being steep". Search "Accelerate DORA four key metrics" for the research measuring this.
π‘ Exam angle: list the characteristics β developed not manufactured, does not wear out but deteriorates through change, complex, invisible, mostly custom-built. Draw and explain both failure-rate curves (hardware's bathtub versus software's ideal-and-actual), stressing that software's rise comes from CHANGE, not wear. The cost-of-change curve with the 1Γ to 100Γ multiplier is a guaranteed question, and quoting it justifies reviews numerically. Be ready to refute software myths, especially with Brooks' Law stated precisely.
Syllabus points
Characteristics of software
Create a free account to tick topics off, take notes as you read, watch the video lessons and get a day-by-day study plan built around your exam date.
Related topics in Software Process and Requirements