3. Why is software important?
• Software is a key component in the
modern industry, especially in the
innovative, emerging technologies
• In the next few slides we report the
Gartner hype cycle for the emerging
technologies from 2005 to 2010
4. Hype Cycle of emerging technologies
(according to Gartner)
12. Software is an industrial product
The world sw industry increased its volume at 10% rates yearly
during the ‘90, and at 3% in 2001, now is back at 10%
Several technological innovations are based on software
(eg. Cellular telephones, Mp3 devices and iTunes, etc.)
A cellular telephone includes 5+ MLOC (source Nokia)
Windows XP includes 40+ MLOC (Windows 95: 11 MLOC)
The developments costs of a software increases with the square of
its dimension in LOC [Berra-Meo 2001]
13. The software industry
• According to DataMonitor, the size of
the worldwide software industry in 2008
was US$ 303.8 billion, an increase of
6.5% compared to 2007
• Americas account for 42.6% of the
global software market's value
• In 2013, the global software market will
have a value of US$ 457 billion, an
increase of 50% since 2008
14. Software
• Good: product invisible, intangible, easily
duplicated, very expensive to build
• Component of a computer system: can be
widely (re)used (off the shelf) or
commissioned by a specific user
• Abstract machine based on an abstract
architecture
• Service invoked via a well defined interface
and based on a communication infrastructure
15. Software components
• COTS: “component off the shelf”
• Component based software
architectures
• Building software by integration
• Software component markets
– Enterprise Java Beans
– Microsoft .NET
16. Software: the product of a process
• Many kinds of software products, many kinds of
development processes
• Study the process to improve the product
• Examples of processes: waterfall, iterative, agile,
extreme,…
• Software development processes are software too
17. Many kinds of software
• Middleware
• Embedded
• Open source
• Web Services
• Mobile (eg. applet)
• Data mining (eg. Search engine)
• Agents
• Social software (eg. Web 2.0)
• Software Ecosystems
• …
18. Embedded software
• Within only 30 years the amount of software in
cars went from 0 to more than 10,000,000 lines
of code
• More than 2000 individual functions are realized
or controlled by software in premium cars, today
• 50-70% of the development costs of the
software/hardware systems are software costs
• (M.Broy, “Challenges in Automotive Software Engineering”,
ICSE2006, pp33-42,2006)
19. Embedded software
Code Size Evolution of High End TV Software
100000
100000
64000
32000
10000 12000
4096
3000
2048
1000 1024
Kbytes
512
256
100
64
32
16
10
8
4
2
1
1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002 2004 2006 2008 2009
Year of Market Introduction
20. Software as a service
Service: the immaterial equivalent of a good
• Software is a service at heart, albeit an automated
one, but it is sold much like a manufactured good.
Customers have to pay large sums of money up
front, bear much of the risk that a program may not
work as promised, and cannot readily switch vendors.
The Economist, 2003
21. Service oriented architectures
• SOA compose different
services for complementary
domains
• They are often base on stacks
of service layers
• SOA services feature loose
coupling that can be
“orchestrated” according to
some rules of “choreography”
22. Software ecosystems
• A software ecosystem is a set of
businesses functioning as a unit and
interacting with a shared market for
software and services, together with
relationships supported by a common
technological platform
• Eg: Apple Application Store
24. Software architecture
• The discipline of software architecture is centered on
the idea of reducing the design complexity of
software systems through abstraction and separation
of concerns
• The discipline has developed a number of design
styles and patterns that help in designing or
integrating software intensive systems
• However, it is hard to find sw architects who agree on
the right way to architect a software system
• Wrong decisions in crafting the software architecture
are a major cause of project cancellation
25. Software engineering
• Software Engineering is a discipline studying the
methods to produce software, the theories at
their basis, and the tools effective to develop and
measure the qualities of software systems
• Software engineering deals with limited resources
• It is a discipline strongly empirical, that is based
on experience and past projects
( Coloro che non conoscono la storia, sono condannati a ripeterla )
26. Main problems
• Methods to analyze and design a software product
• Architectural and design patterns
• Software development processes and their models
• Software development tools and environments
• Economic issues
• Products and process standards
27. Producing software is difficult
• Complexity derives from
– Very fast technical innovation
– Strong international competition
– Psychological issues
– Organizational issues
– Professionals not trained on sw design and
development
• Typical failures: bad project management, wrong
requirements, mediocre design
• Stakeholders with contrasting interests
• New projects start with high risks, scarcely
analyzed
28. Productivity is low
• Analyzing 13.522 sw development
projects in USA:
– 66% out all projects fail (no useful result)
– 82% out all projects need more time than
initially planned
– 48% out all projects produce products
lacking some function required by the
customers
– 55 G$ wasted in one year Standish Report 2003
30. Caper Jones on sw project failures
• As to project cancellations, we cover a wider range than Standish
Group because they show only IT projects. We include embedded,
systems software, web applications, IT, etc. There are some gaps
because have no data from the game industry. Our data resembles
Standish for IT cancellations, but the embedded and systems worlds
are a bit better than the IT world due to more effective quality controls
• 10 function points = 1.86% cancels
100 function points = 3.21%
1000 function points = 10.14%
10000 function points = 31.27%
100000 function points = 47.57%
• The canceled projects are usually late and over budget when the plug
is pulled. On average a canceled project is about 10% more expensive
than a successful project of the same size and type
32. Stakeholders
Typical stakeholders in a sw process
– Designers
– Management
– Technicians
– Decisors
– Users
– Funding people
– …
Each stakeholder has a specific viewpoint on
the product and its development process
33. Process
• Development processes are created and
adapted to different project situations
• Both products and processes can be
evaluated for their quality
• Software needs several different layers of
development process:
– Industrial lifecycle
– Design lifecycle (reqs, build, test)
– Module lifecycle
– Operational lifecycle (eg.: portal)
35. The software process
• Software process: set of roles,
activities, and artifacts necessary to
create a software product
• Possible roles: designer, developer,
tester, maintenance, ecc.
• Possible artifacts: source code,
executables, specifications, comments,
test suite, etc.
36. Models for the software process
• Waterfall model (planned, linear)
• Spiral model (planned, iterative)
• Agile model (unplanned, user driven)
38. Activities
• Each organization differs in products it builds
and the way it develops them; however, most
development processes include:
– Specification
– Design
– Verification and validation
– Evolution
• The development activities must be modeled
to be managed and supported by automatic
tools
42. Productivity differences
• For the same 104 projects Cusumano got the
following data:
India Japan US Europe Total
No. of Projects 24 27 31 22 104
LOC/programmer month 209 469 270 436 374
Defects/KLOC (12 mon. 0.263 0.020 0.400 0.225 0.150
after delivery)
45. Standards
• Many institutions define international
product or process standards for the
global software industry
• Their goal is usually to improve the
quality of software products and their
development processes
46. Software standards
• Standard IEEE: development methods
• Standard OMG: UML and CORBA
• Standard W3C: Web technologies
• Standard OASIS: Business Process
47. IEEE Standards on Software
• IEEE 828 - Standard for Glossary of Sw Eng Terminology
• IEEE 830 - Practice for Sw Reqs Specifications
• IEEE 1016 - Practice for Sw Design Descriptions
• IEEE 1012 - Sw Verification and Validation
• IEEE 1062 - Sw Acquisition
• IEEE 1063 - Sw User Documentation
• IEEE 1233 - Developing System Reqs Specifications
• IEEE 12207 - Standard for Sw Life Cycle Processes
• IEEE 1471 - Practice for Architectural Descriptions
www.computer.org/standards!
48. Summary
• Software is a business, but it is not like other
businesses
• Software products are both the programs and
their documentation, included process
documentation
• A software process is a set of roles and activities
to develop a software product
• Software engineers should use effective tools and
methods based on principles scientifically and
ethically correct
49. Self test questions
• What categories of “software” you know”?
• What are they differences?
• What are the main problems in the
production of software?
• Where can I find a specific paper on a
specific software architecture topic?
50. References
Textbook:
Taylor & Medvidović & Dashofy,
Software Architecture: Foundations, Theory, and Practice,
Wiley 2009
Additional textbooks:
Quian & Fu, Software Architecture and Design Illuminated,
Bartlett & Jones 2009
Reekie and McAdam A Software Architecture Primer, 2006
51. References
Additional textbook on software engineering:
Pressman, Software Engineering, McGraw Hill, 6th ed., 2005
Additional textbook on UML:
Arlow & Neustadt, UML2 and Unified Process, McGraw Hill,
2007
52. Journals
(via Internet inside UniBo network):
IEEE Transactions on Software Engineering
ACM Trans. on Sw Engineering and Methodology
IEEE Software
IEEE Internet Computing
(online) Journal of Object Technology www.jot.fm
scholar.google.com!
53. Reference web sites
Site of the textbook: www.softwarearchitecturebook.com
IASA (int. assoc. of sw architects): www.iasahome.org
Major web sites:
www.sei.cmu.edu/architecture/!
www.handbookofsoftwarearchitecture.com!
www.bredemeyer.com!
Blogs
blog.softwarearchitecture.com!