Uploaded by MyFam Chanco

COM311 lecture 1

advertisement
Software Engineering
COM311
Introduction
What is Software?
• The product built and supported by software professionals
• Consists of programs that execute on a computer system
• Takes two roles
• Software is a product
• Facilitates the delivery of a product
Software Domains
• System software
• Application software
• Embedded software
• Web applications
What is software engineering
• Software engineering may be defined as the systematic design and
development of software products and the management of the
software process.
• Software engineering has as one of its primary objectives the
production of programs that meet specifications, and are
demonstrably accurate, produced on time, and within budget
(mills1980)
• The process of solving customers’ problems by the systematic
development and evolution of large, high-quality software systems
within cost, time, meets user requirements and other constraints
Analysis of the Definition
►Systematic development and evolution
• An engineering process involves applying well understood techniques in a organized and disciplined
way
• Many well-accepted practices have been formally standardized
►e.g. by the IEEE or ISO
►Large, high quality software systems
• Software engineering techniques are needed because large systems cannot be completely
understood by one person
• Teamwork and co-ordination are required
• Key challenge: Dividing up the work and ensuring that the parts of the system work properly
together
• The end-product that is produced must be of sufficient quality
►Cost, time and other constraints
•
•
•
•
Finite resources
The benefit must outweigh the cost
Others are competing to do the job cheaper and faster
Inaccurate estimates of cost and time have caused many project failures
Software engineering
• The economies of ALL developed nations are dependent on
software.
• More and more systems are software controlled
• Software engineering is concerned with theories, methods
and tools for professional software development.
• Expenditure on software represents a significant fraction of
GNP in all developed countries.
Software engineering
• There are no universal notations, methods, or techniques for
software engineering because different types of software require
different approaches.
• All of these applications need software engineering; they do not all
need the same software engineering methods and techniques.
Software project failure
• Increasing system complexity
• As new software engineering techniques help us to build larger, more
complex systems, the demands change. Systems have to be built and
delivered more quickly; larger, even more complex systems are required;
systems have to have new capabilities that were previously thought to be
impossible.
• Failure to use software engineering methods
• It is fairly easy to write computer programs without using software
engineering methods and techniques. Many companies have drifted into
software development as their products and services have evolved. They do
not use software engineering methods in their everyday work.
Consequently, their software is often more expensive and less reliable than
it should be.
Professional software development
• software is not just the programs themselves but also all associated
documentation, libraries, support websites, and configuration data that are
needed to make these programs useful
• A system may consist of several separate programs and configuration files
that are used to set up these programs
• Software engineering is intended to support professional software
development rather than individual programming.
• It includes techniques that support program specification, design, and evolution,
none of which are normally relevant for personal software development.
Software products
• Generic products
• Stand-alone systems that are marketed and sold to any customer who
wishes to buy them.
• Examples – PC software such as ms office, whatsapp.
• Customized products
• Software that is commissioned by a specific customer to meet their own
needs.
• Examples – embedded control systems, air traffic control software, traffic
monitoring systems.
Software engineering
• Software engineering is an engineering discipline that is concerned
with all aspects of software production from the early stages of
system specification through to maintaining the system after it has
gone into use.
• Engineering discipline
• Using appropriate theories and methods to solve problems bearing in mind
organizational and financial constraints.
• All aspects of software production
• Not just technical process of development.
• Also includes project management and the development of tools, methods etc. to
support software production
Importance of software engineering
• We need to be able to produce reliable and trustworthy systems
economically and quickly.
• Software engineering is important because it enables us to build complex systems
in a timely manner and with high quality.
• It imposes discipline to work that can become quite chaotic, but it also allows the
people who build computer software to adapt their approach in a manner that
best suits their needs.
• 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.
• The majority of costs are the costs of changing the software after it has gone into
use.
Software process activities
• The systematic approach that is used in software engineering is
sometimes called a software process.
• A software process is a sequence of activities that leads to the production of
a software product.
• Four fundamental activities are common to all software processes.
•
•
•
•
Software specification
Software development
Software validation
Software evolution
General issues that affect software
• Heterogeneity
• Increasingly, systems are required to operate as distributed systems across
networks that include different types of computer and mobile devices.
• Business and social change
• Business and society are changing incredibly quickly as emerging economies
develop and new technologies become available. They need to be able to
change their existing software and to rapidly develop new software.
General issues that affect software
• Security and trust
• As software is intertwined with all aspects of our lives, it is essential that we
can trust that software.
• Scale
• Software has to be developed across a very wide range of scales, from very
small embedded systems in portable or wearable devices through to
Internet-scale, cloud-based systems that serve a global community.
Computer Science & System Engineering
• Computer Science
• Theories and methods that underlie computers and software systems
• Systems Engineering
• All aspects of the development and evolution of complex systems where
software plays a major role
•
•
•
•
Hardware development
Policy and process design
System deployment
Software engineering
Software engineering ethics
Software engineering ethics
• Software engineering involves wider responsibilities than simply the
application of technical skills.
• Software engineers must behave in an honest and ethically
responsible way if they are to be respected as professionals.
• Ethical behaviour is more than simply upholding the law but
involves following a set of principles that are morally correct.
Issues of professional responsibility
• Confidentiality
• Engineers should normally respect the confidentiality of their employers or
clients irrespective of whether or not a formal confidentiality agreement
has been signed.
• Competence
• Engineers should not misrepresent their level of competence
Issues of professional responsibility
• Intellectual property rights
• Engineers should be aware of local laws governing the use of intellectual property such as
patents, copyright.
• Computer misuse
• Software engineers should not use their technical skills to misuse other people’s
computers.
References
Pressman, R. S. & Maxim B. R. (2015) Software Engineering: A practitioner’s approach, 8th edition. New York,
NY: McGraw-Hill
Mills, H. D. (1980) The management of software engineering, Part I: Principles of software engineering. IBM
Systems Journal, 19 (4), 414-420.
Sommerville, I. (2016) Software Engineering, 10th edition. Harlow: Pearson
Download