Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

Course contents

• Introduction
• Critical systems
• Software processes
• Project management
• Software requirements
• Requirements engineering
processes
• System models
• Critical systems specification
• Architectural design
• Object-oriented design
Assessment
• Prerequisite :Design and Analysis of Algorithms
• Weighing of assessment
Final term examination 50
Oral exam 10
Practical examination 10
Semester work+midterm 30
--------------------------------------------------
Total 100
To path you must get at least 50% i.e. 50 grads
and 30% from final written exam i.e. 15 grads
An Introduction to Software
Engineering
introduce software engineering and
explain its importance

key questions & answers about software


engineering

ethical and professional issues and


explain why they are of concern to
software engineers
Software engineering & crisis

 it was in the late 1960s when many software projects failed.


 Many software became over budget. Output was an unreliable software which is
expensive to maintain.
 Larger software was difficult and quite expensive to maintain.
 Lots of software not able to satisfy the growing requirements of the customer.
 Complexities of software projects increased whenever its hardware capability
increased.
 Demand for new software increased faster compared with the ability to generate
new software
Software engineering

 The economies of ALL developed nations are dependent on


software.
 Virtually all countries now depend on complex computer-based
systems.
 More and more systems are software controlled
 Expenditure on software represents a
significant fraction of GNP in all developed countries.
Software costs

 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.
 Software engineering is concerned with theories, methods and tools
for professional software development.
FAQs about software engineering

 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

 What are the costs of software engineering?


 What are software engineering methods?
 What is CASE (Computer-Aided Software Engineering)
 What are the attributes of good software?
 What are the key challenges facing software
engineering?
What is software?

 Computerprograms and associated


documentation such as requirements,
design models and user manuals.

 Software products may be developed


for a particular customer or may be
developed for a general market.
What is software?

 Software products may be


 Generic –
 developed to be sold to a range of different
customers e.g. PC software such as Excel or Word.
 custom (Bespoke) –
 developed for a single customer according to their
specification.

 New software can be created by developing new


programs, configuring generic software systems or
reusing existing software.
 E.g. ERP systems
What is software engineering?

 Software engineering is an engineering discipline that is


concerned with all aspects of software production.

 Software engineers should adopt a systematic and organised


approach to their work and use appropriate tools and techniques
depending on the problem to be solved, the development
constraints and the resources available.
What is the difference between software engineering and
computer science?

Computer science theories are still insufficient to act as a complete


foundation for software engineering (unlike e.g. physics and electrical
What is the difference between software
engineering and system engineering?

 System engineering is concerned with all aspects of computer-based systems


development including hardware, software and process engineering.

 Software engineering is part of this process concerned with developing the


software infrastructure, control, applications and databases in the system.

 System engineers are involved in system specification, architectural design,


integration and deployment.
What is a software process?

 A set of activities whose goal is the development or evolution of


software.
 Generic activities in all software processes are:
 Specification - what the system should do and its development
constraints
 Development - production of the software system
 Validation - checking that the software is what the customer
wants
 Evolution - changing the software in response to changing
demands.
What is a software process model?

 A simplified representation of a software process, presented from a specific


perspective.
 Examples of process perspectives are
 Workflow perspective - sequence of activities;
 Data-flow perspective - information flow;
 Role/action perspective - who does what.

 Most software process models are based on one of three general models or
paradigms of software development:
 Waterfall
 Iterative development
 Component-based software engineering.
What are the costs of 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.

 Distribution of costs depends on the development model that is used.


Activity cost distribution
What is CASE (Computer-Aided
Software Engineering)

 Softwaresystems that are intended to provide automated


support for software process activities.
 CASE systems are often used for method support.
 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?

Software must be trustworthy Dependability


Software should not make
)reliability, security and safety(
wasteful use of system
resources;
Software must
evolve to meet Maintainability attributes Efficiency

changing needs;

Software must accepted by the users for


Acceptability
which it was designed. This means it must
be understandable, usable and compatible
with other systems.
What are the key challenges facing
software engineering?
 Heterogeneity
 Developing techniques for building software that
can cope with heterogeneous platforms and
execution environments;

 Delivery
 Developing techniques that lead to faster delivery
of software;

 Trust
 Developing techniques that demonstrate that
software can be trusted by its users.
What are software engineering
methods?
 Structured approaches to software development which include system models, notations,
rules, design advice and process guidance.

 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.
Professional and ethical responsibility

 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.


Issues of professional responsibility

Engineers should normally respect the


confidentiality of their employers or clients
Confidentiality irrespective of whether or not a formal
confidentiality agreement has been signed.

Computer Software engineers should not use their technical


misuse 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).
Issues of professional responsibility

Engineers should not misrepresent their level of


competence. They should not knowingly accept work
Competence which is outwith ‫ خارج‬their competence.

Engineers should be aware of local laws governing


Intellectual the use of intellectual property such as patents,
property rights copyright, etc. They should be careful to ensure that the
intellectual property of employers and clients is
protected.
ACM/IEEE Code of Ethics

 The professional societies in the US have cooperated to produce a


code of ethical practice.

 Members of these organisations sign up to the code of practice when


they join.

 The Code contains eight Principles related to the behaviour of and


decisions made by professional software engineers, including
practitioners, educators, managers, supervisors and policy makers, as
well as trainees and students of the profession.
Code of ethics - preamble

 Preamble
 The short version of the code summarizes aspirations at a high level of the
abstraction; the clauses that are included in the full version give examples
and details of how these aspirations change the way we act as software
engineering professionals. Without the aspirations, the details can become
legalistic and tedious; without the details, the aspirations can become high
sounding but empty; together, the aspirations and the details form a
cohesive code.

 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

 PUBLIC
 Software engineers shall act consistently with the public interest.

 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.

 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.

 MANAGEMENT
 Software engineering managers and leaders shall subscribe to and promote an
ethical approach to the management of software development and maintenance.

 PROFESSION
 Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest.
Code of ethics - principles

 COLLEAGUES
 Software engineers shall be fair to and supportive of
their colleagues.
 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

 Disagreement in principle with the policies of senior


management.

 Your employer acts in an unethical way and releases a


safety-critical system without finishing the testing of the
system.

 Participation in the development of military weapons


systems or nuclear systems.

You might also like