Software Engineering. Lecture 1: Introduction

Similar documents
Learning Approach. Evaluation. Text Book. - Written Test : 20% - Assignment/Project : 30%

A General Approach to Ethical Problems

Ethics. Trinity University Computer Science TRIBUS UNUM

Software Engineering Code of Ethics

System and Software Engineering. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1

Course Organization. Lecture 1/Part 1

Straumann Code of Conduct

The IEEE/ACM Code of Ethics History

Chapter 9 Professional Ethics

Computer Professionals Responsibilities

TIE Ohjelmistotuotannon menetelmät TIE Software Engineering Methodology

Show off what your subsystem can do

MYOB Group Limited Code of Conduct. December 2016

CODE OF ETHICS AND PROFESSIONAL CONDUCT

code of conduct + ethics

Social Media Guidelines

The Human Side of Business Research: Organizational and

Supplier Code of Business Conduct and Ethics

Our Business Partner CODE OF CONDUCT

Deutsche Bank. Code of Business Conduct and Ethics for Deutsche Bank Group

FOUNDATION BUILDING MATERIALS, INC. EMPLOYEE CODE OF CONDUCT

Chapter 01 Page 1 of 5

PRYSMIAN GROUP ETHICAL CODE

Code of Ethics and Conduct Policy

HUBER+SUHNER Business and Ethics Code

KPMG N.V. Code of Conduct. kpmg.nl

Supplier Code of Ethics

PHILLIPS 66 BUSINESS PARTNER PRINCIPLES OF CONDUCT. Doing the right thing always. Phillips66.com

Metso Code of Conduct

CODE OF CONDUCT Mission: Vision:

Why a Separate Category of Professional Ethics?

LIBERTY HOLDINGS LIMITED CODE OF ETHICS

Verisk Analytics, Inc. Code of Business Conduct and Ethics As Amended June 5, 2018

Code of Conduct. V November 2017

CODE OF BUSINESS CONDUCT AND ETHICS

CODE OF CONDUCT FOR DOING BUSINESS WITH LINKEDIN

2018 Spring AICP Exam Review. AICP Code of Ethics and Professional Conduct Gary A. Cornell, FAICP

Deutsche Bank. Code of Business Conduct and Ethics for Deutsche Bank Group. November 2017

CODE OF CONDUCT. Document Management

SW 701 Foundation Field Practicum. Learning Contract Supplement: A Guide to Completing the Learning Contract

General Policies & Procedures. SV 5.0 Clean Harbors Vendor Code of Business Conduct and Ethics

Computershare Group Code of

ve Fun Through Work AES Values Guide From Words to Action OUR CODE OF CONDUCT EXCELLENCE INTEGRITY SAFETY AGILITY FUN

In a few cases explanatory notes have been added to draw attention to substantial changes, or to help understand the rationale behind the change.

SUNRISE TELECOM CODE OF BUSINESS CONDUCT AND ETHICS Overview Sunrise Telecom is committed to its customers, partners, employees and stockholders.

Code of Business Conduct

Code of Business Conduct and Ethics

What is ITIL 4. Contents

IFAC Education Committee Meeting Agenda 8-C Stockholm, August 2004

ASSOCIATED BANC-CORP CODE OF BUSINESS CONDUCT AND ETHICS

The way we do business

"Finnair" and "Finnair Group" as used herein refer to Finnair Plc and its subsidiaries.

Barbara Strozzilaan 201, 1083HN Amsterdam

Software Engineering. Quiz with Explainations. Hans-Petter Halvorsen, M.Sc.

AES Values Guide. From Words to Action STRIVE FOR EXCELLENCE THROUGH WORK HONOR COMMITMENTS ACT WITH INTEGRITY PUT SAFETY FIRST HAVE FUN

Table of Contents I. Introduction... 3 II. URAC Values and Business Ethics... 3 Values... 3 Business Ethics... 3 III. Compliance with Laws and

CODE OF ETHICS THE ROYAL NETHERLANDS SOCIETY OF ENGINEERS

CODE OF CONDUCT Business ethics and compliance

Supplier Ethical Expectations

CODE OF ETHICAL CONDUCT

RELM WIRELESS CORPORATION (the Company ) CODE OF BUSINESS CONDUCT AND ETHICS

Contents. Code of Conduct

Software engineering has evolved

Code of Ethics. Honesty. Respect. Loyalty Fairness. Environment

Code of Ethical Conduct for the Sanlam Group

Safety Perception / Cultural Surveys

Frameworks for Ethical and Policy Analysis. CSCE 390: Professional Issues in Computer Science and Engineering Professor Matt Thatcher

HCCA Professional Code of Ethics

CODE OF ETHICS FOR CHIEF EXECUTIVE OFFICER AND SENIOR FINANCIAL OFFICERS UGI CORPORATION

Software Engineering Roles. Kristian Sandahl

CODE OF CONDUCT LIVING BY OUR VALUES. The way how we achieve results is equally important to the results

Anti-bribery corporate policy

OUR CODE OF BUSINESS CONDUCT AND ETHICS

Code of Conduct & Ethics. Doing business as a global market leader

FIRST NATIONAL BANK ZAMBIA LIMITED CODE OF ETHICS

Corporate Code of Business Conduct and Ethics

Code of Business Conduct. March 2009

Business Conduct Requirements for Representatives and Channel Partners

CARNIVAL CORPORATION & PLC

Chapter 3 Agile Software Development

Code of Business Conduct

IIS Competency Domain Model

THE TIMBERLAND COMPANY CODE OF ETHICS

COURSE OUTLINE. SCHOOL: School of Engineering Technology and Applied Science. PROGRAM (if applicable): Computer Systems and Network Technology

Level 5 Diploma in Human Resources Management (630) 135 Credits

BEYOND THE HANDSHAKE: PRACTICAL STRATEGIES FOR BUILDING SUCCESSFUL ASSOCIATE RELATIONSHIPS

AMETEK, Inc. Code of Ethics and Business Conduct

CHEST Trainer Ethics Guide

CODE OF CONDUCT. Securing What Matters

Professionalism & Tech CS 340 FALL 2015

Oilfield Service Co.

Corporate Governance: Sarbanes-Oxley Code of Ethics

VOYA Financial CODE OF BUSINESS CONDUCT AND ETHICS

This document articulates ethical and behavioral guidance for all NGA Human Resources companies, employees, and business partners (such as suppliers,

Agile Software Development. Lecture 4: Let s Wrap up Agile Fundamentals

Our Integrity Pledge 2013

Computer Programs and Systems, Inc. Code of Business Conduct and Ethics

RSM US CODE OF CONDUCT GROUNDED IN OUR VALUES - RESPECT, INTEGRITY, TEAMWORK, EXCELLENCE AND STEWARDSHIP

QUESTIONS NUMBER ONE (Total marks 20) NUMBER TWO (Total marks 20) NUMBER THREE

* SAKURA Rules * (Code of Conduct for the Terumo Group)

Transcription:

Software Engineering Lecture 1: Introduction Mahmoud El-Gayyar elgayyar@ci.suez.edu.eg Slides are a modified version of the slides by Prof. Kenneth M. Anderson and Prof. Ian Sommerville

Survey software engineering concepts, terminology and techniques Emphasis on Agile Design Methods Will supplement with traditional/historical material as needed Software modeling And some practical programming concepts (Design Patterns) http://elgayyar.weebly.com/ Course Objectives Mahmoud El-Gayyar / Software Engineering 2

Course Books Mahmoud El-Gayyar / Software Engineering 3

In the LAB Dr. Amira JAVA Design Patterns Mahmoud El-Gayyar / Software Engineering 4

50% Midterm Exam 25% 15-min Oral Presentations (Every week one group) 25% your participation in the LAB Practical and Oral Exams Java Project Divide yourself into groups 8 to 10 per group Must next week!!!!!!!!!! Course Evaluation Mahmoud El-Gayyar / Software Engineering 5

Rules!! Mahmoud El-Gayyar / Software Engineering 6

Presentation Topics 1. Software Process Models (at least 3 other than Agile) 2. Kanban 3. Lean Software Development 4. Crystal Agile Family 5. Feature Driven Development 6. Agile development in the large and the Pragmatic Programmer 7. Software Architectures 8. Cloud Computing 9. Web Services 10. Software Teams Structures 11. Git and Subversion: Distributed Configuration Management Mahmoud El-Gayyar / Software Engineering 7

Outline (Ch 1. Sommerville) Professional software development What is meant by software engineering? Software process activities? Software Cost? Software Engineering Methods Key challenges Application types CASE tools Software engineering ethics A brief introduction to ethical issues that affect software engineering. ACM/IEEE Code of Ethics Mahmoud El-Gayyar / Software Engineering 8

Why Software Engineering? Problem Specification Coding Final Program (SW) But... Where did the specification come from? How do you know the specification corresponds to the user s needs? How do you know the program actually meets the specification? How do you know your program will always work correctly? What do you do if the users needs change? How do you divide tasks up if you have more than a one-person team? Mahmoud El-Gayyar / Software Engineering 9

What is a software? Software: Computer programs and associated documentation. Software products may be developed for a particular customer a general market. Mahmoud El-Gayyar / Software Engineering 10

What is Software Engineering? Software engineering is concerned with theories, methods and tools for professional software development. -Sommerville State of the art of developing quality software on time and within budget -Anonymous Features Time Software Development Resources Mahmoud El-Gayyar / Software Engineering 11

What is Software Engineering? Multi-person construction of multi-version software. -Parnas Team-work Scale issue ( program well is not enough) + Communication Issue Successful software systems must evolve Change is the norm, not the exception Mahmoud El-Gayyar / Software Engineering 12

What is Software Engineering? Everything else, besides programming, that contributes to building efficient software systems. -Anonymous Programming is not enough Every one of you should be able to implement Facebook. The reason why there is only one Facebook is everything else they did right besides programming. Plus luck Mahmoud El-Gayyar / Software Engineering 13

Software Engineering vs. Computer Science Computer science focuses on theory and fundamentals; Software engineering is concerned with the practicalities of developing and delivering useful software. Mahmoud El-Gayyar / Software Engineering 14

Software Engineering vs. System Engineering System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process Mahmoud El-Gayyar / Software Engineering 15

Software Products Generic products Stand-alone systems that are marketed and sold to any customer who wishes to buy them. Examples PC software such as graphics programs, project management tools; etc. Customized products Software that is commissioned by a specific customer to meet their own needs. Examples embedded control systems, automation system for a certain company. Mahmoud El-Gayyar / Software Engineering 16

Generic products The specification of what the software should do is owned by the software developer and decisions on software change are made by the developer. Customized products Product Specification The specification of what the software should do is owned by the customer for the software and they make decisions on software changes that are required. Mahmoud El-Gayyar / Software Engineering 17

Software Process Activities Software Process: A set of activities whose goal is the development or evolution of software. Specification Customer and engineer define the product and its constrains Evolution Change to meet changes in customer or market needs Development Design Programming Validation Check to ensure customer requirements Mahmoud El-Gayyar / Software Engineering 18

What is a Good Software? Acceptability Efficiency Dependability & Security Maintainability Software Quality Triangle Mahmoud El-Gayyar / Software Engineering 19

Software Costs Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost. Software costs more to maintain than it does to develop. Roughly 60% of software costs are development costs, 40% are testing costs. For systems with a long life, maintenance costs may be several times development costs. Software engineering is concerned with cost-effective software development. Mahmoud El-Gayyar / Software Engineering 20

Software Related Jobs Software Developer Software Engineer SQA Engineer (Quality Assurance) Usability Engineer (UX) Strong HCI background System Analyst Professional requirements gathering Professional designer DBA / System Admin Web Designer Build / Configuration Manager Mahmoud El-Gayyar / Software Engineering 21

Outline Professional software development What is meant by software engineering? Software process activities? Software Cost? Software Engineering Methods Key challenges Application types CASE tools Software engineering ethics A brief introduction to ethical issues that affect software engineering. ACM/IEEE Code of Ethics Mahmoud El-Gayyar / Software Engineering 22

SWE: Key Challenges Coping with increasing diversity; Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices. demands for reduced delivery times; Business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software. developing trustworthy software. As software is intertwined with all aspects of our lives, it is essential that we can trust that software. (internet-based payment) Mahmoud El-Gayyar / Software Engineering 23

SWE Methods is not Constant! There are many different types of software system no universal set of software techniques that is applicable to all of these. The software engineering methods and tools used depend on the type of application being developed, the requirements of the customer and the background of the development team. Mahmoud El-Gayyar / Software Engineering 24

Stand-alone applications Application Types These are application systems that run on a local computer, such as a PC (no need for network connectivity) e.g.: Office, photo manipulation. 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. (security, large data) Embedded control systems (most popular) These are software control systems that control and manage hardware devices. (Mobile phones, cars, microwave,..) Mahmoud El-Gayyar / Software Engineering 25

Batch processing systems Application Types These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs. (e.g. phone billing system) Entertainment systems These are systems that are primarily for personal use and which are intended to entertain the user. (e.g. Games Interaction comes first) Systems for modelling and simulation These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects. (high performance parallel systems) Mahmoud El-Gayyar / Software Engineering 26

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. (Hostile external environment) Systems of systems Application Types These are systems that are composed of a number of other software systems. Mahmoud El-Gayyar / Software Engineering 27

Software Engineering 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. (Fast development) Mahmoud El-Gayyar / Software Engineering 28

CASE (Computer-Aided Software Engineering) Software systems that are intended to provide automated support for software process activities. Upper-CASE Tools to support the early process activities of requirements and design; Lower-CASE Tools to support later activities such as programming, debugging and testing (e.g. IDE like eclipse). Mahmoud El-Gayyar / Software Engineering 29

Key Points Software engineering is an engineering discipline concerned with all aspects of software production. Essential software attributes are maintainability, dependability (reliability, security), efficiency, and acceptability. The high-level activities of specification, development, validation and evolution are part of all software processes. There are many different types of system and each requires appropriate software engineering tools and techniques for their development. Mahmoud El-Gayyar / Software Engineering 30

Review Questions 1. Why different application types require specialized software engineering techniques to support their design and development? 2. What are SWE challenges we have discussed? identify other problems and challenges that software engineering is likely to face in the 21st century? 3. What are the four important attributes that all professional software should have? 4. Explain the four dimensions of dependability? 5. It is accepted for what type of software engineering that it is impractical to specify all requirements for such a system in advance? Mahmoud El-Gayyar / Software Engineering 31

Outline Professional software development What is meant by software engineering? Software process activities? Software Cost? Software Engineering Methods Key challenges Application types CASE tools Software engineering ethics A brief introduction to ethical issues that affect software engineering. ACM/IEEE Code of Ethics Mahmoud El-Gayyar / Software Engineering 32

Professional and Ethical Responsibility 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. Mahmoud El-Gayyar / Software Engineering 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 outwith their competence. Mahmoud El-Gayyar / Software Engineering 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. Computer misuse Software engineers should not use their technical skills to misuse other people s computers. Computer misuse ranges from relatively trivial (game playing) to extremely serious (dissemination of viruses). Mahmoud El-Gayyar / Software Engineering 35

ACM/IEEE Code of Ethics The professional societies in the US have cooperated to produce a code of ethical practice. IEEE (Institute of Electrical and Electronic Engineering) ACM (Association for Computing Machinery) The Code contains eight Principles related to the behaviour of and decisions made by professional software engineers. Mahmoud El-Gayyar / Software Engineering 36

The ACM/IEEE Code of Ethics 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: Public Client and Employer Product Judgment Management Profession Colleagues Self Mahmoud El-Gayyar / Software Engineering 37

CoE Principle #1: Public Software engineers shall act consistently with the public interest. Accept full responsibility for their own work. Approve software only if they have a well-founded belief that it is safe, meets specifications, passes appropriate tests, and does not diminish quality of life, diminish privacy or harm the environment. Mahmoud El-Gayyar / Software Engineering 38

CoE Principle #2: Client & Employer Software engineers shall act in a manner that is in the best interests of their client and employer, consistent with the public interest. Provide service in their areas of competence, being honest about any limitations of their experience. Not knowingly use software that is obtained or retained either illegally or unethically. Keep private any confidential information gained in their professional work Mahmoud El-Gayyar / Software Engineering 39

CoE Principle #3: Product Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. strive for high quality, acceptable cost and a reasonable schedule. Ensure proper and achievable goals and objectives for any project on which they work or propose. Identify, define and address ethical, economic, cultural, legal and environmental issues related to work projects. Mahmoud El-Gayyar / Software Engineering 40

CoE Principle #4: Judgment SW engineers shall maintain integrity and independence in their professional judgment. Only endorse documents either prepared under their supervision or within their areas of competence and with which they are in agreement. Maintain professional objectivity with respect to any software or related documents they are asked to evaluate. Not engage in deceptive financial practices such as bribery, double billing, or other improper financial practices. Mahmoud El-Gayyar / Software Engineering 41

CoE Principle #5: Management Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. Attract potential software engineers only by full and accurate description of the conditions of employment. Not ask a software engineer to do anything inconsistent with this Code. Not punish anyone for expressing ethical concerns about a project. Mahmoud El-Gayyar / Software Engineering 42

CoE Principle #6: Profession Software engineers shall advance the integrity and reputation of the profession consistent with the public interest Help develop an organizational environment favorable to acting ethically. Promote public knowledge of software engineering. Extend software engineering knowledge by appropriate participation in professional organizations, meetings and publications. Mahmoud El-Gayyar / Software Engineering 43

CoE Principle #7: Colleagues Software engineers shall be fair to and supportive of their colleagues. Encourage colleagues to adhere to this Code. Assist colleagues in professional development. Credit fully the work of others Review the work of others in an objective, and properlydocumented way. Mahmoud El-Gayyar / Software Engineering 44

CoE Principle #7: Colleagues Mahmoud El-Gayyar / Software Engineering 45

CoE Principle #8: Self Software engineers shall participate in life-long learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. Further their knowledge of developments Improve their ability to create safe, reliable, and useful quality software at reasonable cost and within a reasonable time. Improve their ability to produce accurate, informative, and well-written documentation. Mahmoud El-Gayyar / Software Engineering 46

The ACM/IEEE Code of Ethics Mahmoud El-Gayyar / Software Engineering 47

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 behavior expected of their members. But wait, it is not that easy!!! Mahmoud El-Gayyar / Software Engineering 48

Review Questions 1. To help counter terrorism, many countries are planning or have developed computer systems that track large numbers of their citizens and their actions. Clearly this has privacy implications. Discuss the ethics of working on the development of this type of system. 2. In the Software Engineering Code of Ethics what is the Colleagues principle? 3. Which of the eight principles are most important from your point of view? Mahmoud El-Gayyar / Software Engineering 49