Upload
edo
View
231
Download
0
Embed Size (px)
Citation preview
8/12/2019 Class 1 Introduction 1 Introduction
1/32
Software Engineering, 2006 Introduction 1
Software Engineer ing
Introduction
Mira Balaban
Department of Computer Science
Ben-Gurion university
Based on slides of Igor Potapov: http://www.csc.liv.ac.uk/~igor/COMP201
Ian Sommerville:http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.html
Alexander Borgida: http://www.cs.rutgers.edu/~borgida/431/
http://www.csc.liv.ac.uk/~igor/COMP201http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.htmlhttp://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.htmlhttp://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.htmlhttp://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.htmlhttp://www.csc.liv.ac.uk/~igor/COMP201http://www.csc.liv.ac.uk/~igor/COMP2018/12/2019 Class 1 Introduction 1 Introduction
2/32
Software Engineering, 2006 Introduction 2
What is software?
Computer programsand associated documentation
Software productsmay be developed for a particularcustomer or may be developed for a general market
Software productsmay be
Generic- developed to be sold to a range of differentcustomers
Bespoke(custom) - developed for a single customeraccording to their specification
8/12/2019 Class 1 Introduction 1 Introduction
3/32
Software Engineering, 2006 Introduction 3
What is Engineering?
Application of a systematic, disciplined,
quantifiable approach to
structures,machines,
products,
systems,
processes.
8/12/2019 Class 1 Introduction 1 Introduction
4/32
Software Engineering, 2006 Introduction 4
What is Software Engineering?
That form of engineering that applies a systematic disciplined quantifiable approach
the principles of computer science, design, engineering, management,mathematics, psychology, sociology, and other disciplines as necessary
and sometimes just plain invention
to creating, developing, operating and maintaining costeffective,
reliably correct, high-quality solutions tosoftware problems[Berry 92]
SE requires the identification of a problem, a computer to carryexecute a software product, and a user environment (composed
of people, tools, methodologies, etc.)
8/12/2019 Class 1 Introduction 1 Introduction
5/32
Software Engineering, 2006 Introduction 5
The task of software engineers?
Software engineersshould
adopt a systematic and organised approach to their work
use appropriate tools and techniquesdepending on the problem to be solved,
the development constraints and
the resources available
8/12/2019 Class 1 Introduction 1 Introduction
6/32
Software Engineering, 2006 Introduction 6
Origin of Software Engineering?
Software engineering deals with the development ofhigh-quality software systems.
Software engineering isabstractno physicallimitations:
leads tounlimited complexity.
Software engineeringcoined in 1968: withindiscussion of software crisis.
8/12/2019 Class 1 Introduction 1 Introduction
7/32
Software Engineering, 2006 Introduction 7
What is the software crisis?
Major projects are meaningfully late.
Software costs more than predicted.
Software is unreliable.
Software is difficult to maintain. Poor performance.
While hardware costs were decreasing, softwarecosts were rising.
requires techniques to control thecomplexity of large software systems.
8/12/2019 Class 1 Introduction 1 Introduction
8/32
Software Engineering, 2006 Introduction 8
Why Software Engineering is Needed?
Software development is hard!
Important to distinguish easy systems(onedeveloper, one user, experimental use only) fromhard systems (multiple developers, multiple users,
products).
Experience with easy systems is misleading:
One person techniques do not scale up.
Analogy with bridge building:
Over a stream= easy, one person job.
Over a big River ? (the techniques do not scale)
8/12/2019 Class 1 Introduction 1 Introduction
9/32
Software Engineering, 2006 Introduction 9
Why is SE hard?
Different kinds of problems: we are used to problems where there are pre-stated specifications
(e.g. ,write a program to find the shortest path...), where it makessense to talk about the correctness of a solution
real world problems: (e.g., software to help people controlnuclear reactors): acceptability is defined by user satisfaction(validation vs verification). Implies evolut ion is intrinsic
wicked problems:
define and solve concurrently
no unique definition or solution always room for improvement in defn and soln
new problem, not previously encountered
many stakeholders, with different goals
8/12/2019 Class 1 Introduction 1 Introduction
10/32
Software Engineering, 2006 Introduction 10
Essential Difficulties of SE: [Brooks]
COMPLEXITY: software is more complex for its size than any other human construct;
no two parts are alike (vs. car, microchips,...);
science advances by simplifying, while software cannot ignore/simplify details of real world
CONFORMITY:
among {hardware, software, people, organizations} it is software which is chosen to bend oradaptbecause it is more malleable, last to arrive on the scene, usually only one developed onsite,...
CHANGEABILITY: once delivered, most engineered products (hardware, cars, buildings) are rarely changed because
the cost to change would be a large fraction of the cost to make. The (unfortunate)perceptionis that software is cheap to change. And pressure to change comes from successful use, and
aging hardware platform. INVISIBILITY: since it has no physical reality, software is not properly visualizable with diagrams, etc. in the
way in which houses, circuits, etc are.
8/12/2019 Class 1 Introduction 1 Introduction
11/32
Software Engineering, 2006 Introduction 11
Why Software Engineering Is Hard?
The main problem is complexity
Many sources, but sizeis key:
UNIXcontains 4 million linesof codeWindows 2000contains 108linesof code
Software engineering is about managingthis complexity.
8/12/2019 Class 1 Introduction 1 Introduction
12/32
Software Engineering, 2006 Introduction 12
What will (not) make a big difference: [Brooks1987]
Minor Ada or Java or C# or Python or ...
Object-Oriented Programming
Artificial Intelligence
Automatic Programming
Graphical programming Program verification
Environments and tools
Workstations
Major Buy vs build
Requirements refinement and prototyping
Incremental development
Great designers (Unix, Pascal,Smalltalk vs Cobol,PL/I.Ada,MS-DOS)
8/12/2019 Class 1 Introduction 1 Introduction
13/32
Software Engineering, 2006 Introduction 13
Software engineeringas a discipline
withincomputer science
Computer Science Software Engineering
is concerned with
Computer science theoriesare currently insufficient to act asa complete underpinning for software engineering, BUT it is
a foundation for practical aspects of software engineering
theory
fundamentals
the practicalities of developing
delivering useful software
8/12/2019 Class 1 Introduction 1 Introduction
14/32
Software Engineering, 2006 Introduction 14
What is the differencebetween software
engineering and system engineering?
Software engineeringis part of System engineering
System engineeringis concerned with all aspects ofcomputer-based systems development including
hardware,
softwareand
process engineering
System engineersare involved in
systemspecification,
architectural design,
integrationand deployment
8/12/2019 Class 1 Introduction 1 Introduction
15/32
Software Engineering, 2006 Introduction 15
SE: Processes, Models, and Tools
Processes:
Systematic ways of organizing teams and tasks so that there is a clear, traceablepath from customer requirements to the final product. (e.g.,:Waterfall,Prototyping, Spiral etc.) Processes help organize and co-ordinate teams, preparedocumentation, reduce bugs, manage risk, increase productivity, etc.
Models:
Well-defined formal or informal languages and techniques for organizing andcommunicating arguments and decisions about software. e.g:specification languages (Z, etc),
design models (UML, etc)
Models help stake-holders communicate: customers with developers, designersand developers, developers and testers etc. If they are formal, they also can helpsupport automation
Tools:
Programs which automate or otherwise support software development tasks: e.g.,
Eclipse, Make, CVS, etc.
Tools increase productivity, quality and can reduce costs
8/12/2019 Class 1 Introduction 1 Introduction
16/32
Software Engineering, 2006 Introduction 16
Software Engineering Activities
1. Problem statement needs analysis
requirements specification: functional, non-functional
2. Design architectural
detailed
(communication, database)3. Implementation
coding
testing:
module
integration
documentation
4. Maintenance corrective
adaptive
enhancement
8/12/2019 Class 1 Introduction 1 Introduction
17/32
Software Engineering, 2006 Introduction 17
What is asoftware process?
A set of activitieswhose goal is thedevelopment or evolution of software.
Generic activities in all software processes are:
Specification- what the system should do and itsdevelopment 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.
8/12/2019 Class 1 Introduction 1 Introduction
18/32
Software Engineering, 2006 Introduction 18
What is a software process model?
An abstraction of a software process, presented from a specificperspective.
Examples of process perspectives:Workflow perspective represents inputs, outputs and dependencies.
Data-flow perspective represents data transformation activities.Role/action perspectiverepresents the roles/activities of thepeople involved in software process.
Generic process models: Waterfall
Iterative development Formal transformation
Integration from reusable components
8/12/2019 Class 1 Introduction 1 Introduction
19/32
8/12/2019 Class 1 Introduction 1 Introduction
20/32
Software Engineering, 2006 Introduction 20
What isCASE?
(Computer-Aided Software Engineering)
Upper-CASE
Tools to support the early processactivities of requirements and design.
Lower-CASETools to support activities such as programming,
debugging and testing.
Software systems which are intended to provideautomated support for software process activities, suchas requirements analysis, system modelling, debuggingand testing.
8/12/2019 Class 1 Introduction 1 Introduction
21/32
Software Engineering, 2006 Introduction 21
What are the attributes of good software?
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.
The software should deliver the required functionalityand performance to the user and should be
maintainable, dependable, efficientand usable
8/12/2019 Class 1 Introduction 1 Introduction
22/32
Software Engineering, 2006 Introduction 22
What are the key challenges
facing software engineering?
Software engineering in the 21stcentury faces threekey challenges:
Heterogeneity
Systems are distributed and include a mix of hardware and software.
Legacy systems (old valuable systems) must be maintained, updatedand integrated into new systems.
Delivery
There is an increasing pressure
for faster delivery of software. Trust
Software must be trusted by its nave users.
8/12/2019 Class 1 Introduction 1 Introduction
23/32
Software Engineering, 2006 Introduction 23
Professional and ethical responsibi l i ty (1)
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 simplyupholding the law.
8/12/2019 Class 1 Introduction 1 Introduction
24/32
Software Engineering, 2006 Introduction 24
I ssues of professional responsibil i ty (2)
Confidentiality
Engineers should normally respect theconfidentiality of their employers or clients
irrespective of whether or not a formalconfidentiality agreement has been signed.
Competence
Engineers should not misrepresent their level of
competence. They should not knowingly acceptwork which is out with their competence.
8/12/2019 Class 1 Introduction 1 Introduction
25/32
Software Engineering, 2006 Introduction 25
I ssues of professional responsibil i ty (3)
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 peoples computers. Computer misuse
ranges from relatively trivial (game playing on anemployers machine, say) to extremely serious
(dissemination of viruses).
8/12/2019 Class 1 Introduction 1 Introduction
26/32
Software Engineering, 2006 Introduction 26
ACM /IEEE Code of Ethics
The professional societies in the US have cooperatedto 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 professionalsoftware engineers, including practitioners, educators,managers, supervisors and policy makers, as well astrainees and students of the profession.
8/12/2019 Class 1 Introduction 1 Introduction
27/32
Software Engineering, 2006 Introduction 27
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 bestinterests of their client and employer consistent with the
public interest.
3. PRODUCT
Software engineers shall ensure that their products andrelated modifications meet the highest professional
standards possible.
8/12/2019 Class 1 Introduction 1 Introduction
28/32
Software Engineering, 2006 Introduction 28
Code of ethics - principles
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 reputationof the profession consistent with the public interest.
8/12/2019 Class 1 Introduction 1 Introduction
29/32
Software Engineering, 2006 Introduction 29
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 thepractice of the profession.
8/12/2019 Class 1 Introduction 1 Introduction
30/32
Software Engineering, 2006 Introduction 30
Ethical di lemmas
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.
8/12/2019 Class 1 Introduction 1 Introduction
31/32
Software Engineering, 2006 Introduction 31
Summary: Key points (1)
Software engineering is an engineering discipline that isconcerned with all aspects of software production.
Software products consist of developed programs andassociated documentation. Essential product attributes are
maintainability, dependability, efficiency and usability. The software process consists of activities that are involved in
developing software products. Basic activities are softwarespecification, development, validation and evolution.
Methods are organised ways of producing software. They
include suggestions for the process to be followed, thenotations to be used, rules governing the system descriptionswhich are produced and design guidelines.
8/12/2019 Class 1 Introduction 1 Introduction
32/32
Software Engineering, 2006 Introduction 32
Summary: Key points (2)
CASE tools are software systems which are designed to
support routine activities in the software process such as
editing design diagrams, checking diagram consistency and
keeping track of program tests which have been run.
Software engineers have responsibilities to the engineering
profession and society. They should not simply be concerned
with technical issues.
Professional societies publish codes of conduct which set out
the standards of behaviour expected of their members.