28
Chapter 10 Software Engineering

Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Embed Size (px)

Citation preview

Page 1: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Chapter 10

SoftwareEngineering

Page 2: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Understand the Understand the software life cyclesoftware life cycle..

Describe the development process models.Describe the development process models.

Understand the concept of Understand the concept of modularitymodularity in software engineering. in software engineering.

Understand the importance of Understand the importance of qualityquality in software engineering. in software engineering.

After reading this chapter, the reader should After reading this chapter, the reader should be able to:be able to:

OOBJECTIVESBJECTIVES

Understand the role of Understand the role of documentationdocumentation in software engineering. in software engineering.

Page 3: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

software engineering software engineering –the establishment and use of sound engineering methods and principles to obtain reliable software.

Software is more of an art than a science. The Art of Computer Programming

3-volume seriesKnuth, in late 1960s and early 1970s

Page 4: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

SOFTWARESOFTWARELIFELIFE

CYCLECYCLE

SOFTWARESOFTWARELIFELIFE

CYCLECYCLE

10.110.1

Page 5: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Figure 10-1System life cycle

Page 6: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Figure 10-2 System development phases

Page 7: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Analysis Phase Define Define requirementsrequirements that specify what that specify what

the proposed system is to accomplish.the proposed system is to accomplish. Four stepsFour steps

1.1. Define the Define the useruser

2.2. Define the Define the Needs Needs (user)(user)

3.3. Define the Define the Requirements Requirements (system)(system)

4.4. Define the Define the MethodMethod

Page 8: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Design Phase Define Define howhow the system will accomplish the system will accomplish

whatwhat was defined in the was defined in the analysisanalysis phase phase..

ModularityModularity – the system is divided into – the system is divided into small small moudlesmoudles..

Page 9: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Implementation Phase Create the actual programs.Create the actual programs.

FlowchartFlowchart PseudocodePseudocode CodingCoding

Page 10: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Testing Phase can be a can be a tedioustedious and and time-consumingtime-consuming part of part of

program development.program development.

White Box TestingWhite Box Testing – –is the responsibility of the is the responsibility of the programmerprogrammer, who , who knows exactly what is going on inside the knows exactly what is going on inside the program.program.

Black Box TestingBlack Box Testing – –done by the system done by the system test engineertest engineer and the and the useruser..

Page 11: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

DEVELOPMENTDEVELOPMENTPROCESSPROCESSMODELSMODELS

DEVELOPMENTDEVELOPMENTPROCESSPROCESSMODELSMODELS

10.210.2

Page 12: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Figure 10-3

Waterfall model

A phase A phase cannot be startedcannot be started until the until the previous phase is completedprevious phase is completed..

Page 13: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Figure 10-4

Incremental model 1st version –1st version –

a simplified version a simplified version does not include the detailsdoes not include the details.. Main module with calls to Main module with calls to empty submodulesempty submodules. .

2nd version –2nd version – Add submodules one by one Add submodules one by one

Page 14: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

MODULARITYMODULARITYMODULARITYMODULARITY

10.310.3

Page 15: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Modularity Breaking Breaking a large projecta large project into into smaller partssmaller parts

that can be understood and handled that can be understood and handled easily.easily.

Structure chartStructure chart – – used in used in procedural programmingprocedural programming to show the to show the relationship between relationship between proceduresprocedures or or functionsfunctions..

Class diagramClass diagram – –used in used in object-oriented programmingobject-oriented programming to show to show the relationship between the relationship between classesclasses..

Page 16: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Modularity

CouplingCoupling – –is a measure of how is a measure of how tightlytightly two modules are two modules are bound to each otherbound to each other

The The moremore tightly coupledtightly coupled, the , the lessless independentindependent they are. they are.

Loose couplingLoose coupling is desirable is desirable

Page 17: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

CouplingCoupling Data couplingData coupling – –

passes only the passes only the minimum required dataminimum required data from the from the calling calling functionfunction to the to the called functioncalled function..

Stamp couplingStamp coupling – –the parameters are the parameters are composite objectscomposite objects such as such as arraysarrays..

Control couplingControl coupling – –the passing of the passing of flagsflags that may be used to direct the logic that may be used to direct the logic flow of a function. flow of a function.

Global couplingGlobal coupling – –uses uses global variablesglobal variables to communicate between two or to communicate between two or more functions.more functions.

Content couplingContent coupling – –one function one function refers directlyrefers directly to the to the datadata or statement in or statement in another function.another function.

Page 18: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Cohesion CohesionCohesion – –

is a measure of how is a measure of how closelyclosely the processes in a the processes in a program are related.program are related.

1.1. Functional cohesionFunctional cohesion – –

a module contains a module contains only one processonly one process. . 2.2. Sequential CohesionSequential Cohesion – –

contains contains two or more related taskstwo or more related tasks that are closely tied that are closely tied together, usually together, usually with the output of one flowing as input with the output of one flowing as input to the otherto the other. .

3.3. Communicational CohesionCommunicational Cohesion – – combines processes that combines processes that work on the same datawork on the same data..

Page 19: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Cohesion

4.4. Procedural CohesionProcedural Cohesion – – combines combines unrelatedunrelated processes processes that are linked that are linked by a control flow. by a control flow.

5.5. Temporal CohesionTemporal Cohesion – – combines combines unrelated processesunrelated processes that that always always occur togetheroccur together..

6.6. Logical CohesionLogical Cohesion – – combines processes that are related combines processes that are related only by the only by the entity that controls thementity that controls them. .

7.7. Coincidental CohesionCoincidental Cohesion – – combines processes that are unrelated. combines processes that are unrelated.

Page 20: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

QUALITYQUALITYQUALITYQUALITY

10.410.4

Page 21: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Quality software satisfies the user’s explicit and implicit satisfies the user’s explicit and implicit

requirementsrequirements, , is is well well documenteddocumented, , meets the meets the operating standardsoperating standards of the of the

organization, and organization, and runs runs efficientlyefficiently on the on the hardwarehardware for which it for which it

was developed.was developed.

Page 22: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Figure 10-5 Quality factors

Page 23: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Quality factors

OperabilityOperability – basic operation – basic operation Accuracy – Accuracy –

a system that is not accurate is worse than no system at all.a system that is not accurate is worse than no system at all.

Efficiency - performanceEfficiency - performance ReliabilityReliability SecuritySecurity TimelinessTimeliness UsabilityUsability (user) (user)

Page 24: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Quality factors

MaintainabilityMaintainability – – keep a system keep a system running correctlyrunning correctly and and up to dateup to date..

Changeability – program’s complexity and structureChangeability – program’s complexity and structure Correctability – mean time to Correctability – mean time to recoveryrecovery, which is the , which is the

time it takes to get a program back in operation after time it takes to get a program back in operation after it fails.it fails.

Flexibility – how easy to make changesFlexibility – how easy to make changes Testability - Testability -

Page 25: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Quality factors

TransferabilityTransferability – – move data/system move data/system from one platform to anotherfrom one platform to another and and reuse codereuse code. .

Code Reusability – functions reused in different Code Reusability – functions reused in different programsprograms

Interoperability – sending Interoperability – sending datadata to other systems to other systems Portability – move Portability – move softwaresoftware from one hardware from one hardware

platform to another.platform to another.

Page 26: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Quality circle Figure 10-6

Quality is a continuous concept that, like a circle, never ends.Quality is a continuous concept that, like a circle, never ends.

Page 27: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

DOCUMENTATIONDOCUMENTATIONDOCUMENTATIONDOCUMENTATION

10.510.5

Page 28: Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in

Documentation

User DocumentationUser Documentation - manual - manual System DocumentationSystem Documentation

Define the package itself.Define the package itself. Written so that the package can be Written so that the package can be maintainedmaintained

and and modifiedmodified by people by people other than the original other than the original developersdevelopers..