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

DMIoT, School of Computing

Software Engineering Academic Program

Fundamentals of Software Engineering


By
Yayehudar T.
Chapter One

Introduction and Overview


to Software Engineering
Introduction
• The use of computers is growing very rapidly.
• Probably you can say no discipline that does not use
computer systems now.
• With this increased use of computer, the need for software is
increasing.
• The complexity of these systems is also increasing.
• Software Engineering is the discipline to deal with this crisis
(complexity).
What is Software?
❖Software is defined as:
• The collection of computer programs, procedures, rules, and
associated documentation and data such as requirements,
design models and user manuals. Or
• Software is a set of programs, which is designed to
perform a well-defined function.
• A collection of programs whose objective is to enhance the
capabilities of the hardware.
• The collection of computer programs, procedure rules and
associated documentation and data.(IEEE)
Cont’d…
• Software products may be developed for a particular
customer or may be developed for a general market.
• Software products may be:
• Generic - developed to be sold to a range of different customers
e.g. PC software such as Excel or Word.
• Bespoke (custom) - developed for a single customer according to
their specification.
➢A program to solve a problem and a programming systems
product (software) to solve the same problem are two
entirely different things.
• Much more effort and resources are required for software.
Program Vs. Software
Program Software
• Usually small in size • large
• Author himself is sole user • Large number of users
• Single developer • Team of developers
• Lacks proper user interface • Well-designed interface
• Lacks proper documentation • Well documented &user-manual
prepared
• Ad hoc development.
• Systematic development

Brooks rule of thumb: software costs approximately ten times as


much as a corresponding program.
Software Characteristics
➢Software doesn’t wear out: Software is not susceptible to the
environmental maladies (dust, vibration, abuse, temperature) that cause
hardware to wear out.
➢Most software is custom built: Software components designed and
implemented so that it can be reused in many different programs.
• This will enable the software engineer to create application from
reusable parts.
➢ Software is intangible: Software is invisible till it is ready and runs
➢Maintenance is without spare part
➢Software is complex
Types of Software
▪ System Software: they are written to serve other programs.
• Characterized by heavy interaction with computer hardware,
concurrent operation that requires scheduling, resource sharing,
sophisticated process management.
• For example, compiler, operating systems.
▪ Embedded software: Controls hardware
▪ Real-time Software- Programs that monitor/analyze/control real world
events as they occur.
▪ Business Software- Programs that access, analyze and process
business information.
▪ Personal Computer Software : Word processing, spreadsheets,
computer graphics, multimedia, entertainment,
Cont’d…
▪ Engineering/Scientific Software : Computer-aided design, system
simulation, and other interactive applications have begun to take on
real-time and even system software characteristics.
▪ Artificial Intelligence software : Use non numerical algorithms to solve
complex problems that are not amenable to computation.
• Includes robotics, expert systems, artificial neural networks, game
playing.
▪ Internet Software: Programs that support internet accesses and
applications.
• For example, search engine, browser, e-commerce software,
authoring tools.
Software Crisis
▪ During software development, many problems are raised and that set of
problems is known as the software crisis.
▪ What are the symptoms of the software crisis?
• Fail to meet user requirements
• over budget
• Difficult to alter, debug, and enhance
• frequently crash
• Often delivered late
• use resources non-optimally.
Cont’d…
Factors contributing to Software Crisis
✓Poor communication between the customer and software developer.
✓Poor project management
✓Lack of adequate training in software engineering and project
management
✓Increasing skill shortage and manpower turnover
✓Low productivity improvements.
What is Software Engineering ?
• The term software engineering is the product of two
words, software and engineering.
➢Software is a collection of integrated programs.
➢Engineering is the application of scientific and practical
knowledge to invent, design, build, maintain, and improve
systems, processes, etc.
❑According to IEEE's definition software engineering can be
defined as:
• the application of a systematic, disciplined, quantifiable approach
to the development, operation, and maintenance of software, and
the study of these approaches; that is, the application of
engineering to software.
Cont’d…
• Software Engineering is an engineering branch related to
the evolution of software product using well-defined
scientific principles, techniques, and procedures.
• Software engineering is an engineering discipline whose
focus is the cost-effective development of high-quality
software systems.
➢The result of software engineering is an effective and
reliable software product.
Cont’d…
❑Software engineering is an engineering discipline that
provides knowledge, tools, and methods for:
• Defining software requirements
• Performing software design
• Software construction
• Software testing
• Software maintenance tasks
• Software project management
Cont’d…
Software Engineering Vs Computer Science
✓computer science is concerned with theory
fundamentals
✓software engineering is concerned with the
practicalities of developing and delivering useful
software
• Computer science theories are currently insufficient to act as
a complete underpinning for software engineering, but it is a
foundation for practical aspects of software engineering.
• CS is as essential for SW engineers as physics is for
electrical or mechanical engineers.
Cont’d…
Software Engineering Vs System Engineering
➢Software engineering is part of System engineering.
➢System engineering is concerned with all aspects of
computer-based systems development including:
• Hardware,
• Software and
• Process engineering
• System engineers are involved in system specification,
architectural design, integration and deployment
Software Quality
• Software quality product is defined in term of its fitness of purpose.
• That is, a quality product does precisely what the users want it to
do.
• For software products, the fitness of use is generally explained in terms
of satisfaction of the requirements laid down in the SRS document.
• Although "fitness of purpose" is a satisfactory interpretation of quality
for many devices such as a car, a table fan, etc. for software products,
"fitness of purpose" is not a wholly satisfactory definition of quality.
Example:
• Consider a functionally correct software product.
• That is, it performs all tasks as specified in the SRS document.
• But, has an almost unusable user interface.
➢Even though it may be functionally right, we cannot consider it to
be a quality product.
Cont’d…
What is Good Software?
• Software has number of attributes which decide whether it is a good or bad .
• The software is required by the customer, used by the end users of an
organization and developed by software engineer .
• Each one will evaluate the different attributes differently in order to decide
whether the software is good.
• The three dimensions of quality of a software product:
➢Product operation: will be operation characteristics
• Correctness, Reliability, Efficiency, Integrity, usability
➢Product transition: adaptableness to new condition
• Portability, Reusability, Interoperability
➢Product revision: capability to undergo changes
• Maintainability, Flexibility, Testability
Cont’d…
Software Sub Factors Definitions
Quality
Factors
Suitability The capability of software product to provides sets of
appropriate functions for specific user’s requirements.
Accuracy The capability of a software to deliver accurate results
Functionality

Security The capability of software to control unauthorized


access
Maturity The capability of the software product to avoid failure
due to errors in the software
Fault tolerance The capability of the software to maintain a certain
level of performance during either faults in the
Reliability
software or infringement of its interface.
Recoverability The capability of the software product to reestablish to
a certain level of performance and recover data
affected during failure
Cont’d…
Software Sub Factors Definitions
Quality
Factors
Learnability The capability of the software product to enable the user
to learn its application
Training Indicates the effort required to teach how to use the
software to the users of software
Usability Communicati It associated to how well the software communicates to
veness the users.
Usability The capability of software product to adhere to guides,
compliance regulations and standards related to usability
Execution indicates the time a software takes to perform tasks
efficiency
Compliance
Storage The capacity of the software to use appropriate type and
efficiency amount of resources when performing its functions
Cont’d…
Software Sub Factors Definitions
Quality
Factors
Communication The software that provide the use of
Commonality standard protocols.
Interoperability
Data Commonality The software that provide the use of
standard data representation.
Ease of Use, User Error It indicates the capacity of the software
Protection, Technical to be easily operated by end users
Operability Accessibility, Technical
Learnability
Consistent Text Layout, The user interface of the software
Aesthetic Page Layout, Font Size, product should be attractive, enjoyable
Font Color and pleasant enough for users to create
an emotional appeal to use it.
Software Engineering and the
Engineering Profession
Profession
• A duty requiring specialized knowledge and often long and intensive
academic preparation
• Any working field or business
• A paid occupation, especially one that involves prolonged training and
a formal qualification.
Engineer
• The term “engineer” was first used in the sense of a military engineer
building of engines of war and other military construction.
• In the eighteenth century that the term “civil engineer” began to be
used to distinguish engineers who were concerned with civil rather
than military construction
Cont’d…
History of Software Engineering
• Software is everywhere – buying bread, driving car, washing clothes
➢Software separated from the hardware in 1950’s – emerged as a distinct
technology – became independent product
• Original programmers recruited from the ranks of hardware engineers
and mathematicians.
Cont’d…
Software Organization Structure
• A software house is a company whose primary products are software.
• Large and well-known companies producing Commercial off-the
shelf (COTS) such as Microsoft, Oracle Corporation, HP, Adobe
Systems, Apple Inc. etc.
• Companies producing Software as a Service SaaS, such as Google,
Facebook, LinkedIn
• Companies producing software components, such as Developer
Express, Dundas, Component One and Sohn Software
• Companies focused on delivering bespoke (custom-built) software
solutions for vertical industries or particular geographical regions
Cont’d…
Common roles in a software house:
❑Professional software house normally consists of at least
three dedicated sub-teams:
• Business analysts who define the business needs of the
market.
• Software developers who create the technical
specification and write the software.
• Software testers who are responsible for the whole
process of quality management.
Cont’d…
❑In bigger software houses, greater specialization is employed, and
quite often there are also:
• Technical writers who write all the documentation such as user
guides.
• Release specialists who are responsible for building the whole
product and software versioning.
• Graphic designers who are normally responsible for the design of
the graphical user interface.
• Maintenance Engineers who are behind two, three or more lines
of support.
• Consultants responsible for making the intelligence software,
integrating with existing solutions, and implementing business
scenarios in Business Process Management software.
Ethics in Software Engineering
• Software engineering is carried out within a legal and social
framework that limits the freedom of engineers.
• Software engineers must accept that their job involves wider
responsibilities than simply the application of technical skills.
➢They must also behave in an ethical and morally responsible way
if they are to be respected as professionals.
• You should not use your skills and abilities to behave in a
dishonest way or in a way that will bring disrepute to the software
engineering profession.
Cont’d…
• However, there are areas where standards of acceptable behaviour are
not bounded by laws but by the more tenuous notion of professional
responsibility.
• Some of these are:
1. Confidentiality
• You should normally respect the confidentiality of your employers or
clients irrespective of whether a formal confidentiality agreement has
been signed.
2. Competence
• You should not misrepresent your level of competence.
• You should not knowingly accept work that is outside your
competence.
Cont’d…
3. Intellectual property rights
• You should be aware of local laws governing the use of intellectual
property such as patents and copyright.
• You should be careful to ensure that the intellectual property of
employers and clients is protected.
4. Computer misuse
• You should not use your 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).
Cont’d…
❑Professional societies and institutions have an important role to play in
setting ethical standards.
• Organizations such as the ACM, the IEEE and the British Computer
Society publish a code of professional conduct or code of ethics.
• Members of these organizations undertake to follow that code when
they sign up for membership.
• These codes of conduct are generally concerned with fundamental
ethical behaviour.
Cont’d…
• The ACM and the IEEE have cooperated to produce a joint code of
ethics and professional practice.
• 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.
• Because of their roles in developing software systems, software
engineers have significant opportunities to do good or cause harm, to
enable others to do good or cause harm, or to influence others to do
good or cause harm.
• To ensure, as much as possible, that their efforts will be used for good,
software engineers must commit themselves to making software
engineering a beneficial and respected profession.
Cont’d…
❑In accordance with that commitment, software engineers shall adhere
to the following Code of Ethics and Professional Practice.
• 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.
• The principles identify the ethically responsible relationships in which
individuals, groups, and organizations participate and the primary
obligations within these relationships.
Cont’d…
• The Clauses of each Principle are illustrations of some of the
obligations included in these relationships.
• These obligations are founded in the software engineer’s humanity, in
special care owed to people affected by the work of software engineers,
and the unique elements of the practice of software engineering.
• The Code prescribes these as obligations of anyone claiming to be or
aspiring to be a software engineer.
Software Engineering Code of Ethics and
Professional Practice
ACM/IEEE-CS Joint Task Force on Software Engineering
Ethics and Professional Practices
• 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:
Cont’d…
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.
4. 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.
Cont’d…
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.
Thank You!
?

You might also like