Software Engineering week-01-1
Software Engineering week-01-1
SWE-211
3+0 (Theory Credit Hour = 3, Lab Credit Hours = 0)
BS-CS-III
SOFTWARE
• Software costs more to maintain than it does to develop. For systems with
a long life, maintenance costs may be several times development costs
• What is software?
• What is software engineering?
• What is the difference between software engineering and computer
science?
• What is the difference between software engineering and system
engineering?
• What is a software process?
• What is a software process model?
FAQs about software engineering
• Roughly 60% of costs are development costs, 40% are testing costs. For
custom software, evolution costs often exceed development costs
• Costs vary depending on the type of system being developed and the
requirements of system attributes such as performance and system
reliability
• Model descriptions
• Descriptions of graphical models which should be produced
• Rules
• Constraints applied to system models
• Recommendations
• Advice on good design practice
• Process guidance
• What activities to follow
What is CASE (Computer-Aided Software Engineering)
• Upper-Case
• Tools to support the early process activities of
requirements and design
• Lower-Case
• Tools to support later activities such as
programming, debugging and testing
What are the attributes of good software?
• The software should deliver the required functionality and performance
to the user and should be maintainable, dependable and usable
• Maintainability
• Software must evolve to meet changing needs
• Dependability
• Software must be trustworthy
• Efficiency
• Software should not make wasteful use of system resources
• Usability
• Software must be usable by the users for which it was designed
What are the key challenges facing software engineering?
• Legacy systems
• Old, valuable systems must be maintained and updated
• Heterogeneity
• Systems are distributed and include a mix of hardware and software
• Delivery
• There is increasing pressure for faster delivery of software
Software engineering diversity
• There are many different types of software system that their is no universal set
of software techniques that is applicable to all of these.
• The software engineering methods and tools used depend on the type of
application being developed, the requirements of the customer and the
background of the development team.
Application types
• Stand-alone applications
• These are application systems that run on a local computer, such as a PC.
They include all necessary functionality and do not need to be connected to
a network.
• Entertainment systems
• These are systems that are primarily for personal use and which are intended to
entertain the user.
• Systems of systems
• These are systems that are composed of a number of other software
systems. Like Energy - smart grid, smart houses, and integrated
production/consumption,
Software engineering fundamentals
• Some fundamental principles apply to all types of software system,
irrespective of the development techniques used:
• Rich interfaces
• Interface development technologies such as AJAX and HTML5 have
emerged that support the creation of rich interfaces within a web
browser.
Software Engineering Ethics
• Ethical behavior is more than simply upholding the law but involves
following a set of principles that are morally correct.
Professional and ethical 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. They should not
knowingly accept work which is outwith their 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, etc. They should be careful to ensure that
the intellectual property of employers and clients is protected.
• Computer misuse
• Software engineers should not use their technical skills to misuse other people’s
computers. Computer misuse ranges from relatively trivial (game playing on an
employer’s machine, say) to extremely serious (dissemination of viruses).
Rationale for the code of ethics
Computers have a central and growing role in commerce, industry, government,
medicine, education, entertainment and society at large. Software engineers are
those who contribute by direct participation or by teaching, to the analysis,
specification, design, development, certification, maintenance and testing of
software systems.
• Software engineers shall commit themselves to making the analysis, specification, design,
development, testing and maintenance of software a beneficial and respected profession. In
accordance with their commitment to the health, safety and welfare of the public, software
engineers shall adhere to the following Eight Principles:
Code of ethics - principles
• 1. PUBLIC
Software engineers shall act consistently with the public interest.
• 2. CLIENT AND EMPLOYER
Software engineers shall act in a manner that is in the best interests of their client
and employer consistent with the public interest.
• 3. PRODUCT
Software engineers shall ensure that their products and related modifications meet
the highest professional standards possible.
Code of ethics - principles
• JUDGMENT
Software engineers shall maintain integrity and independence in their
professional judgment.
• 5. MANAGEMENT
Software engineering managers and leaders shall subscribe to and promote an
ethical approach to the management of software development and maintenance.
• 6. PROFESSION
Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest.
Code of ethics - principles
• 7. COLLEAGUES
• Software engineers shall be fair to and supportive of their colleagues.
• 8. SELF
• Software engineers shall participate in lifelong learning regarding the practice
of their profession and shall promote an ethical approach to the practice of the
profession.
Ethical dilemmas ( situation in which a difficult choice has to be made between two
or more alternatives, especially ones that are equally undesirable )
What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service- based
systems. Web-based systems development has led to
important advances in programming languages and software
reuse.
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 graphics programs, project management tools; CAD
software; software for specific markets such as appointments systems for dentists.
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.
Product specification
• Generic products
• The specification of what the software should do is owned by the software
developer and decisions on software change are made by the developer.
• Customized products
• The specification of what the software should do is owned by the customer
for the software and they make decisions on software changes that are
required.
Essential attributes of good software
Maintainability Software should be written in such a way so that it can evolve to meet the
changing needs of customers. This is a critical attribute because software
change is an inevitable requirement of a changing business environment.
Acceptability Software must be acceptable to the type of users for which it is designed.
This means that it must be understandable, usable and compatible with
other systems that they use.
Case studies Solution