software engineering. what is software engineering? software engineering is an engineering...

14
Software Software engineering engineering

Upload: jacob-peters

Post on 29-Dec-2015

277 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

Software engineeringSoftware engineering

Page 2: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

What is software engineering?What is software engineering?

Software engineering is an Software engineering is an engineering discipline which is engineering discipline which is concerned with all aspects of concerned with all aspects of software production software production the the systematic use of many systematic use of many disciplines, tools, and resources disciplines, tools, and resources for the practical application.for the practical application.

Page 3: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

importance of importance of software software ::engineeringengineering

Software engineeringSoftware engineering plays a major plays a major role being the backbone of software role being the backbone of software systems by applying technologies and systems by applying technologies and practices not only technically from practices not only technically from computer science and engineering, but computer science and engineering, but also with management issues such as also with management issues such as management issues (project management) management issues (project management) , plus the application and other fields. , plus the application and other fields.

Page 4: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

What is the difference between software What is the difference between software engineering and computer scienceengineering and computer science??

Computer scienceComputer science is concerned with is concerned with theory and fundamentalstheory and fundamentals; ; software software engineeringengineering is concerned with the is concerned with the practicalities of practicalities of developingdeveloping and and deliveringdelivering useful software useful software

Computer science theoriesComputer science theories are currently are currently insufficient toinsufficient to act as a complete act as a complete foundation or basisfoundation or basis for software for software engineeringengineering

Page 5: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

What is the difference between software What is the difference between software engineering and system engineeringengineering and system engineering??

System engineeringSystem engineering is concerned with all is concerned with all aspects of aspects of computer-based systems computer-based systems developmentdevelopment including including hardware, hardware, software and process engineeringsoftware and process engineering. . Software engineeringSoftware engineering is part of this is part of this processprocess

System engineersSystem engineers are involved in are involved in system system specificationspecification, , architectural designarchitectural design, , integration integration of the finisof the finishedhed system system..

Page 6: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

What is a software processWhat is a software process??

A A set of activitiesset of activities whose goal is the whose goal is the developmentdevelopmentor evolution of softwareor evolution of software

Generic activities in Generic activities in all software processesall software processes are are::SpecificationSpecification - what the system should do and - what the system should do and its development constraintsits development constraintsDevelopmentDevelopment - production of the software - production of the software systemsystemValidationValidation - checking that the software is what - checking that the software is what the customer wantsthe customer wantsEvolution Evolution - changing the software in response - changing the software in response to changing demandsto changing demands

Page 7: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

What is a software process? What is a software process? (cont.)(cont.)

Engineering =Engineering = {Process}{Process}Software Engineering = Software Engineering = {Software Process}{Software Process}Software Process = Software Process = { Methodology }{ Methodology }Methodology = Methodology = {Activity} + {Coordination Rule}{Activity} + {Coordination Rule}

A software processA software process is a set of activities allowing the is a set of activities allowing the production of software. These activities are production of software. These activities are supported and organized by a supported and organized by a methodologymethodology

ProcessProcess

Requirements Coordinated ProductRequirements Coordinated Product

ActivitiesActivities

Page 8: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

What are the costs of What are the costs of software engineeringsoftware engineering??

Roughly 60% of costs are Roughly 60% of costs are developmentdevelopment costs, 40% costs, 40% are are testingtesting costs. For custom software, costs. For custom software, evolution evolution costs often costs often exceedexceed developmentdevelopment costs costs

Costs Costs varyvary depending on the depending on the type of systemtype of system being being developed and developed and the requirements of system the requirements of system attributesattributes such as such as performanceperformance and system and system reliabilityreliability

Distribution of costs Distribution of costs dependsdepends on the development on the development model that is used (see next slide)model that is used (see next slide)..

Page 9: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

Waterfall model

Iterative development

Component-based software engineering

Development and evolution costs for long-lifetime systems

System evolution

10 200 30 4000

System development

Specification Design Development Integration and testing

25 50 75 1000

Specification Development Integration and testing

25 50 75 1000

Specification Iterative development System testing

25 50 75 1000

Page 10: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

What are the attributes of What are the attributes of good softwaregood software??

The software should The software should deliver deliver the required the required functionalityfunctionality and and performanceperformance to the user and to the user and should be should be maintainablemaintainable, , dependabledependable, , efficientefficient and and usableusable

MaintainabilityMaintainabilitySoftware must evolve to Software must evolve to meet changingmeet changing needs needsDependabilityDependability

Dependability includes (Dependability includes (reliabilityreliability, , securitysecurity and and safetysafety) , dependable software should ) , dependable software should not cause not cause damagedamage in the event of in the event of failurefailure..

Page 11: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

What are the attributes of What are the attributes of ((Con,tCon,t))good softwaregood software??

EfficiencyEfficiency

Software should Software should NOTNOT make make wasteful use of wasteful use of system resourcessystem resources such as memory and such as memory and processor timeprocessor time..

UsabilityUsability

Software must be Software must be usable by the usersusable by the users for for which it was designedwhich it was designed, it should , it should have an have an appropriate user interfaceappropriate user interface and and enough enough documentationdocumentation . .

Page 12: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

What are the key challenges facing What are the key challenges facing software engineeringsoftware engineering??

Coping with Coping with legacy systems legacy systems (( old, valuable old, valuable systems must be maintained and updatedsystems must be maintained and updated)), , coping with coping with increasing diversityincreasing diversity and coping and coping with demands for with demands for reduced delivery timesreduced delivery times..

HeterogeneityHeterogeneity,, systems are required to systems are required to operateoperate as distributed as distributed across networksacross networks that include a that include a different typedifferent type of hardware and software of hardware and software

DeliveryDelivery, there is increasing , there is increasing pressurepressure for faster for faster delivery of softwaredelivery of softwareTrustTrustDeveloping techniques that demonstrate that Developing techniques that demonstrate that software can be trusted by its userssoftware can be trusted by its users..

Page 13: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

Issues of professional Issues of professional responsibilityresponsibility

ConfidentialityConfidentiality الخصوصيهالخصوصيهEngineers should normally Engineers should normally respectrespect the the confidentiality of their employers or confidentiality of their employers or clientsclients..

CompetenceCompetence الكفاءةالكفاءةEngineers should not Engineers should not misrepresentmisrepresent their level of competence. They their level of competence. They should should not acceptnot accept work which is out work which is out with their competencewith their competence..

Page 14: Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software

Issues of professional Issues of professional con,t)con,t)))responsibilityresponsibility Intellectual property rightsIntellectual property rights

Engineers should be aware of Engineers should be aware of local laws local laws governinggoverning the use of intellectual property the use of intellectual property such as such as patentspatents, , copyrightcopyright, etc. They should , etc. They should be careful to ensure that the be careful to ensure that the intellectual intellectual propertyproperty of employers and clients is of employers and clients is protectedprotected..

Computer misuseComputer misuse Software engineers should not use their Software engineers should not use their technical skillstechnical skills to to misuse other people’s misuse other people’s computerscomputers. Computer misuse ranges from . Computer misuse ranges from relatively relatively trivialtrivial (game playing on an (game playing on an employer’s machine) to extremely employer’s machine) to extremely seriousserious (viruses)(viruses)..