Upload
balaram-papana
View
219
Download
0
Embed Size (px)
Citation preview
8/2/2019 Introduction to SE
1/23
AN INTRODUCTION TO SOFTWARE
ENGINEERING
PresenterAmbili P K
8/2/2019 Introduction to SE
2/23
Objectives
Understand what Software Engineering is,and why it is important
Answer fundamental questions aboutSoftware Engineering
Introduce ethical and professionalresponsibility issues as they relate tocomputer scientists and software engineers
8/2/2019 Introduction to SE
3/23
Questions about Software
Engineering What is software?
Software includes source code, executable, andassociated documentation such as requirementsdocuments, design models, and user manuals
May be targeted for some general purpose (webbrowser, word processor, etc), or for a specificcustom need
New software can be produced from scratch, byconfiguring generic software systems, or byreusing existing software
8/2/2019 Introduction to SE
4/23
Questions about Software
Engineering What is Software Engineering?
Software engineering is an engineering disciplinethat applies theories, methods, and tools to solveproblems related to software production andmaintenance
Software engineers strive to deliver high-qualitysoftware, on time and within budget
8/2/2019 Introduction to SE
5/23
Questions about Software
Engineering Why is Software Engineering Important?
Financial, security, and safety critical systems relyon software
Software mediates every aspect of our Internetexperience
The economies of all developed nations are
dependent on software There is an increasing need to cost effectively
develop high-quality software
8/2/2019 Introduction to SE
6/23
Questions about Software
Engineering What is the difference between Software Engineering
and Computer Science?
Software engineering is concerned with producingusable software for today; computer science is
concerned with finding fundamental truths abouttheoretical problems for posterity
Software engineering projects have fixed budgetsand schedules; computer science projects haveopen-ended budgets and schedules
Software created by software engineers mustevolve as users needs change; solutions createdby Computer Scientists never change
8/2/2019 Introduction to SE
7/23
Questions about Software
Engineering What is the difference between Software Engineering
and Computer Science?
Software engineers require domain knowledge tofunction; computer scientists rely on
mathematical principles to function Unlike physics and electrical engineering,
software engineers often rely on methods andprinciples borrowed from other engineeringdisciplines instead of computer science
8/2/2019 Introduction to SE
8/23
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 testedand known principles; the discipline is thousandsof years old
Software Engineering is concerned with
developing the software infrastructure, control,applications, and databases in the system; oftenapply new and untested elements in softwareprojects; the discipline is about 50 years old
8/2/2019 Introduction to SE
9/23
Questions about Software
Engineering What is a Software Process?
A software process is a set of activities and theiroutput, 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, andproduces the source code to meet the specification
Validation: Checks that the software produced is what thecustomer wants
Evolution: Changes made to the software that meet userschanging needs
8/2/2019 Introduction to SE
10/23
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 doeswhat)
These process models explain different
approaches to software development; forexample, Waterfall, Iterative, and ComponentBased Software Engineering
8/2/2019 Introduction to SE
11/23
Questions about Software
Engineering What is the cost of Software?
Software costs often dominate computer systemcosts.
Software costs more to maintain than to developfrom scratch. The maintenance costs for systemswith a long-life, may be several times itsdevelopment costs
8/2/2019 Introduction to SE
12/23
Questions about Software
Engineering What are the costs of Software Engineering?
Roughly 60% of costs are development costs, and40% are testing costs. Evolution costs often
exceed development costs in custom software Costs vary depending on the type and
requirements of system under development
The distribution of costs depend on the
development model used
8/2/2019 Introduction to SE
13/23
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 designingsoftware (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 itsoperations)
8/2/2019 Introduction to SE
14/23
Questions about Software
Engineering What is CASE?
Computer Assisted Software Engineering, used toprovide 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
8/2/2019 Introduction to SE
15/23
Questions about Software
Engineering What are the attributes of good software?
Software should deliver the functionality requiredby the user. In addition, it should deliver non-
functionalrequirements such as:
Maintainability: Must be easy to evolve to addresschanging needs
Dependability: Must be trustworthy
Efficiency: Should not waste system resources
Acceptability: Users must be able to use thesoftware
8/2/2019 Introduction to SE
16/23
Questions about Software
Engineering
What are the key challenges facing softwareengineering? Heterogeneity: How to build software that works
on different platforms, that can integrate witholder legacy systems which are written in differentprogramming languages
Delivery: How to shorten the time it takes to
deliver a finished software product, withoutcompromising its quality
Trust: How to develop techniques to demonstratethat software can be trusted by its users
8/2/2019 Introduction to SE
17/23
Professional and Ethical
Responsibility
Software engineering involves widerresponsibilities than just the application oftechnical skills
Software engineers must behave in honestand ethically responsible ways to berespected as professionals
Ethical behavior is more than simplyupholding the law
8/2/2019 Introduction to SE
18/23
Issues of Professional
Responsibility
Confidentiality
Always respect confidentiality of employers orclients, even when there is no formal
confidentiality agreement
Competence
Never misrepresent ones level of competence.
Never accept work beyond ones level ofcompetence
8/2/2019 Introduction to SE
19/23
Issues of Professional
Responsibility
Intellectual property rights
Ensure that the intellectual property of employersand clients is protected
Be aware of local laws governing use ofintellectual property such as patents andcopyright
Computer misuse Never use technical skills to misuse other peoples
computers
8/2/2019 Introduction to SE
20/23
ACM/IEEE Software Engineering Code
of Ethics and Professional Practice
The commitment of software engineers tomake their discipline a respected profession,and to adhere to the eight principles for the
health, safety, and welfare of the public.
8/2/2019 Introduction to SE
21/23
Code of Ethics Eight
Principles
Public: Software engineers shall act consistently with the
public interest.
Client and Employer: Software engineers shall act in a manner that is in
the best interests of their client and employerconsistent with the public interest.
Product: Software engineers shall ensure that their
products and related modifications meet thehighest professional standards possible.
8/2/2019 Introduction to SE
22/23
Code of Ethics Eight
Principles
Judgment:
Software engineers shall maintain integrity andindependence in their professional judgment.
Management:
Software engineering managers and leaders shallsubscribe to and promote an ethical approach to
the management of software development andmaintenance.
8/2/2019 Introduction to SE
23/23
Code of Ethics Eight
Principles
Profession: Software engineers shall advance the integrity
and reputation of the profession consistent withthe public interest.
Colleagues: Software engineers shall be fair to and supportive
of their colleagues.
Self: Software engineers shall participate in lifelong
learning regarding the practice of their professionand shall promote an ethical approach to thepractice of the profession.