Download presentation
Presentation is loading. Please wait.
1
“No Silver Bullet” by F. Brooks
Computer hardware progress Six orders of magnitude in performance price gain in 30 years Two fold gains every two years in price and performance Can we expect software advances in this speed?
2
“No Silver Bullet” by F. Brooks
Computer hardware progress Six orders of magnitude in performance price gain in 30 years Two fold gains every two years in price and performance Can we expect software advances in this speed? No. Computer hardware progress is exceptionally (too) fast. No other technologies have achieved similar level of gain in performance and cost. Difficulties of software technology Essential and accidental difficulties
3
But, We Should be Making Progress!
Many many technologies have been emerging every year. The current software development productivity should be much higher than the one in 20 years ago. No worry about memory management Easier database connectivity, concurrent programming, GUI programming, network programming…. More sophisticated IDEs, version management tools, bug tracking tools, automated testing tools…. Why do we still have a lot of project failures? Why can’t we expect faster software progress?
4
No Silver Bullet; We Need a Set of techniques
There is no single technical or management technique, which by itself promises even one order of magnitude improvement in productivity, reliability and simplicity. Software progress can only be achieved by… a disciplined and consistent effort to develop, disseminate and exploit a set of techniques.
5
No Silver Bullet; We Need a Set of techniques
There is no single technology technical or management technique, which by itself promises even one order of magnitude improvement in productivity, reliability and simplicity. Software progress can only be achieved by… a disciplined and consistent effort to develop, disseminate and exploit a set of techniques. c.f. We can’t improve the performance/cost of a jetliner only with the performance improvement of engines. c.f. Builders/carpenters are able to work efficiently only with a set of tools, not just a hammer.
6
Software Paradox Many many technologies have been emerging every year.
The number of available technologies/techniques/tools grows exponentially over time. Software engineers need to learn more and more. Less and less time and energy to focus on a specific technology/technique/tool. Proficiency and expertise on each technology/technique/tool gets less and less. More and more likely software engineers make critical mistakes and produce something poor. Customers have more and more options for their systems. More and more integration burden.
7
Inherent Properties of Software
Complexity Conformity Changeability Invisibility
8
HW 4 Read SP 16 to 19 Read T1, Chapter 1 Explain
why software development is difficult (in other words) why a large number of projects fail. Success: Meeting the budget line Meeting the deadline (delivery date) Implementing all required/agreed functionalities what makes software complex. Use your own words and your own examples. Due: Oct 2 (Tue), Up to 3 pages Upload your write up to your own directory in the CS680 svn repository.
9
Why is Software Development Difficult?
Essential difficulties Difficulties inherent in the nature of software. The essence of software entity is a construct of interlocking concepts: Data sets Relationships among data items Algorithms Invocation of functions Such abstract conceptual constructs do not depend on their representations (implementations). Accidental difficulties Difficulties not inherent in the nature of software. depend on representations (or implementations).
10
Complexity No two parts are alike. Massive number of states.
A scaling up of a software entity results in nonlinear increase in complexity. It’s not merely a repetition of the same elements in larger sizes. It is necessarily an increase in the number of different elements. In most cases, the elements interacts with each other in some nonlinear fashion, and the complexity of the whole increases much more than linearly. Complexity of Software structure and behavior Communication among team members
11
What Makes Software Complex?
Four factors to make software complex: Read SP10
12
Conformity Software is produced by and run within an organization. It is always important to conform organizational policies. introduces additional complexity to software. “Arbitrary complexity” without solid policies, principles and reasons by human institutions and systems. Organizational policies often change. Changes in law, management, etc.
13
Changeability Unlike software, manufactured things are not often changed after they are built. They will be replaced with other things, not changed often. Involves high cost for changes Successful software will often get changed. Users who like the software will want to use it in another similar domains. Successful software survives beyond the longevity of a platform for which it was build. Changes in organizational structures, laws, policies, etc.
14
Invisibility Software is invisible and un-visualizable.
Visualization for software structure and behavior Visualization of big picture Communication overhead among engineers, customers and mangers. The fact it is hard to build a solid model of software systems gives customers the illusion that the systems should be flexible and easy to change.
15
Software Modeling Poor software design and project management
Design patterns A catalog (or recipe) of good design strategies Software modeling A tool to specify software design artifacts
16
What is Modeling? A model is an abstract representation of a system,
is useful when dealing with the systems that are too large, too small, too complicated or too expensive to experience firsthand. enables us to answer questions about the systems.
17
Why Models? Visual, intuitive and abstract
Makes it easier to describe and understand systems. Good communication tool among developers Modeling is a key powerful method in any science and engineering disciplines. Natural science Biology, chemistry, physics, etc. etc. Modeling atoms, solar systems, etc. Social science Psychology, sociology, etc. Modeling human behaviors
18
Examples 2H + O -> H2O
20
Boston Red Sox 3 New York Yankees
23
3 Key Aspects in Software Modeling
Notation Graphical or textual set of rules for representing a model. e.g. alphabet, chemical equation, electrical diagrams, etc. e.g. how to draw classes, data fields, inheritance relationships, etc. Method A repeatable technique that specifies the steps involved in solving a specific problem. e.g. a recipe for cooking a specific dish e.g. sorting algorithm, how to identify objects, how to use interface, how to use inheritance, etc. Methodology A collection of methods for solving a class of problems Specifies how and when each method should be used. e.g. a seafood cookbook with a collection of recipes e.g. structured analysis/design methodologies, object-oriented analysis/design methodologies
24
Unified Modeling Language
UML diagrams Class diagram Sequence diagram Interaction diagram Activity diagram State chart diagram …etc.
25
+ setAge(age: Integer): Integer
Employee - name: String - age: Integer - annualSalary: Real + setAge(age: Integer): Integer
26
Modern Software Engineering
You have to be a good programmer, before learning modern/advanced software engineering. Software engineering is not just programming. Specification gathering, testing, maintenance, etc. Software development is not just programming. Modeling + programming
27
But you may say… I would rather coding than modeling.
That’s fine if the size of your problem domain or product is small. No need to model/design your dog house carefully and precisely. You can think, model/design and build it simultaneously. However, do you trust an architect/builder who wants to build your house without blueprints? says working on architectural specifications is just a waste of time?
28
Small Advise Not enough to know object-oriented programming.
Before 90’s Software development = programming Currently Software development = modeling + programming In the near future, you will need to gain Model management skill Metamodeling skill
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.