290 likes | 464 Views
Chapter 10. Software Engineering. O BJECTIVES. Describe the development process models. Understand the concept of modularity in software engineering. Understand the importance of quality in software engineering. Understand the role of documentation in software engineering.
E N D
Chapter 10 SoftwareEngineering
OBJECTIVES Describe the development process models. Understand the concept of modularity in software engineering. Understand the importance of quality in software engineering. Understand the role of documentation in software engineering. Understand the software life cycle. After reading this chapter, the reader should be able to:
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 series • Knuth, in late 1960s and early 1970s
10.1 SOFTWARE LIFE CYCLE
System life cycle Figure 10-1
System development phases Figure 10-2
Analysis Phase • Define requirements that specify what the proposed system is to accomplish. • Four steps • Define the user • Define the Needs (user) • Define the Requirements (system) • Define the Method
Design Phase • Define how the system will accomplishwhat was defined in the analysis phase. • Modularity – the system is divided into small moudles.
Implementation Phase • Create the actual programs. • Flowchart • Pseudocode • Coding
Testing Phase • can be a tedious and time-consuming part of program development. • White Box Testing –is the responsibility of the programmer, who knows exactly what is going on inside the program. • Black Box Testing –done by the system test engineer and the user.
10.2 DEVELOPMENT PROCESS MODELS
Waterfall model • A phase cannot be starteduntil the previous phase is completed. Figure 10-3
Incremental model • 1st version – • a simplified version does not include the details. • Main module with calls to empty submodules. • 2nd version – • Add submodules one by one Figure 10-4
10.3 MODULARITY
Modularity • Breaking a large project into smaller parts that can be understood and handled easily. • Structure chart – used in procedural programming to show the relationship between procedures or functions. • Class diagram –used in object-oriented programming to show the relationship between classes.
Modularity • Coupling –is a measure of how tightly two modules are bound to each other • The moretightly coupled, the lessindependent they are. • Loose coupling is desirable
Coupling • Data coupling –passes only the minimum required data from the calling function to the called function. • Stamp coupling –the parameters are composite objects such as arrays. • Control coupling –the passing of flags that may be used to direct the logic flow of a function. • Global coupling –uses global variables to communicate between two or more functions. • Content coupling –one function refers directly to the data or statement in another function.
Cohesion • Cohesion – is a measure of how closely the processes in a program are related. • Functional cohesion – a module contains only one process. • Sequential Cohesion –contains two or more related tasks that are closely tied together, usually with the output of one flowing as input to the other. • Communicational Cohesion – combines processes that work on the same data.
Cohesion • Procedural Cohesion – combines unrelated processes that are linked by a control flow. • Temporal Cohesion – combines unrelated processes that always occur together. • Logical Cohesion – combines processes that are related only by the entity that controls them. • Coincidental Cohesion – combines processes that are unrelated.
10.4 QUALITY
Quality software • satisfies the user’s explicit and implicit requirements, • is well documented, • meets the operating standards of the organization, and • runs efficiently on the hardware for which it was developed.
Quality factors Figure 10-5
Quality factors • Operability – basic operation • Accuracy – a system that is not accurate is worse than no system at all. • Efficiency - performance • Reliability • Security • Timeliness • Usability (user)
Quality factors • Maintainability – keep a system running correctly and up to date. • Changeability – program’s complexity and structure • Correctability – mean time to recovery, which is the time it takes to get a program back in operation after it fails. • Flexibility – how easy to make changes • Testability -
Quality factors • Transferability – move data/system from one platform to another and reuse code. • Code Reusability – functions reused in different programs • Interoperability – sending data to other systems • Portability – move software from one hardware platform to another.
Quality circle Figure 10-6 • Quality is a continuous concept that, like a circle, never ends.
10.5 DOCUMENTATION
Documentation • User Documentation - manual • System Documentation • Define the package itself. • Written so that the package can be maintained and modified by people other than the original developers.