23
An Introduction to Software Engineering

An Introduction to Software Engineering. Communication Systems

Embed Size (px)

Citation preview

Page 1: An Introduction to Software Engineering. Communication Systems

An Introduction to

Software Engineering

Page 2: An Introduction to Software Engineering. Communication Systems

Communication Systems

Page 3: An Introduction to Software Engineering. Communication Systems

A Communications Model

Page 4: An Introduction to Software Engineering. Communication Systems

Data Communications Model

Page 5: An Introduction to Software Engineering. Communication Systems

voice mail Twitter

e-mailinstant messaging

chat rooms

newsgroups telephony videoconferencing

collaboration groupware global positioning system (GPS)

Page 6: An Introduction to Software Engineering. Communication Systems

Objectives

• Understand what Software Engineering is, and why it is important

• Answer fundamental questions about Software Engineering

• Introduce ethical and professional responsibility issues as they relate to computer scientists and software engineers

Page 7: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What is software?– Software includes source code, executable, and associated

documentation such as requirements documents, design models, and user manuals

– May be targeted for some general purpose (web browser, word processor, etc), or for a specific custom need

– New software can be produced from scratch, by configuring generic software systems, or by reusing existing software

Page 8: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What is Software Engineering?– Software engineering is an engineering

discipline that applies theories, methods, and tools to solve problems related to software production and maintenance

– Software engineers strive to deliver high-quality software, on time and within budget

Page 9: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• Why is Software Engineering Important?– Financial, security, and safety critical systems rely on

software

– Software mediates every aspect of our Internet experience

– The economies of all developed nations are dependent on software

– There is an increasing need to cost effectively develop high-quality software

Page 10: An Introduction to Software Engineering. Communication Systems

– Software engineering is concerned with producing usable software for today; computer science is concerned with finding fundamental truths about theoretical problems for posterity

– Software engineering projects have fixed budgets and schedules; computer science projects have open-ended budgets and schedules

– Software created by software engineers must evolve as user’s needs change; solutions created by Computer Scientists never change

What is the difference between Software Engineering and Computer Science?

Page 11: An Introduction to Software Engineering. Communication Systems

What is the difference between Software Engineering and Computer Science?

• Software engineers require domain knowledge to function; computer scientists rely on mathematical principles to function

• Unlike physics and electrical engineering, software engineers often rely on methods and principles borrowed from other engineering disciplines instead of computer science

Page 12: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What is the difference between Software Engineering and System Engineering?– System Engineering is concerned with all aspects of

computer based systems, including hardware, software and process engineering; applies tested and known principles; the discipline is thousands of years old

– Software Engineering is concerned with developing the software infrastructure, control, applications, and databases in the system; often apply new and untested elements in software projects; the discipline is about 50 years old

Page 13: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What is a Software Process?– A software process is a set of activities and their output,

which result in a software product – Four fundamental process activities are:

• Specification: Defines what the software should do, and its operational constraints

• Design and implementation: Designs the solutions, and produces the source code to meet the specification

• Validation: Checks that the software produced is what the customer wants

• Evolution: Changes made to the software that meet user’s changing needs

Page 14: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What is a Software Process model?– An abstract representation of a software process,

presented from a particular perspective; for example, workflow (sequence of activities), data-flow (information flow), or role/action (who does what)

– These process models explain different approaches to software development; for example, Waterfall, Iterative, and Component Based Software Engineering

Page 15: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What is the cost of Software?

– Software costs often dominate computer system costs.

– Software costs more to maintain than to develop from scratch. The maintenance costs for systems with a long-life, may be several times its development costs

Page 16: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What are Software Engineering methods?– Structured approaches to software development,

including:• Model descriptions: Describes graphical models (i.e.

object, data-flow, state machine models, etc)• Rules: Constraints applied to system models (i.e. entities

must have unique names)• Recommendations: Best practices for designing software

(i.e. include no more than nine processes in a data flow diagram)

• Process guidance: what activities to follow (i.e. document object attributes before defining its operations)

Page 17: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What is CASE?– Computer Assisted Software Engineering, used to

provide automated support for software process activities

– Often used for method support

– Upper-CASE tools support requirements gathering and design activities

– Lower-CASE tools support implementation, debugging, and testing activities

Page 18: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What are the attributes of good software?– Software should deliver the functionality required

by the user. In addition, it should deliver non-functional requirements such as:• Maintainability: Must be easy to evolve to address

changing needs• Dependability: Must be trustworthy• Efficiency: Should not waste system resources• Acceptability: Users must be able to use the software

Page 19: An Introduction to Software Engineering. Communication Systems

Questions about Software Engineering

• What are the key challenges facing software engineering?– Heterogeneity: How to build software that works on

different platforms, that can integrate with older legacy systems which are written in different programming languages

– Delivery: How to shorten the time it takes to deliver a finished software product, without compromising its quality

– Trust: How to develop techniques to demonstrate that software can be trusted by its users

Page 20: An Introduction to Software Engineering. Communication Systems

Professional and Ethical Responsibility

• Software engineering involves wider responsibilities than just the application of technical skills

• Software engineers must behave in honest and ethically responsible ways to be respected as professionals

• Ethical behavior is more than simply upholding the law

Page 21: An Introduction to Software Engineering. Communication Systems

Two Ethical Perspectives on Reciprocity

• Confucian: “Never impose on others what you would not choose for yourself.” - Analects XV.24, tr. David Hinton ”

• Christian: “Just as you want others to do for you, do the same for them.” Luke 6:31

Page 22: An Introduction to Software Engineering. Communication Systems

Issues of Professional Responsibility

• Confidentiality– Always respect confidentiality of employers or

clients, even when there is no formal confidentiality agreement

• Competence– Never misrepresent one’s level of competence.

Never accept work beyond one’s level of competence

Page 23: An Introduction to Software Engineering. Communication Systems

Issues of Professional Responsibility

• Intellectual property rights– Ensure that the intellectual property of employers

and clients is protected– Be aware of local laws governing use of

intellectual property such as patents and copyright

• Computer misuse– Never use technical skills to misuse other people’s

computers