Lecture # 2
Lecture # 2
An overview of software
engineering
Software engineering fundamentals
(CSC-2073)
Futureof softwareindustry
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 2
Cost?
– Software costs often dominate computer system costs. The costs of software on a
PC are often greater than the 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.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 3
Frequentlyasked questionsaboutsoftware engineering
What are the attributes of good software? What are the fundamental software
engineering activities?
– Good software should deliver the required – Software specification, software development,
functionality and performance to the user and software validation and software evolution.
should be maintainable, dependable and usable.
What is the difference between software
What is the difference between software engineering and system engineering?
engineering and computer science?
– System engineering is concerned with all aspects
– Computer science focuses on theory and of computer-based systems development
fundamentals; software engineering is concerned including hardware, software and process
with the practicalities of developing and engineering. Software engineering is part of this
delivering useful software. more general process.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 4
Frequentlyasked questionsaboutsoftware engineering
What are the key challenges facing What are the costs of software
software engineering? engineering?
– Coping with increasing diversity, demands – Roughly 60% of software costs are development
for reduced delivery times and developing costs, 40% are testing costs. For custom
trustworthy software. software, evolution costs often exceed development
What are the best software engineering costs.
techniques and methods? What differences has the web made to
– While all software projects have to be
software engineering?
professionally managed and developed, different
techniques are appropriate for different types – The web has led to the availability of software
of system. For example, games should always be services and the possibility of developing highly
developed using a series of prototypes whereas distributed service-based systems. Web-based
safety critical control systems require a systems development has led to important
complete and analyzable specification to be advances in programming languages and software
developed. You can’t, therefore, say that one reuse.
method is better than another.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 5
Software products
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 6
Software specification
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 7
Essentialattributesof good software
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 9
Why software engineeringis important?
– More and more, individuals and society rely on advanced software systems. We need to
be able to produce reliable and trustworthy systems economically and quickly.
– It is usually cheaper, in the long run, to use software engineering methods and techniques
for software systems rather than just write the programs as if it was a personal
programming project. For most types of system, most costs are the costs of changing the
software after it has gone into use.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 10
Software process activities
– Software specification, where customers and engineers define the software that is to be
produced and the constraints on its operation.
– Software development, where the software is designed and programmed.
– Software validation, where the software is checked to ensure that it is what the
customer requires.
– Software evolution, where the software is modified to reflect changing customer and
market requirements.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 11
Generalissues thataffect software
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 12
What is legacysoftware?
Legacy software systems were developed decades ago and have been continually modified to
meet changes in business requirements and computing platforms. The proliferation of such
systems is causing headaches for large organizations who find them costly to maintain and
risky to evolve.
– The software must be adapted to meet the needs of new computing environments
or technology.
– The software must be enhanced to implement new business requirements.
– The software must be extended to make it interoperable with other more modern systems
or databases.
– The software must be re-architected to make it viable within an evolving
computing
– environment.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 13
Application types
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 14
Application types
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 15
Software engineering fundamentals?
Some fundamental principles apply to all types of software system, irrespective of the
development techniques used.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 16
Internet software engineering?
– The Web is now a platform for running application and organizations are increasingly
developing web-based systems rather than local systems.
– Web services allow application functionality to be accessed over the web.
– Cloud computing is an approach to the provision of computer services where applications
run remotely on the ‘cloud’. In cloud based services the users do not buy software but pay
according to use.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 17
Web-based software engineering?
– Web-based systems are complex distributed systems, but the fundamental principles
of software engineering discussed previously are as applicable to them as they are to any
other types of system.
– The fundamental ideas of software engineering apply to web-based software in the same
way that they apply to other types of software system.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 18
Websoftware engineering
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 19
The changingnatureof software
WebApps mobile web vs. Mobile app
– WebApps have evolved into sophisticated – The term app has evolved to connote software
computing tools that not only provide that has been specifically designed to reside on a
stand- alone function to the end user, but mobile platform. Mobile app can gain direct
also have been integrated with corporate access to the hardware of the device (e.g.,
databases and business applications. accelerometer or GPS location) and then provide
the local processing and storage capabilities noted
Product Line Software earlier. Where A mobile web application
– The Software Engineering institute defines a (WebApp) allows a mobile device to gain access
software product line as “a set of to web-based content via a browser that has been
software- intensive systems that share a specifically designed to accommodate the
common, managed set of features satisfying strengths and weaknesses of the mobile platform.
the specific needs of a particular market As time passes, the distinction between mobile
segment or mission and that are developed WebApps and mobile apps will blur as mobile
from a common set of core assets in a browsers become more sophisticated and gain
prescribed way.” access to device level hardware and information.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 20
The changingnatureof software
Cloud Computing
It encompasses an infrastructure or “ecosystem”
that enables any user, anywhere, to use a
computing device to share computing resources
on a broad scale. Referring to the figure,
computing devices reside outside the cloud and
have access to a variety of resources within the
cloud. These resources encompass applications,
platforms, and infrastructure. its simplest form,
an external computing device accesses the cloud
via a Web browser or analogous software. The
cloud provides access to data that resides with
databases and other data structures. In addition,
devices can access executable applications that
can be used in lieu of apps that reside on the
computing device.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 21
Software Engineering(A LayeredTechnology)
– Tools provide automated or semi-automated support for the process and methods.
– Method provides technical aspects for building software. It covers many tasks i.e.,
communication, requirement analysis, design modeling, program construction, testing and
support.
– Process deals delivery and to stablish the context where products (model, data, report, and
forms) are produced, milestone are established, quality is ensured, and change is managed.
– Any engineering approach must rest on organizational commitment to quality which fosters
a continuous process improvement culture.
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 22
Thanks
Any question ?
Dr.CMNadeemFaisal www.hci.uniovi.es/en-members.htm 23
Reference