Title: CS 310 Software Engineering
1 CS 310 Software Engineering
- Professor C. Shilepsky
- Spring 2002
- httm//aurora.wells.edu/ccs/310/cs310.htm
- Chapter 1
- Define software engineering and explain its
importance - Professional and ethical responsibility
2Software engineering-importance
- More and more systems are software controlled
- The economies of ALL developed nations depend on
software - Software expenditures represents a significant
fraction of GNP in all developed countries - Software is consistently late, over budget, and
buggy. Why?
31.1.1 What is software
- Generic products
- Stand-alone systems which are produced by a
development organization and sold on the open
market to any customer - Bespoke (customized) products
- Systems which are commissioned by a specific
customer and developed specially by some
contractor - Most software expenditure is on generic products
but most development effort is on bespoke systems - Current emphasis is on embedded or adapted COTS
(commercial-off-the-shelf-software)
41.1.2 What is software engineering
- The systematic, disciplined, and quantifiable
approach to the development, operation,
maintenance, and retirement of software - It is not about programming, rather everything
that goes into developing large systems. - It is about managing complexity how do people
build a system whose complexity exceeds the
capacity of any one individual to understand it
51.1.3, 1.1.4 Difference between CS, SE, and
system engineering
- Computer science theories and models that
underlie computers - e.g. data structures, discrete math, analysis of
algorithms, ... - Software engineering how to build a software
system. CS theory not enough. - e.g. flight-control software
- System engineering how to build a complex system
that may include software - e.g. an airplane
61.1.5 software process
- Structured set of activities required to develop
a software system - Specification (what are the requirements)
- Development (design and code)
- Validation
- Evolution
- Activities vary depending on the organization
and the type of system being developed - 1.1.6 software process model - later
71.17 Software engineering costs
81.1.8 Software engineering methods
- Approaches to development
- CS 132 methods
- functional decomposition
- object-oriented programming
- Software engineering methods often integrated to
cover the whole process - Some are a bit like religion
91.1.9 Computer aided software engineering (CASE)
- Tools to assist development
- We are familiar with the C development
environment which has good built-in support - There is more.
101.1.10 Software product attributes
- Maintainability
- It should be possible for the software to evolve
to meet changing requirements - Dependability
- The software should not cause physical or
economic damage in the event of failure - Efficiency
- The software should not make wasteful use of
system resources - Usability
- Software should have an appropriate user
interface and documentation
111.1.11 Software engineering challenges
- Legacy systems
- It is difficult to maintain and update old
systems - Heterogeneity
- Systems need to operate on different hardware in
different environments - Delivery
- It takes longer to build a good system than
customers want to allow. - What else?
121.2 Professional and ethical responsibilty
- What do these mean? Have you ever run into a
question with one of them? - Confidentiality
- Competence
- Intellectual property rights
- Computer misuse
13Code 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 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.
14Code of ethics - principles
- 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.
15Code 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 the practice of the profession.
16Ethical 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 - What would you do?
- Other examples?