General Principles


Case 9: The Recycling Principle

Background Questions

  1. How could Joe reduce his work?

  2. What still needs to be done?

Joe Johnson was convinced that he had seen this design before. He knew that he was assigned to the project team as the domain expert and, incidentally, architect. He certainly never expected to become a software architect.

He had used the architecture on the white board before. In fact, it was right out of [Garlan and Shaw96], which he kept on his shelves . He looked at it now, seeking confirmation. Sure enough, there it was. Joe realized that if the domain was the same, he did not have to take a totally fresh look at the problem to design a solution. Rather than reinventing the wheel, he could use an existing design that had been available all the time.

Tasks  
  1. How is the Recycling Principle evident here?

  2. Why and how does a human aspect of software engineering fit into this case?

Case 10: Multiple Representations

Background Questions

  1. What was Jason charged to do?

  2. What did he have available to him to do it?

Jason Smith examined the five views of the software product. He intended to pull architecture from these UML constructs. In fact, every representation of software that he ever worked with had multiple insights useful in devising architecture. It all started when he read Kruchten s 4 + 1 article [Kruchten95]. The uses of multiple ways of looking at things are a staple of UML, and he was trying to bring the idea to his group .

Tasks  
  1. What practices go into building architecture?

  2. Why did Jason center on UML?

Case 11: Alternative Tasks

Background Questions

  1. What did Barbara consider when she was trying to find the best design?

  2. Why did she have these alternatives?

Barbara Count knew that there were more ways to skin a cat. She could see several ways to solve the software problem. Rather than centering on just one, she worked out several designs based on her models. Then she evaluated the designs.

Weighing quality attributes against functional attributes, she looked for the best compromise. Herb Simon once called this satisficing [Simon69]. Finally, one design emerged from her pile.

Tasks  
  1. Why did Barbara have to look at multiple designs?

  2. Why is this extra step possibly advantageous?

Case 12: Reflection

Background Questions

  1. What did the engineer examine?

  2. How did she do it?

Yael Levi balked at doing tasks she felt were unnecessary. She had vague feeling that some things required by the government s software development process were an advanced form of busywork. Some of her coworkers joked about the 18-wheeler truck that would be needed to hold all the documentation.

Yael looked at each document and reflected on how her project used it. Some were unused, some were used multiple times. She was able to go to her team leader with the results of her reflection, a list of the unused documents, thus giving her team ammunition for waivers from the customer. Now she began to look for wasted effort in the code.

Tasks  
  1. How might Yael s reflection help her team leader?

  2. What does reflection mean here?

Case 13: Fingerprints

Background Questions

  1. How did Sam find the defects in his code?

  2. Why was the code difficult to understand?

Sam Jones was debugging a chunk of code produced by the Unified Process. He was at first bewildered. The code seemed too intractable.

Then he listed things that looked like bugs he had fixed previously. Before running any more tests, he made up a suite based on his memories of recent bug finds. Running this test suite, looking for bugs with similar fingerprints, he was able to gain a lot of familiarity with the defects in the code. The software became understandable, and Sam felt better.

Tasks  
  1. What are fingerprints?

  2. How do such symptoms help to find bugs?

Case 14: Divide and Conquer

Background Questions

  1. Why did the large group meet?

  2. How were the components limited?

All the software engineers gathered in one big auditorium. Upper management introduced the new product. At first, it seemed like code the world. There appeared to be no front or back to the software, and it was complex.

Dan s team gathered the next morning with a single component to code. After they finished that component, there was another. Every component was smaller than 150,000 lines of code. Most were less than 100,000. He could see how the components fit together by thinking back to the first meeting. This kept his thinking more in order.

Tasks  
  1. Why were the components kept relatively small?

  2. Why did Dan feel better about the project?

Case 15: Finding Hidden Bugs

Background Questions

  1. What is white box testing?

  2. How does it miss defects?

Sarah Rehme looked at the pile of printouts for the code she was testing. Somebody else had already done white-box style path testing. She had nearly clean code.

So, the question was, how do you find the remaining bugs? She made up a test suite of possible weaknesses and extreme cases. These she ran, looking for the hidden defects by identifying bugs that were found by these constructs before.

Tasks  
  1. How does Sarah s test suite represent a persecution complex?

  2. Can you think of another test suite theme?

Case 16: Literacy

Background Questions

  1. What do you think made the code easy to read?

  2. Why was finding a place to put the new code easier?

Jo was surprised at how easy the code was to read. It was sparsely commented, but, unlike other code she had tried to read that had few comments, it flowed like a romance novel . She read it with pleasure .

A maintenance job came down the pipeline. Jo was able to find a logical insertion point very quickly. She added the code and passed it to Sarah for regression tests.

Tasks  
  1. What are regression tests?

  2. Why are human beings happy to see such code?




Human Aspects of Software Engineering
Human Aspects of Software Engineering (Charles River Media Computer Engineering)
ISBN: 1584503130
EAN: 2147483647
Year: 2004
Pages: 242

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net