SE 367 Software Engineering Basics of Software Engineering



Similar documents
Introduction. Getting started with software engineering. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1

An Introduction to Software Engineering

An Introduction to Software Engineering. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1

Chapter 1- Introduction. Lecture 1

Chapter 1- Introduction. Lecture 1

An Introduction to Software Engineering

Software Engineering. What is SE, Anyway? Based on Software Engineering, 7 th Edition by Ian Sommerville

Chapter 1 Introduction

Software Engineering. Introduc)on

Introduction. Getting started with software engineering. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1

Introduction to Software Engineering. Adopted from Software Engineering, by Ian Sommerville

IF2261 Software Engineering. Introduction. What is software? What is software? What is software? Failure Curve. Software Applications Type

Lecture 2. Anis Koubaa

Topics covered. An Introduction to Software Engineering. FAQs about software engineering Professional and ethical responsibility

Introduction to Software Engineering

CMSC 435: Software Engineering Course overview. Topics covered today

How To Write Software

Introduction. Objectives. Contents

1 Introduction. Objectives. Contents. Introduction 1

1. Introduction. Objectives. Contents. Introduction 1

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Outline. Definitions. Course schedule

Software Engineering. Software Engineering. Software Costs

Aerospace Software Engineering

Software Engineering. Objectives. Designing, building and maintaining large software systems

CHAPTER 01 THE SCOPE OF SOFTWARE ENGINEERING

Introduction to Software Engineering. Week 1

Software Engineering UNIT -1 OVERVIEW

Software Engineering Code of Ethics and Professional Practice

Ingegneria del Software. Gabriele Monfardini - Corso di Ingegneria del Software

Software Engineering Ethics and Professional Conduct SWENET OSE3 Module July 2003

IEEE Computer Society Certified Software Development Associate Beta Exam Application

Don Gotterbarn, Keith Miller, and Simon Rogerson

Systems Engineering. Designing, implementing, deploying and operating systems which include hardware, software and people

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

The Role of the Software Architect

CSC 342 Semester I: H ( G)

HIT Workflow & Redesign Specialist: Curriculum Overview

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 6 Professional Graduate Diploma in IT SOFTWARE ENGINEERING 2

Basic Trends of Modern Software Development

The Proposed Quality Competency Framework for the Future Quality Professional

The National Occupational Standards. Social Work. Topss UK Partnership

Socio technical Systems. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 2 Slide 1

Competence Requirements for Audit Professionals

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Software Engineering. Introduction. Software Costs. Software is Expensive [Boehm] ... Columbus set sail for India. He ended up in the Bahamas...

Components Based Design and Development. Unit 2: Software Engineering Quick Overview

Lecture Notes #27: Software Risk Management

Overview and History of Software Engineering

How To Be A Supply Management Professional

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

Code of Ethics December 2013

STATEMENT OF ETHICAL PRACTICE

Lecture 8 About Quality and Quality Management Systems

Promote knowledge management in your organisation

A Discipline for Software Engineering

ETHICAL CONDUCT AND PROFESSIONAL PRACTICE: PRINCIPLES AND STANDARDS FOR MEMBERS OF THE BRITISH COLUMBIA ASSOCIATION OF SCHOOL PSYCHOLOGISTS

Introduction to Software Engineering Professional Issues SWENET OSE2 Module June 2003

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Section A: General PREAMBLE

Prequalification Education, Assessment of Professional Competence and Experience Requirements of Professional Accountants

Applying CMMI SM In Information Technology Organizations SEPG 2003

IDOL Outcomes and Competencies (ibstpi) 2

Software Engineering Compiled By: Roshani Ghimire Page 1

CORE SKILLS 1. INTRODUCTION INTRODUCTION

aaca NCSA 01 The National Competency Standards in Architecture aaca Architects Accreditation Council of Australia PO Box 236 Civic Square ACT 2608

Web Application Development for the SOA Age Thinking in XML

ACS Code of Professional Conduct Professional Standards Board Australian Computer Society April 2014

Approaches to Ethical Decision Making Association of Professional Engineers and Geoscientists of British Columbia (APEGBC)

Engineering Ethics. Engineering Dimensions Magazine. Dr. Bowers s Notes. These articles are posted on the course website

Increasing Development Knowledge with EPFC

How To Become A Registered Psychiatric Nurse

Information Paper The Roles and Domain of the Professional Accountant in Business

Lecture Slides for Managing and Leading Software Projects. Chapter 1: Introduction

The British Academy of Management. Website and Social Media Policy

Lecture 26 Enterprise Internet Computing 1. Enterprise computing 2. Enterprise Internet computing 3. Natures of enterprise computing 4.

Certified Tobacco Treatment Specialist

naeyc Code of Ethical Conduct Supplement for Early Childhood Adult Educators Adopted Spring 2004 Purpose of the Supplement Adopted Spring 2004

Lecture 3 Software Development Processes

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

LONDON SCHOOL OF COMMERCE. Programme Specifications for the. Cardiff Metropolitan University. MSc in International Hospitality Management

New criteria for assessing a technological design

About Early Education

How to realize software evolution of existing BOSS via ZTE SEEM

Socio-Technical Systems

Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems

ITIL Managing Digital Information Assets

Transcription:

Slide 1 SE 367 Software Engineering Basics of Software Engineering

Slide 2 Introduction Getting started with software engineering Objectives To introduce software engineering and to explain its importance To set out the answers to key questions about software engineering

Slide 3 Engineering Engineering is The application of scientific principles and methods To the construction of useful structures & machines Examples Mechanical engineering Civil engineering Chemical engineering Electrical engineering Nuclear engineering Aeronautical engineering

Slide 4 Software Engineering The term is 39 years old: NATO Conferences Garmisch, Germany, October 7-11, 1968 Rome, Italy, October 27-31, 1969 The reality is finally beginning to arrive Computer science as the scientific basis

Slide 5 Software Engineering in a Nutshell Development of software systems whose size/complexity warrants team(s) of engineers multi-person construction of multi-version software [Parnas 1987] Scope study of software process, development principles, techniques, and notations Goal production of quality software, delivered on time, within budget, satisfying customers requirements and users needs

Slide 6 Why software engineering The economies of ALL developed nations are dependent on software More and more systems are software controlled Software engineering is concerned with theories, methods and tools for professional software development Software engineering expenditure represents a significant fraction of GNP in all developed countries Software failures are ever more visible and costly

Slide 7 Ever-Present Difficulties Few guiding scientific principles Few universally applicable methods As much managerial / psychological / sociological as technological

Slide 8 Why These Difficulties? SE is a unique brand of engineering Software is malleable Software construction is human-intensive Software is intangible Software problems are unprecedentedly complex Software directly depends upon the hardware It is at the top of the system engineering food chain Software solutions require unusual rigor Software has discontinuous operational nature

Software Engineering Software Slide 9 Programming Software programming Single developer Toy applications Short lifespan Single or few stakeholders Architect = Developer = Manager = Tester = Customer = User One-of-a-kind systems Built from scratch Minimal maintenance

Software Engineering Software Slide 10 Programming Software engineering Teams of developers with multiple roles Complex systems Indefinite lifespan Numerous stakeholders Architect Developer Manager Tester Customer User System families Reuse to amortize costs Maintenance accounts for over 60% of overall development costs

Slide 11 Software costs Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware costs 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 costeffective software development

Economic and Management Slide 12 Aspects of SE Software production = development + maintenance (evolution) Maintenance costs > 60% of all development costs 20% corrective 30% adaptive 50% perfective Quicker development is not always preferable higher up-front costs may defray downstream costs poorly designed/implemented software is a critical cost factor

Relative Costs of Fixing Slide 13 Software Faults 200 30 1 2 3 4 Requirements Specification Planning Design Implementation Integration Maintenance 10

Slide 14 FAQs about software engineering 1. What is software? 2. What is software engineering? 3. What is the difference between software engineering and computer science? 4. What is the difference between software engineering and system engineering? 5. What is a software process? 6. What are the costs of software engineering? 7. What are software engineering methods? 8. What are the attributes of good software? 9. What are the key challenges facing software engineering?

Slide 15 What is software? Computer programs and associated documentation Often referred to as artifacts 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 Custom - developed for a single customer according to the customer s specification

Slide 16 What is software engineering? Software engineering is an engineering discipline which 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 A key software engineering axiom Better Cheaper pick any two Faster

What is the difference between software engineering and computer science? Slide 17 Computer science is concerned with theory and 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

What is the difference between software engineering and system engineering? Slide 18 System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is a component in this process System engineers are involved in overall system specification, architectural design, integration and deployment

Slide 19 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

Slide 20 What are the costs of software engineering? Roughly 60% of costs are development costs, 40% are testing costs Evolution costs often far exceed development costs Custom built vs. mass market software Costs vary depending on The type of system being developed The requirements of system attributes such as performance and system reliability The experience of the development team(s) Distribution of costs depends on the development model that is used

Slide 21 What are software engineering methods? Structured approaches to software development which include system Models Why are models needed? Notations Rules - Constraints applied to system models Design advice - Recommendations on good design practice Process guidance - What activities to follow What are some example methods?

Slide 22 What are the attributes of good software? Software should deliver the required functionality and performance, and should be maintainable, dependable and usable Maintainability Software must evolve to meet changing needs Dependability Software must be trustworthy Efficiency Software should not waste system resources Usability Software must be usable by the users for which it was designed There are many others!

What are the key challenges facing Slide 23 software engineering? Coping with Legacy systems Increasing diversity Demands for reduced delivery times Legacy systems Old, valuable systems must be maintained and updated Heterogeneity Systems are distributed and include a mix of hardware and software Delivery There is increasing pressure for faster delivery of software

Essential software engineering Slide 24 difficulties Complexity no two software parts are alike complexity grows non-linearly with size Conformity software is always required to conform often the last kid on the block Changeability software is viewed as infinitely malleable change originates with new applications, users, machines, standards, laws Invisibility the reality of software is not embedded in space software is not representable as a familiar geometric entity

Slide 25 Application types Stand-alone applications These are application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network. Interactive transaction-based applications Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. These include web applications such as e-commerce applications. Embedded control systems These are software control systems that control and manage hardware devices. Numerically, there are probably more embedded systems than any other type of system.

Slide 26 Application types Batch processing systems These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs. Entertainment systems These are systems that are primarily for personal use and which are intended to entertain the user. Systems for modeling and simulation These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects.

Slide 27 Application types Data collection systems These are systems that collect data from their environment using a set of sensors and send that data to other systems for processing. Systems of systems These are systems that are composed of a number of other software systems.

Software engineering Slide 28 fundamentals Some fundamental principles apply to all types of software system, irrespective of the development techniques used: Systems should be developed using a managed and understood development process. Of course, different processes are used for different types of software. Dependability and performance are important for all types of system. Understanding and managing the software specification and requirements (what the software should do) are important. Where appropriate, you should reuse software that has already been developed rather than write new software.

Software engineering and the Slide 29 web The Web is now a platform for running application and organizations are increasingly developing web-based systems rather than local systems. Web services (discussed in Chapter 19) allow application functionality to be accessed over the web. Cloud computing is an approach to the provision of computer services where applications run remotely on the cloud. Users do not buy software but pay according to use.

Slide 30 Web software engineering Software reuse is the dominant approach for constructing web-based systems. When building these systems, you think about how you can assemble them from pre-existing software components and systems. Web-based systems should be developed and delivered incrementally. It is now generally recognized that it is impractical to specify all the requirements for such systems in advance. User interfaces are constrained by the capabilities of web browsers. Technologies such as AJAX allow rich interfaces to be created within a web browser but are still difficult to use. Web forms with local scripting are more commonly used.

Slide 31 Web-based software engineering Web-based systems are complex distributed systems but the fundamental principles of software engineering discussed previously are as applicable to them as they are to any other types of system. The fundamental ideas of software engineering, discussed in the previous section, apply to webbased software in the same way that they apply to other types of software system.

Software engineering ethics Slide 32 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 but involves following a set of principles that are morally correct.

Slide 33 Issues of professional responsibility Confidentiality Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. Competence Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outside their competence.

Slide 34 Issues of professional responsibility 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 people s computers. Computer misuse ranges from relatively trivial (game playing on an employer s machine, say) to extremely serious (dissemination of viruses).

Slide 35 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.

Slide 36 Rationale for the code of ethics 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.

The ACM/IEEE Code of Ethics Slide 37 Software Engineering Code of Ethics and Professional Practice ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices 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:

Ethical principles Slide 38 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. 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.

Slide 39 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.

Slide 40 Key points Software engineering is an engineering discipline which 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 which 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.

Slide 41 Key points 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.

Slide 42 SE 367 Software Engineering The End swamy