Software engineering : a programming approach / Douglas Bell.
Material type: TextPublication details: Harlow : Addison Wesley, c2000.Edition: 3rd edDescription: xvi, 470 p. : ill. ; 23 cmISBN:- 0201648563
- 005.1 BEL
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 |
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.