Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduction
Mira Balaban Department of Computer Science Ben-Gurion university
What is software?
Computer programs and associated documentation
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 Bespoke (custom) - developed for a single customer according to their specification
Software Engineering, 2006 Introduction 2
What is Engineering?
Application of a systematic, disciplined, quantifiable approach to
structures, machines, products, systems, processes.
Introduction
to creating, developing, operating and maintaining costeffective, reliably correct, high-quality solutions to software problems [Berry 92] SE requires the identification of a problem, a computer to carry execute a software product, and a user environment (composed of people, tools, methodologies, etc.)
Software Engineering, 2006 Introduction 4
Introduction
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 makes sense to talk about the correctness of a solution
real world problems: (e.g., software to help people control nuclear reactors): acceptability is defined by user satisfaction (validation vs verification). Implies evolution 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
Software Engineering, 2006 Introduction 9
CONFORMITY:
among {hardware, software, people, organizations} it is software which is chosen to bend or adapt because it is more malleable, last to arrive on the scene, usually only one developed on site,...
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) perception is 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.
Software Engineering, 2006 Introduction 10
Major
Buy vs build Requirements refinement and prototyping Incremental development Great designers (Unix, Pascal,Smalltalk vs Cobol,PL/I.Ada,MS-DOS)
Software Engineering, 2006 Introduction 12
Software Engineering
the practicalities of developing delivering useful software
is concerned with
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
Introduction
13
System engineers are involved in system specification, architectural design, integration and deployment
Software Engineering, 2006 Introduction 14
Models help stake-holders communicate: customers with developers, designers and developers, developers and testers etc. If they are formal, they also can help support 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
Software Engineering, 2006 Introduction 15
2. Design
architectural detailed (communication, database)
3. Implementation
coding testing: module integration documentation
4. Maintenance
corrective adaptive enhancement
Software Engineering, 2006 Introduction 16
Upper-CASE
Tools to support the early process activities of requirements and design.
Lower-CASE
Tools to support activities such as programming, debugging and testing.
Software Engineering, 2006 Introduction 20
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.
Software Engineering, 2006 Introduction 21
Delivery
There is an increasing pressure for faster delivery of software.
Trust
Software must be trusted by its nave users.
Software Engineering, 2006 Introduction 22
Competence
Engineers should not misrepresent their level of competence. They should not knowingly accept work which is out with their competence.
Software Engineering, 2006 Introduction 24
Computer misuse
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.
Software Engineering, 2006 Introduction 26
3. PRODUCT
5. MANAGEMENT
Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
Introduction 28
6. PROFESSION
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.
Software Engineering, 2006 Introduction 29
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.
Software Engineering, 2006 Introduction 30
Software engineering is an engineering discipline that is concerned with all aspects of software production. Software products consist of developed programs and associated 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 software specification, development, validation and evolution. Methods are organised ways of producing software. They include suggestions for the process to be followed, the notations to be used, rules governing the system descriptions which are produced and design guidelines.
Software Engineering, 2006 Introduction 31
Introduction
32