Uploaded by yayehu08

Introduction to Software Engineering

advertisement
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).
3
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)
4
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.
5
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.
6
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
7
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
business information.
access, analyze and process
▪ Personal Computer Software : Word processing, spreadsheets,
computer graphics, multimedia, entertainment,
8
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.
9
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.
10
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.
11
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.
12
Cont’d…
❑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.
13
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.
14
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
15
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.
16
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
17
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.
18
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
19
Cont’d…
Software
Quality
Factors
Functionality
Reliability
Sub Factors
Definitions
Suitability
The capability of software product to provide sets of
appropriate functions for specific user’s requirements.
Accuracy
The capability of a software to deliver accurate results
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
software or infringement of its interface.
Recoverability The capability of the software product to reestablish to
a certain level of performance and recover data
20
affected during failure
Cont’d…
Software
Quality
Factors
Usability
Compliance
Sub Factors
Definitions
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
Communicati
veness
It is associated to how well the software communicates
to the users.
Usability
compliance
The capability of software product to adhere to guides,
regulations and standards related to usability
Execution
efficiency
indicates the time a software takes to perform tasks
Storage
efficiency
The capacity of the software to use appropriate type and
amount of resources when performing its functions
21
Cont’d…
Software
Sub Factors
Quality Factors
Communication
Commonality
Interoperability Data Commonality
Operability
Aesthetic
Definitions
The software that provide the use
of standard protocols.
The software that provide the use
of standard data representation.
Ease of Use, User
It indicates the capacity of the
Error Protection,
software to be easily operated by
Technical Accessibility, end users
Technical Learnability
Consistent Text Layout, The user interface of the software
Page Layout, Font Size, product should be attractive,
Font Color
enjoyable and pleasant enough for
users to create an emotional appeal
22
to use it.
Cont’d…
❖The modern view of a quality associated with a software product
has several quality methods such as the following:
• Portability: A software device is said to be portable, if it can be freely
made to work in various operating system environments, in multiple
machines, with other software products, etc.
• Usability: A software product has better usability if various categories
of users can easily invoke the functions of the product.
• Reusability: A software product has excellent reusability if different
modules of the product can quickly be reused to develop new products.
• Correctness: A software product is correct if various requirements as
specified in the SRS document have been correctly implemented.
• Maintainability: A software product is maintainable if bugs can be
easily corrected as and when they show up, new tasks can be easily
added to the product, and the functionalities of the product can be
23
easily modified, etc.
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
24
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.
25
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
26
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.
27
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.
28
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.
29
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.
30
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).
31
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.
32
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
33
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.
34
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.
35
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:
36
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. 37
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.
38
Thank You!
?
39
Download