Getting Started With Software Engineering
Getting Started With Software Engineering
Getting Started With Software Engineering
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