You are on page 1of 36

Introduction

Gettingstartedwithsoftware
engineering

SoftwareEngineering

Objectives
To introduce software engineering and to
explainitsimportance
Tosetouttheanswerstokeyquestionsabout
softwareengineering
To introduce ethical and professional issues
and to explain why they are of concern to
softwareengineers

SoftwareEngineering

Topicscovered
FAQsaboutsoftwareengineering
Professionalandethicalresponsibility

SoftwareEngineering

Softwareengineering
The economies of ALL developed nations are
dependentonsoftware,
Moreandmoresystemsaresoftwarecontrolled,
Software engineering is concerned with
theories, methods and tools for professional
softwaredevelopment,
Software engineering expenditure represents a
significant fraction of GNP (Gross national
product)inalldevelopedcountries.
SoftwareEngineering

SoftwareEngineering

SoftwareEngineering

Softwarecosts
Softwarecostsoftendominatesystemcosts.The
costs of software on a PC are often greater than
thehardwarecost,
Software costs more to maintain than it does to
develop. For systems with a long life,
maintenance costs may be several times
developmentcosts,
Software engineering is concerned with cost
effectivesoftwaredevelopment.
SoftwareEngineering

SoftwareCost

SoftwareEngineering

FAQsaboutsoftwareengineering
Whatissoftware?
Whatissoftwareengineering?
Whatisthedifferencebetweensoftware
engineeringandcomputerscience?
Whatisthedifferencebetweensoftware
engineeringandsystemengineering?
Whatisasoftwareprocess?
Whatisasoftwareprocessmodel?
SoftwareEngineering

FAQsaboutsoftwareengineering
Whatarethecostsofsoftwareengineering?
Whataresoftwareengineeringmethods?
What is CASE (ComputerAided Software
Engineering)
Whataretheattributesofgoodsoftware?
What are the key challenges facing software
engineering?

SoftwareEngineering

Whatissoftware?
Computer
programs
and
associated
documentation,
Software products may be developed for a
particular customer or may be developed for a
generalmarket
Softwareproductsmaybe
Generic: developed to be sold to a range of different
customers
Bespoke (custom): developed for a single customer
accordingtotheirspecification
SoftwareEngineering

10

Whatissoftware?
Softwareisdevelopedorengineeredbutnot
manufactured.
Softwaredoesnotwearout
use or be used until no longer in good
conditionorworkingorder

SoftwareEngineering

11

SoftwareApplicationDomain

SystemSoftware
ApplicationSoftware
Engineering/scientificsoftware
Embeddedsoftware
Productlinesoftware
Webapplication
Artificialintelligencesoftware
StudentPleasefindtheexamplesforeachdomain
SoftwareEngineering

12

Whatissoftwareengineering?
Softwareengineeringisanengineeringdiscipline
which is concerned with all aspects of software
production,
Softwareengineersshouldadoptasystematicand
organised approach to their work and use
appropriatetoolsandtechniquesdependingonthe
problemtobesolved,thedevelopmentconstraints
andtheresourcesavailable.
SoftwareEngineering

13

SoftwareEngineeringBodyofKnowledge(BoK)

Softwarerequirements(Requirementsanalysis)
Softwaredesign
Softwareconstruction(Programming/Coding)
Softwaretesting
Softwaremaintenance
Softwareconfigurationmanagement
SoftwareEngineeringmanagement
SoftwareEngineeringprocess(Software
developmentprocess)
SoftwareEngineeringtoolsandmethods
Softwarequality
SoftwareEngineering

14

TypicalSoftwareEngineeringTasks

Analysisoftheproblem
Determinationoftherequirements
Designofthesoftware
Codingofthesoftwaresolution
Testingandintegrationofthecode
Installationanddeliveryofthesoftware
Documentation
Maintenance
Qualityassurance
Training
Resourceestimation
ProjectManagement
SoftwareEngineering

15

Whatisthedifferencebetweensoftware
engineeringandcomputerscience?
Computer science is concerned with theory and
fundamentals; software engineering is concerned
with the practicalities of developing and
deliveringusefulsoftware,
Computer science theories are currently
insufficienttoactasacompleteunderpinningfor
softwareengineering.

SoftwareEngineering

16

Whatisthedifferencebetweensoftware
engineeringandsystemengineering?
System engineering is concerned with all
aspects
of
computerbased
systems
developmentincludinghardware,softwareand
process engineering. Software engineering is
partofthisprocess
System engineers are involved in system
specification, architectural design, integration
anddeployment

SoftwareEngineering

17

Whatisasoftwareprocess?
Asetofactivitieswhosegoalisthedevelopmentor
evolutionofsoftware
Genericactivitiesinallsoftwareprocessesare:
Specification what the system should do and its
developmentconstraints
Developmentproductionofthesoftwaresystem
Validationcheckingthatthesoftwareiswhatthe
customerwants
Evolution changing the software in response to
changingdemands
SoftwareEngineering

18

SoftwareProcess

SoftwareEngineering

19

Whatisasoftwareprocessmodel?
Asimplifiedrepresentationofasoftwareprocess,
presentedfromaspecificperspective
Examplesofprocessperspectivesare
Workflowperspectivesequenceofactivities
Dataflowperspectiveinformationflow
Role/actionperspectivewhodoeswhat
Genericprocessmodels
Waterfall
Evolutionarydevelopment
Formaltransformation
Integrationfromreusablecomponents
SoftwareEngineering

20

Whatarethecostsofsoftwareengineering?
Roughly 60% of costs are development costs,
40% are testing costs. For custom software,
evolutioncostsoftenexceeddevelopmentcosts
Costs vary depending on the type of system
being developed and the requirements of
system attributes such as performance and
systemreliability
Distribution of costs depends on the
developmentmodelthatisused
SoftwareEngineering

21

Whataresoftwareengineeringmethods?
Structured approaches to software development which
include system models, notations, rules, design advice and
processguidance
Modeldescriptions
Descriptions of graphical models which should be
produced
Rules
Constraintsappliedtosystemmodels
Recommendations
Adviceongooddesignpractice
Processguidance
Whatactivitiestofollow
SoftwareEngineering

22

WhatisCASE(ComputerAidedSoftware
Engineering)
Software systems which are intended to provide
automatedsupportforsoftwareprocessactivities.
CASEsystemsareoftenusedformethodsupport
UpperCASE
Tools to support the early process activities of
requirementsanddesign

LowerCASE
Toolstosupportlateractivitiessuchasprogramming,
debuggingandtesting
SoftwareEngineering

23

Whataretheattributesofgoodsoftware?
The software should deliver the required functionality and
performance to the user and should be maintainable, dependable
andusable
Maintainability
Softwaremustevolvetomeetchangingneeds
Dependability
Softwaremustbetrustworthy
Efficiency
Softwareshouldnotmakewastefuluseofsystemresources
Usability
Software must be usable by the users for which it was
designed
SoftwareEngineering

24

Whatarethekeychallengesfacingsoftware
engineering?
Coping with legacy systems, coping with increasing
diversity and coping with demands for reduced delivery
times
Legacysystems
Old,valuablesystemsmustbemaintainedandupdated
Heterogeneity
Systems are distributed and include a mix of hardware
andsoftware
Delivery
There is increasing pressure for faster delivery of
software
SoftwareEngineering

25

Professionalandethicalresponsibility
Software
engineering
involves
wider
responsibilities than simply the application of
technicalskills,
Softwareengineersmustbehaveinanhonestand
ethically responsible way if they are to be
respectedasprofessionals,
Ethicalbehaviourismorethansimplyupholding
thelaw.
SoftwareEngineering

26

Issuesofprofessionalresponsibility
Confidentiality
Engineers should normally respect the
confidentiality of their employers or clients
irrespective of whether or not a formal
confidentialityagreementhasbeensigned.

Competence
Engineers should not misrepresent their level of
competence. They should not knowingly accept
workwhichisoutwiththeircompetence.
SoftwareEngineering

27

Issuesofprofessionalresponsibility
Intellectualpropertyrights
Engineers should be aware of local laws governing the
useofintellectualpropertysuchaspatents,copyright,etc.
They should be careful to ensure that the intellectual
propertyofemployersandclientsisprotected.

Computermisuse
Softwareengineersshouldnotusetheirtechnicalskillsto
misuse other peoples computers. Computer misuse
ranges from relatively trivial (game playing on an
employers machine, say) to extremely serious
(disseminationofviruses).
SoftwareEngineering

28

ACM/IEEECodeofEthics
The professional societies in the US have
cooperatedtoproduceacodeofethicalpractice.
Membersoftheseorganisationssignuptothecode
ofpracticewhentheyjoin.
The Code contains eight Principles related to the
behaviour of and decisions made by professional
software engineers, including practitioners,
educators, managers, supervisors and policy
makers, as well as trainees and students of the
profession.
SoftwareEngineering

29

Codeofethicspreamble
Preamble
Theshortversionofthecodesummarizesaspirationsatahighlevelof
the abstraction; the clauses that are included in the full version give
examplesanddetailsofhowtheseaspirationschangethewayweactas
softwareengineeringprofessionals.Withouttheaspirations,thedetails
can become legalistic and tedious; without the details, the aspirations
canbecomehighsoundingbutempty;together,theaspirationsandthe
detailsformacohesivecode.
Software engineers shall commit themselves to making the analysis,
specification,design,development,testingandmaintenanceofsoftware
a beneficial and respected profession. In accordance with their
commitment to the health, safety and welfare of the public, software
engineersshalladheretothefollowingEightPrinciples:

SoftwareEngineering

30

Codeofethicsprinciples
1.PUBLIC
Software engineers shall act consistently with the public
interest.

2.CLIENTANDEMPLOYER
Softwareengineersshallactinamannerthatisinthebest
interests of their client and employer consistent with the
publicinterest.

3.PRODUCT
Software engineers shall ensure that their products and
related modifications meet the highest professional
standardspossible.
SoftwareEngineering

31

Codeofethicsprinciples
4.JUDGMENT
Softwareengineersshallmaintainintegrityand
independenceintheirprofessionaljudgment.

5.MANAGEMENT
Software engineering managers and leaders shall
subscribe to and promote an ethical approach to the
managementofsoftwaredevelopmentandmaintenance.

6.PROFESSION
Software engineers shall advance the integrity and
reputation of the profession consistent with the public
interest.
SoftwareEngineering

32

Codeofethicsprinciples
7.COLLEAGUES
Softwareengineersshallbefairtoandsupportive
oftheircolleagues.
8.SELF
Software engineers shall participate in lifelong
learningregarding the practice of their profession
and shall promote an ethical approach to the
practiceoftheprofession.

SoftwareEngineering

33

Ethicaldilemmas
Disagreement in principle with the policies of
seniormanagement
Your employer acts in an unethical way and
releases a safetycritical system without finishing
thetestingofthesystem
Participation in the development of military
weaponssystemsornuclearsystems

SoftwareEngineering

34

Keypoints
Software engineering is an engineering discipline which is
concernedwithallaspectsofsoftwareproduction.
Software products consist of developed programs and associated
documentation. Essential product attributes are maintainability,
dependability,efficiencyandusability.
Thesoftwareprocessconsistsofactivitieswhichareinvolvedin
developing software products. Basic activities are software
specification,development,validationandevolution.
Methodsareorganisedwaysofproducingsoftware.Theyinclude
suggestions for the process to be followed, the notations to be
used,rulesgoverningthesystemdescriptionswhichareproduced
anddesignguidelines.
SoftwareEngineering

35

Keypoints
CASE tools are software systems which are designed to
support routine activities in the software process such as
editing design diagrams, checking diagram consistency and
keepingtrackofprogramtestswhichhavebeenrun.
Software engineers have responsibilities to the engineering
professionandsociety.Theyshouldnotsimplybeconcerned
withtechnicalissues.
Professionalsocietiespublishcodesofconductwhichsetout
thestandardsofbehaviourexpectedoftheirmembers.

SoftwareEngineering

36

You might also like