Image from Coce
Image from OpenLibrary

Software engineering : a programming approach / Douglas Bell.

By: Material type: TextTextPublication details: Harlow : Addison Wesley, c2000.Edition: 3rd edDescription: xvi, 470 p. : ill. ; 23 cmISBN:
  • 0201648563
Subject(s): DDC classification:
  • 005.1 BEL
Contents:
Preface xv Part A Introduction Software -- problems and prospects 3 (18) Introduction 3 (1) Meeting users' needs 4 (1) The cost of software production 5 (5) Meeting deadlines 10 (1) Software performance 10 (1) Portability 11 (1) Maintenance 12 (1) Reliability 13 (3) Human--computer interaction 16 (1) A software crisis? 16 (1) A remedy -- software engineering? 17 (1) Summary 18 (3) Exercises 19 (1) Answers to self test questions 20 (1) Further reading 20 (1) Process models 21 (24) Introduction 21 (1) The components of software development 22 (2) Validation and verification 24 (1) The waterfall model 25 (3) Prototyping 28 (8) Formal methods -- the transform model 36 (1) The spiral model 37 (3) Discussion 40 (1) Summary 41 (4) Exercises 41 (1) Answers to self test questions 42 (1) Further reading 42 (3) Part B Requirements engineering Requirements analysis 45 (10) Introduction 45 (1) The notion of a requirement 46 (1) The process of eliciting requirements 47 (2) The requirements specification 49 (3) Summary 52 (3) Exercises 53 (1) Further reading 54 (1) Formal specification 55 (16) Introduction 55 (2) Formal specification in Z: an example 57 (7) The role of formal specification 64 (1) Summary 65 (6) Exercises 66 (1) Answers to self test questions 67 (1) Further reading 67 (4) Part C Design Structured programming 71 (14) Introduction 71 (1) Arguments against goto 72 (4) Arguments in favor of goto 76 (1) Selecting control structures 77 (2) What is structured programming? 79 (3) Summary 82 (3) Exercises 83 (1) Further reading 84 (1) Modularity 85 (21) Introduction 85 (1) Why modularity? 86 (2) Module size 88 (2) Complexity 90 (1) Global data is harmful 91 (1) Information hiding and abstract data types 92 (2) Coupling and cohesion 94 (1) Coupling 95 (3) Cohesion 98 (2) Shaw and Garlan's classification 100 (2) Object-oriented programming 102 (1) Summary 103 (3) Exercises 104 (1) Answer to self test question 105 (1) Further reading 105 (1) Functional decomposition 106 (10) Introduction 106 (1) An example -- a video game 107 (3) More about the method 110 (1) What about data? 111 (1) Alternative solutions 112 (1) The place of functional decomposition 113 (1) Discussion 113 (1) Summary 114 (2) Exercises 114 (1) Further reading 115 (1) Data structure design: The Michael Jackson program design method (JSP) 116 (25) Introduction 116 (1) A simple example 117 (5) Processing input files 122 (2) Physical and logical structures 124 (2) Processing several input and output streams 126 (5) Structure clashes 131 (4) Discussion and evaluation 135 (2) Summary 137 (4) Exercises 138 (1) Answer to self test question 139 (1) Further reading 140 (1) Data flow design 141 (16) Introduction 141 (1) An analogy 142 (1) First examples 143 (3) Case study -- point-of-sale terminal 146 (4) Case study -- monitoring a plant 150 (1) Rationale for the method 151 (2) Discussion 153 (2) Summary 155 (2) Exercises 155 (1) Further reading 156 (1) Object-oriented desing 157 (26) Introduction 157 (1) The features of OOP 158 (5) The aims of OO design 163 (2) Finding the classes 165 (2) Specifying the responsibilities of the classes 167 (1) Specifying the collaborators 168 (1) Other design techniques and notations 169 (1) Using the class library 169 (1) Class--responsibility--collaborator (CRC) cards 170 (1) Use-case analysis 171 (1) Creating good class hierarchies 172 (3) Is-a and has-a analysis 175 (1) Design guidelines 176 (1) Re-usable design patterns (frameworks) 176 (1) Object-oriented design methodologies 177 (1) Discussion 177 (2) Summary 179 (4) Exercises 179 (2) Answers to self test questions 181 (1) Further reading 181 (2) User interface design 183 (16) Introduction 183 (1) An interdisciplinary field 184 (1) Styles of human--computer interface 184 (2) Different perspectives on HCI 186 (1) Design principles and guidelines 187 (3) Human--computer interface design 190 (1) Task analysis 191 (2) Design evaluation 193 (1) Help systems 194 (1) Implementation tools 195 (1) Summary 196 (3) Exercises 196 (1) Answers to self test questions 197 (1) Further reading 197 (2) Formal development 199 (16) Introduction 199 (1) What is a formal method? 200 (1) Formal development: a case study 201 (7) The role of formal development 208 (1) Summary 209 (6) Exercises 210 (1) Answers to self test questions 211 (1) Further reading 211 (4) Part D Programming paradigms The programming language 215 (50) Introduction 215 (1) Design principles 216 (2) Language syntax 218 (3) Control abstractions 221 (6) Data types and strong typing 227 (11) Procedural abstraction 238 (5) Abstract data types 243 (6) Programming in the large 249 (7) The role of programming languages 256 (2) Summary 258 (7) Exercises 258 (2) Answers to self test questions 260 (4) Further reading 264 (1) Object-oriented programming (OOP) 265 (21) Introduction 265 (1) Encapsulation 265 (2) Classes 267 (1) Creating objects 268 (1) Constructor methods 269 (1) Destructor methods 270 (1) Class or static methods 270 (1) Inheritance 271 (3) Single versus multiple inheritance 274 (1) Polymorphism 274 (1) Event-driven programming 275 (1) Case study -- a complete Java program 276 (4) The role of OOP 280 (1) Summary 281 (5) Exercises 282 (2) Answers to self test questions 284 (1) Further reading 285 (1) Concurrent programming 286 (35) Introduction 286 (2) Independent threads 288 (3) Dying and killing 291 (1) The state of a thread 292 (1) Scheduling and thread priorities 293 (1) Mutual exclusion 293 (3) Thread interaction 296 (5) The producer--consumer problem 301 (11) Interruptions 312 (1) Deadlock 313 (1) Conclusions 314 (2) Summary 316 (5) Exercises 316 (2) Answers to self test questions 318 (2) Further reading 320 (1) Functional programming 321 (17) Introduction 321 (1) Procedural languages 322 (2) Characteristics of functional programming 324 (7) Other functional languages 331 (2) The role of functional programming 333 (2) Summary 335 (3) Exercises 336 (1) Answers to self test questions 337 (1) Further reading 337 (1) Logic programming 338 (17) Introduction 338 (2) Facts and rules 340 (2) Execution mechanisms 342 (6) Prolog in use 348 (2) Conclusions 350 (1) Summary 351 (4) Exercises 352 (1) Further reading 352 (3) Part E Implementation Software tools 355 (17) Introduction 355 (1) Tools for programming 356 (1) Not programming tools 357 (1) Examples of tools 357 (8) Discussion 365 (1) Application development tools 365 (4) The physical environment 369 (1) Summary 370 (2) Exercises 371 (1) Answers to self test questions 371 (1) Further reading 371 (1) Verification 372 (24) Introduction 372 (1) The nature of errors 373 (1) The problem of testing 374 (1) Black box (functional) testing 375 (2) White box (structural) testing 377 (2) Walkthroughs and inspections 379 (3) Other testing strategies 382 (1) Discussion 383 (2) System (integration) testing 385 (1) Bottom-up testing 386 (1) Top-down development 387 (3) Summary 390 (6) Exercises 391 (2) Answers to self test questions 393 (2) Further reading 395 (1) Softwar fault tolerance and exceptions 396 (22) Introduction 396 (3) Fault detection by software 399 (3) Fault detection by hardware 402 (3) Dealing with damage 405 (2) Exceptions and exception handlers 407 (3) Recovery blocks 410 (3) N-version programming 413 (1) The role of fault tolerance 414 (1) Summary 414 (4) Exercises 415 (2) Answers to self test questions 417 (1) Further reading 417 (1) Software metrics and quality assurance 418 (12) Introduction 418 (1) Complexity metrics 419 (3) Faults and reliability -- estimating bugs 422 (1) Software quality 423 (2) Quality assurance 425 (1) Process improvement 426 (1) The capability maturity model (CMM) 426 (1) Summary 427 (3) Exercises 428 (1) Answers to self test questions 429 (1) Further reading 429 (1) Project management 430 (19) Introduction 430 (1) The challenge of project management 431 (1) The ingredients of project management 431 (1) Cost estimation 432 (2) Team organization 434 (7) Selecting tools and methods 441 (1) Introducing new methods 442 (1) The project plan 442 (1) Peopleware 443 (1) Summary 444 (5) Exercises 444 (1) Further reading 445 (4) Part F Review Review 449 (14) Introduction 449 (1) Assessing and comparing development methods 450 (2) Software tools 452 (1) Software re-usability 452 (1) The current state of methods 452 (1) A single development method? 453 (1) The real world of software engineering 454 (3) The question of skill 457 (1) The future of software engineering 457 (1) Summary 458 (5) Exercises 459 (1) Further reading 460 (3) Appendix: An introduction to Java 463 (4) A.1 Variables and assignment 463 (1) A.2 Control structures 464 (1) A.3 Methods 464 (1) A.4 Summary 465 (2) Index 467
Tags from this library: No tags from this library for this title.
Star ratings
    Average rating: 0.0 (0 votes)
Holdings
Item type Current library Home library Call number Copy number Status Date due Barcode Item holds
Book Mzumbe University Main Campus Library Mzumbe University Main Campus Library 005.1 BEL (Browse shelf(Opens below)) 1 Available 0079464
Total holds: 0

Includes bibliographical references and index.


Preface xv
Part A Introduction
Software -- problems and prospects
3 (18)
Introduction
3 (1)
Meeting users' needs
4 (1)
The cost of software production
5 (5)
Meeting deadlines
10 (1)
Software performance
10 (1)
Portability
11 (1)
Maintenance
12 (1)
Reliability
13 (3)
Human--computer interaction
16 (1)
A software crisis?
16 (1)
A remedy -- software engineering?
17 (1)
Summary
18 (3)
Exercises
19 (1)
Answers to self test questions
20 (1)
Further reading
20 (1)
Process models
21 (24)
Introduction
21 (1)
The components of software development
22 (2)
Validation and verification
24 (1)
The waterfall model
25 (3)
Prototyping
28 (8)
Formal methods -- the transform model
36 (1)
The spiral model
37 (3)
Discussion
40 (1)
Summary
41 (4)
Exercises
41 (1)
Answers to self test questions
42 (1)
Further reading
42 (3)
Part B Requirements engineering
Requirements analysis
45 (10)
Introduction
45 (1)
The notion of a requirement
46 (1)
The process of eliciting requirements
47 (2)
The requirements specification
49 (3)
Summary
52 (3)
Exercises
53 (1)
Further reading
54 (1)
Formal specification
55 (16)
Introduction
55 (2)
Formal specification in Z: an example
57 (7)
The role of formal specification
64 (1)
Summary
65 (6)
Exercises
66 (1)
Answers to self test questions
67 (1)
Further reading
67 (4)
Part C Design
Structured programming
71 (14)
Introduction
71 (1)
Arguments against goto
72 (4)
Arguments in favor of goto
76 (1)
Selecting control structures
77 (2)
What is structured programming?
79 (3)
Summary
82 (3)
Exercises
83 (1)
Further reading
84 (1)
Modularity
85 (21)
Introduction
85 (1)
Why modularity?
86 (2)
Module size
88 (2)
Complexity
90 (1)
Global data is harmful
91 (1)
Information hiding and abstract data types
92 (2)
Coupling and cohesion
94 (1)
Coupling
95 (3)
Cohesion
98 (2)
Shaw and Garlan's classification
100 (2)
Object-oriented programming
102 (1)
Summary
103 (3)
Exercises
104 (1)
Answer to self test question
105 (1)
Further reading
105 (1)
Functional decomposition
106 (10)
Introduction
106 (1)
An example -- a video game
107 (3)
More about the method
110 (1)
What about data?
111 (1)
Alternative solutions
112 (1)
The place of functional decomposition
113 (1)
Discussion
113 (1)
Summary
114 (2)
Exercises
114 (1)
Further reading
115 (1)
Data structure design: The Michael Jackson program design method (JSP)
116 (25)
Introduction
116 (1)
A simple example
117 (5)
Processing input files
122 (2)
Physical and logical structures
124 (2)
Processing several input and output streams
126 (5)
Structure clashes
131 (4)
Discussion and evaluation
135 (2)
Summary
137 (4)
Exercises
138 (1)
Answer to self test question
139 (1)
Further reading
140 (1)
Data flow design
141 (16)
Introduction
141 (1)
An analogy
142 (1)
First examples
143 (3)
Case study -- point-of-sale terminal
146 (4)
Case study -- monitoring a plant
150 (1)
Rationale for the method
151 (2)
Discussion
153 (2)
Summary
155 (2)
Exercises
155 (1)
Further reading
156 (1)
Object-oriented desing
157 (26)
Introduction
157 (1)
The features of OOP
158 (5)
The aims of OO design
163 (2)
Finding the classes
165 (2)
Specifying the responsibilities of the classes
167 (1)
Specifying the collaborators
168 (1)
Other design techniques and notations
169 (1)
Using the class library
169 (1)
Class--responsibility--collaborator (CRC) cards
170 (1)
Use-case analysis
171 (1)
Creating good class hierarchies
172 (3)
Is-a and has-a analysis
175 (1)
Design guidelines
176 (1)
Re-usable design patterns (frameworks)
176 (1)
Object-oriented design methodologies
177 (1)
Discussion
177 (2)
Summary
179 (4)
Exercises
179 (2)
Answers to self test questions
181 (1)
Further reading
181 (2)
User interface design
183 (16)
Introduction
183 (1)
An interdisciplinary field
184 (1)
Styles of human--computer interface
184 (2)
Different perspectives on HCI
186 (1)
Design principles and guidelines
187 (3)
Human--computer interface design
190 (1)
Task analysis
191 (2)
Design evaluation
193 (1)
Help systems
194 (1)
Implementation tools
195 (1)
Summary
196 (3)
Exercises
196 (1)
Answers to self test questions
197 (1)
Further reading
197 (2)
Formal development
199 (16)
Introduction
199 (1)
What is a formal method?
200 (1)
Formal development: a case study
201 (7)
The role of formal development
208 (1)
Summary
209 (6)
Exercises
210 (1)
Answers to self test questions
211 (1)
Further reading
211 (4)
Part D Programming paradigms
The programming language
215 (50)
Introduction
215 (1)
Design principles
216 (2)
Language syntax
218 (3)
Control abstractions
221 (6)
Data types and strong typing
227 (11)
Procedural abstraction
238 (5)
Abstract data types
243 (6)
Programming in the large
249 (7)
The role of programming languages
256 (2)
Summary
258 (7)
Exercises
258 (2)
Answers to self test questions
260 (4)
Further reading
264 (1)
Object-oriented programming (OOP)
265 (21)
Introduction
265 (1)
Encapsulation
265 (2)
Classes
267 (1)
Creating objects
268 (1)
Constructor methods
269 (1)
Destructor methods
270 (1)
Class or static methods
270 (1)
Inheritance
271 (3)
Single versus multiple inheritance
274 (1)
Polymorphism
274 (1)
Event-driven programming
275 (1)
Case study -- a complete Java program
276 (4)
The role of OOP
280 (1)
Summary
281 (5)
Exercises
282 (2)
Answers to self test questions
284 (1)
Further reading
285 (1)
Concurrent programming
286 (35)
Introduction
286 (2)
Independent threads
288 (3)
Dying and killing
291 (1)
The state of a thread
292 (1)
Scheduling and thread priorities
293 (1)
Mutual exclusion
293 (3)
Thread interaction
296 (5)
The producer--consumer problem
301 (11)
Interruptions
312 (1)
Deadlock
313 (1)
Conclusions
314 (2)
Summary
316 (5)
Exercises
316 (2)
Answers to self test questions
318 (2)
Further reading
320 (1)
Functional programming
321 (17)
Introduction
321 (1)
Procedural languages
322 (2)
Characteristics of functional programming
324 (7)
Other functional languages
331 (2)
The role of functional programming
333 (2)
Summary
335 (3)
Exercises
336 (1)
Answers to self test questions
337 (1)
Further reading
337 (1)
Logic programming
338 (17)
Introduction
338 (2)
Facts and rules
340 (2)
Execution mechanisms
342 (6)
Prolog in use
348 (2)
Conclusions
350 (1)
Summary
351 (4)
Exercises
352 (1)
Further reading
352 (3)
Part E Implementation
Software tools
355 (17)
Introduction
355 (1)
Tools for programming
356 (1)
Not programming tools
357 (1)
Examples of tools
357 (8)
Discussion
365 (1)
Application development tools
365 (4)
The physical environment
369 (1)
Summary
370 (2)
Exercises
371 (1)
Answers to self test questions
371 (1)
Further reading
371 (1)
Verification
372 (24)
Introduction
372 (1)
The nature of errors
373 (1)
The problem of testing
374 (1)
Black box (functional) testing
375 (2)
White box (structural) testing
377 (2)
Walkthroughs and inspections
379 (3)
Other testing strategies
382 (1)
Discussion
383 (2)
System (integration) testing
385 (1)
Bottom-up testing
386 (1)
Top-down development
387 (3)
Summary
390 (6)
Exercises
391 (2)
Answers to self test questions
393 (2)
Further reading
395 (1)
Softwar fault tolerance and exceptions
396 (22)
Introduction
396 (3)
Fault detection by software
399 (3)
Fault detection by hardware
402 (3)
Dealing with damage
405 (2)
Exceptions and exception handlers
407 (3)
Recovery blocks
410 (3)
N-version programming
413 (1)
The role of fault tolerance
414 (1)
Summary
414 (4)
Exercises
415 (2)
Answers to self test questions
417 (1)
Further reading
417 (1)
Software metrics and quality assurance
418 (12)
Introduction
418 (1)
Complexity metrics
419 (3)
Faults and reliability -- estimating bugs
422 (1)
Software quality
423 (2)
Quality assurance
425 (1)
Process improvement
426 (1)
The capability maturity model (CMM)
426 (1)
Summary
427 (3)
Exercises
428 (1)
Answers to self test questions
429 (1)
Further reading
429 (1)
Project management
430 (19)
Introduction
430 (1)
The challenge of project management
431 (1)
The ingredients of project management
431 (1)
Cost estimation
432 (2)
Team organization
434 (7)
Selecting tools and methods
441 (1)
Introducing new methods
442 (1)
The project plan
442 (1)
Peopleware
443 (1)
Summary
444 (5)
Exercises
444 (1)
Further reading
445 (4)
Part F Review
Review
449 (14)
Introduction
449 (1)
Assessing and comparing development methods
450 (2)
Software tools
452 (1)
Software re-usability
452 (1)
The current state of methods
452 (1)
A single development method?
453 (1)
The real world of software engineering
454 (3)
The question of skill
457 (1)
The future of software engineering
457 (1)
Summary
458 (5)
Exercises
459 (1)
Further reading
460 (3)
Appendix: An introduction to Java 463 (4)
A.1 Variables and assignment
463 (1)
A.2 Control structures
464 (1)
A.3 Methods
464 (1)
A.4 Summary
465 (2)
Index 467

eng

There are no comments on this title.

to post a comment.

Mzumbe University Library
©2022