Ch1 Intro and Project
Ch1 Intro and Project
Lecture 1
Software engineering
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; CAD software; software for specific markets
such as appointments systems for dentists.
Customized products
Software that is commissioned by a specific customer to meet
their own needs.
Examples – embedded control systems, air traffic control
software, traffic monitoring systems.
Chapter 1 Introduction 4
Product specification
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
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.
Chapter 1 Introduction 5
Frequently asked questions about software
engineering
Question Answer
Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced
software engineering? delivery times and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs,
engineering? 40% are testing costs. For custom software, evolution
costs often exceed development costs.
What are the best software engineering While all software projects have to be professionally
techniques and methods? managed and developed, different techniques are
appropriate for different types of system. For example,
games should always be developed using a series of
prototypes whereas safety critical control systems require
a complete and analyzable specification to be developed.
You can’t, therefore, say that one method is better than
another.
What differences has the web made to The web has led to the availability of software services
software engineering? and the possibility of developing highly distributed service-
based systems. Web-based systems development has led
to important advances in programming languages and
software reuse.
Chapter 1 Introduction 7
Essential attributes of good software
Chapter 1 Introduction 8
Software engineering
Chapter 1 Introduction 9
Importance of software engineering
Chapter 1 Introduction 10
Software process activities
Chapter 1 Introduction 11
General issues that affect most software
Heterogeneity
Increasingly, systems are required to operate as distributed
systems across networks that include different types of computer
and mobile devices.
Business and social change
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.
Security and trust
As software is intertwined with all aspects of our lives, it is
essential that we can trust that software.
Chapter 1 Introduction 12
Software engineering fundamentals
Chapter 1 Introduction 13
Software engineering and the web
Chapter 1 Introduction 14
Key points
Chapter 1 Introduction 15
Key points
Chapter 1 Introduction 16
Chapter 1- Introduction
Lecture 2
Software engineering ethics
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.
Issues of professional responsibility
Chapter 1 Introduction 22
The ACM/IEEE Code of Ethics
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:
Chapter 1 Introduction 23
Ethical 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 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.
Chapter 1 Introduction 24
Ethical dilemmas
Chapter 1 Introduction 26
Academic Integrity
& Professional Practice
•Final exam 35 %
•Homework 10%
•Project 25%
•Midterm 25 %
•Lab:
•Participation 5%
Feedback about the Group Projects
Examples
Real time: air traffic control
Embedded systems: digital camera, GPS, iPod
Data processing: telephone billing, pensions
Information systems: web sites, digital libraries
Sensors: weather data
System software: operating systems, compilers
Communications: routers, telephone switches
Offices: word processing, video conferences
Scientific: simulations, weather forecasting
Graphical: film making, design
etc., etc., etc., ....
Software is Expensive
Software is expensive.
The major costs are salaries (your salaries)!
Your background
• Biggest program that you have written?
• Biggest program that you have worked on?
• Biggest project team that you have been part of?
• Longest project that you have worked on?
• Most people who have used your work?
• Longest that your project has been in production?
Future Experience
• Problems
Over budget
Late delivery
Does not work as expected
• Never used
Does the wrong thing
Needs change
Users dislike to use it
etc.
• Problem
Must rely on others for reports of
progress or difficulties
• Software Developers
Have difficulty evaluating progress
Optimistic
Consider reporting a waste time
etc.
Chapter 1 Introduction 44