CSC 308 Lecture Notes Week 10, Part 2
Software Process Assessment
The Future of Software Engineering
"CMM does not currently address expertise in particular application domains, advocate specific software technologies, or suggest how to select, hire, motivate, and retain competent people."technologists view CMM of limited utility when it comes to assessing what it really takes to build quality software "in the trenches".
-- The Future of Software Engineering (Fisher's Version) --
Apprentice: Good morning Gene, what shall we work on today?
Fisher: SlickQueryProcessor
Apprentice: ....... OK, module SlickQueryProcessor has been loaded and analyzed. I see from the development log that the functional testing phase is next for this module, is that correct?
Fisher: Yes.
Apprentice: Shall I generate some test cases for you?
Fisher: Yes.
Apprentice: While generating test cases, I noticed the following problem in the postcondition for method ValidateQuery:Given that variable i is being used as a list index, it should not assume the value 0. I suggest:forall (i | i >= 0 and i <= #response_list) ValidData(response_list[i])Shall I make the fix?forall (i | i >= 1 and i <= #response_list) ValidData(response_list[i])
Fisher: Yes.
Apprentice: Done. Shall I now continue with test case generation?
Fisher: Yes.
Apprentice: ... OK, test cases generated. Would you like to review the test cases or shall I run them now?
Fisher: Run.
Apprentice: Here is a summary of the test execution results:Shall we debug the code that caused the failure in Test Case 8?Test Case 1: Passed. Test Case 2: Passed. ... Test Case 8: Failed. ...
Fisher: Yes.
Apprentice: Starting debugger on SlickQueryProcessor.main
Fisher: (Examines code and thinks a bit and then issues the following debugging commands).Apprentice: I recognize the code pattern in method SlickQueryProcesor.enter. It's a version of hash table entry using out-of-table overflow. Based on my pattern matching analysis, the problem seems to be with how you're splicing into the bucket. I suggest you use the library version of hashing in class AbstractTable. Shall in install the change and rerun run the tests?set breakpoint in SlickQueryProcesor.enter run
Fisher: Yes.
Apprentice: ... Change installed. ... Recompilation complete. ... Rerunning tests. ... All tests passed.
Is there more work to do today?
Fisher: No. I'll go home early.
AP System: Good morning Gene. I see from the development log that the specs for the Intelligent Calendar tool are done. Shall I generate the code and test it?
Fisher: Yes.
AP System: Complete code generation will take about 20 minutes. I suggest you go have a cup of coffee.
Fisher: OK.
AP System: During the specification analysis phase of code generation, I found and fixed the following apparent specification errors:
...
Do you want to review the fixes or shall I proceed with the code generation and testing?
Fisher: Proceed.
AP System: Code generation and testing will take about 2 hours. I suggest you go home early today and check back tomorrow.
Fisher: OK, see ya.
Automatic Software Engineer: Good morning Gene. I see from our interaction log that it has been a while since we last communicated. Over the last two months, I have met with customers, analyzed their requirements, and developed the specification for the "Analyze the Meaning of Life as We Know It" system. I am now ready to generate the code and test it. Shall I?
Fisher: Sure.
Automatic Software Engineer: Complete code generation and exhaustive testing will take about 48 hours. I suggest you go home and do whatever it is you do these days.
Fisher: OK, ciao.