Completeness and Consistency (C&C)
Internal -- self C&C
External -- w.r.t. external documents
Test case generation
requirement review or walkthroughs
Inspection and Walkthroughs
At the end of each phase, verification and validation should be performed.
The Waterfall model is never linear as presented in some text books.
It is always an iterative process.
Embedded in 2167A or many standard software development processes.
Silver Bullet is sometime that will solve all the problem
One of the most famous article in software engineering even though it is negative.
It was mainly used to argue AI or knowledge-based approach.
"The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms, and invocations of functions. This essence is abstract in that such a conceptual construct is the same under many different representation. It is nonetheless highly precise and richly detailed."
"I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation."
F. Brooks, "No Silver Bullet-- Essence and Accidents of Software Engineering", IEEE Computer, Vol. 20, No. 4, April 1987, pp. 10-19.
Essence -- inherent
Accidents -- incur during production
Past breakthrough solved accidental problems:
high-level programming languages
unified programming environments
Ada or any high-level languages (how about Java?)
Graphical user interface
Environments and tools
A lot of Startup companies think so
Only time can tell
It is the same thing as "Is mainframe dead ?"
Time tells that it is far from being replaced
Important concepts in software engineering
Waterfall as meta-model
Waterfall shows inherent problems in software development
Techniques to address inherent problems:
divide and conquer
explicit representation of complex relationships
verification and validation
Finding and fixing a software problem after delivery is 100 times more expensive than finding and fixing it during the requirement and design phases.
You can compress a software development schedule upto 25% of nominal but no more.
For every dollar you spend on software development you will spend two dollars on software maintenance.
Software development and maintenance techniques are primarily a function of the number of source instruction in the product.
Variation between people account for the biggest difference in software productivity.
The overall ratio of computer software to hardware costs has gone from 15:85 in 1955 to 85:15 in 1985, and it is still growing.
Only about 15% of software product-development effort is devoted to programming.
Software systems and software products each typically cost three times as much per instruction to fully develop as does an individual software program. Software systems products cost nine times as much.
Walkthroughs catch 60% of the faults.
Many software phenomena following a Pareto distribution: 80% of the contribution comes from 20% of the contributors.
20% of modules contribute 80% of faults
20% of modules contribute 80% of costs
20% of faults consume 80% of the cost to fix them
20% of modules consume 80% of execution time
20% of tools experience 80% of tool usage
80% of code was done by 20% of programmers
80% of faults was made by 20% programmers
20% of engineers contribute 80% of tasks
Internet/Intranet and Java
Component technology -- including ActiveX, CORBA, Java Beans, eSuite DevPack
Frameworks - SanFranciso Project
Internet is becoming extremely popular with many new technologies coming every day.
Most of Fortune 500 companies if not all are doing Internet projects.
This is considered one of the biggest technological breakthrough since IBM PC -- said by Bill Gates.
Stock transactions, Internet commerce
One of your Project :)
We will have Java chips, just-in-time Java compilers, Java beans.
Java Enterprise API, Electronic commerce API, Server API, Media API, Beans API, Security API, Embedded API, Management API.
Platform independence -- still a dream.
It will provide dynamic software components and dynamic software distribution
Introspection -- a builder tool can analyze how a bean works.
Customization -- customers can pick their preferences.
Events -- Simple communication metaphor can be used to connect up beans.
Properties -- layout, color for customization. Enable or disable properties.
Persistence -- ready for database.
The idea of Object Factory, Just like Hardware
Microsoft ActiveX, DNA
Suns Java Beans
Include "software bus", software architecture, "software glue", reusable components, and conversion with other component/framework technology.
All materials are from work experience, software engineering books and ideas & notes from my advisor in University of Minnesota