Software Construction and Evolution CSSE 375: Course Review

Software Construction and Evolution CSSE 375: Course Review

Software Construction and Evolution CSSE 375: Course Review and Final Exam Preview How is our stuff like this? Or not? Steve Chenoweth Office: Moench Room F220 Phone: (812) 877-8974 Email: [email protected] 1 Agenda Course Review

And Last Day Survey Final Exam Preview With sample questions 2 Problem: Software Degradation The Original Software Design... ...Plus a few Changes Easy to Understand Increased size and complexity ...but it works (for awhile)

Components well isolated to facilitate change Isolation supports change validation Reliability of system degrades, errors creep in At some point, its unmaintainable ...effort to make the next change becomes prohibitive 3 Information Lose Due to Relentless Change Baseline Change Set 1 Change

Set 2 Change Set N Code Design Specs 4 Course Theme Art of avoiding That! Course Topics

Basic principles of software change Program understanding and tools Detecting bad smells Applying software refactoring Exception handling for fault tolerance Software maintenance Software modernization (reengineering) Software configuration management Software user and system documentation Adv. Topics: Impact Analysis, code tuning 5

Learning Outcome 1 : Practicing software change Work with your (big) junior project team to complete and deliver the junior project to the client. In doing so, demonstrate the ability to work within a team. Woah, client! 6 Learning Outcome 2: Smells, Refactor to Solve Problems Select appropriate refactoring techniques to resolve design problems smelt in the code.

7 Learning Outcome 3: Program understanding and tools Apply common construction and maintenance heuristics to enhance existing code. 8 Learning Outcome 4: Really Needed Documentation Who are these guys, on your project, anyway? Organize and develop software stakeholder documentation.

9 Learning Outcomes 5 : Basic principles of software change Construct software so that it meets delivery and deployment objectives specified by the project. Stop coding here he comes! 10 Learning Outcomes 6: Maintenance Planning and Apply impact analysis and other software source analysis to understanding existing software.

How many ducks to we have to line up here? 11 Learning Outcomes 6: Maintenance Process Apply the corrective, perfective, adaptive and preventive types of software changes and maintenance types. Wait Footprints are supposed to be depressions? 12

Learning Outcome 7: Change Impacts Apply impact analysis and other software source analysis to understanding existing software. 13 Learning Outcome 8: Exception handling for fault tolerance Use systematic exception handling and other techniques in promoting faulttolerance. Wait what letter was I on? 14 Learning Outcome 9: Reengineering Describe software modernization approaches

such as reverse engineering, reengineering, salvaging, and restructuring. It says here to connect it to the building across the street 15 Learning Outcome 10: Software configuration management Describe the ways configuration management is used in production systems. I can actually prove that rearranging these blocks is NP-hard.

16 Take the Last Day Survey on Moodle Do it today! Its worth points. Same questions as on the First Day Survey you took. About these course objectives. 17 Final Exam Preview

It also will be about these course objectives Open Book and Open Computer But of course closed to communicating with others in any way Its Wed, 5/28, 8 AM, in M111 (Sec 2) and M115 (Sec 3) Not planned to last all 4 hours

Including Twitter and ear twitching But you can take all 4 hours if you like Emphasis on material since Exam 1 18 Final Exam Preview, cntd There will be some programs to analyze The examples will be short, ones you can review at the time, before

writing your answer. Like on the last page But also some short essay questions, like: Why is reengineering always more difficult than you think it will be? Give 3 reasons and explain each in a sentence. Why did our guest speaker, Tom Harrison, believe that continuous delivery is only a part of how to make things happen fast on a project?

Suppose your boss wants you to write a lot of user documentation, but you dont think its necessary. What is the best plan to resolve this issue, factually, and why? When a software item will interface with another software or hardware item, a change to either item can affect the other. How does the configuration management process deal with this issue? Fowlers big refactorings include teasing apart inheritance. When exactly would you take time to do this, and when would you not? Which of Lehmans Laws fits closest with the way maintenance projects usually are funded? 19 Final Exam Preview, cntd More sample short essay questions:

Legacy code is defined by Feathers as code without unit tests. Explain a worst case scenario, when it would be more difficult to create unit tests than it would be to live with code that lacks these tests. Sprouting and wrapping are both recommended by Feathers. What is the key factor that would make you choose one of these over the other? Test harnesses are used not only for functional testing but also for stability (stress) testing. What would be different about the test setup for these two different kinds of testing? Describe the key advantages and disadvantages of doing exception handling as Java does, with trycatch blocks.

Defensive programming can include adding assertions for conditions which should always be true. Why might you want to have these also active when your system is in production? Code tuning has its greatest value when applied to what kind of code? Fowler is all about removing local variables as a part of refactoring. Describe the most important situation you can think of, when you would not want to do this, and explain why. 20 Sample program to analyze: In the program extract below, from twain.c in the Open Source program The Gimp, do a backward slice, in your head, on each instance of layerType being set, then write a general description of How layerType gets set in this function: int beginTransferCallback(pTW_IMAGEINFO imageInfo, void *clientData) { int imageType, layerType;

pClientDataStruct theClientData = g_new (ClientDataStruct, 1); #ifdef _DEBUG logBegin(imageInfo, clientData); #endif /* Decide on the image type */ switch (imageInfo->PixelType) { case TWPT_BW: case TWPT_GRAY: /* Set up the image and layer types */ imageType = GIMP_GRAY; layerType = GIMP_GRAY_IMAGE; break; Continues in next column case TWPT_RGB: /* Set up the image and layer types */ imageType = GIMP_RGB; layerType = GIMP_RGB_IMAGE; break;

case TWPT_PALETTE: /* Get the palette data */ theClientData->paletteData = g_new (TW_PALETTE8, 1); twSession->twRC = callDSM(APP_IDENTITY(twSession), DS_IDENTITY(twSession), DG_IMAGE, DAT_PALETTE8, MSG_GET, (TW_MEMREF) theClientData>paletteData); if (twSession->twRC != TWRC_SUCCESS) return FALSE; switch (theClientData->paletteData->PaletteType) { case TWPA_RGB: /* Set up the image and layer types */ imageType = GIMP_RGB; layerType = GIMP_RGB_IMAGE; break; 21

Recently Viewed Presentations

  • I. INTRODUCERE Curs 1  Noiuni introductive, terminologie, clasificri,

    I. INTRODUCERE Curs 1 Noiuni introductive, terminologie, clasificri,

    numărătoarele şi temporizatoarele nu pot avea acelaşi nume (în majoritatea PLC) 51 Timers Temporizatoare "un timp predefinit înainte de a face ceva" Temporizator On-Delay Temporizator Off-Delay Temporizator cu reţinere sau cu acumulare porneşte "un timp de întârziere" înainte de a...
  • Background radiation and half life - Don't Trust Atoms

    Background radiation and half life - Don't Trust Atoms

    Calculating background radiation. Boardworks GCSE Science: Physics . Radioactivity. Teacher notes. This twelve-stage interactive animation explains more about the sources of background radiation, and how to calculate your annual dose of radiation.
  • Looking Homeward The Asheville-Buncombe County 10-Year Plan to

    Looking Homeward The Asheville-Buncombe County 10-Year Plan to

    Homeward Bound restructures housing case management staff to pilot program taking advantage of priority. First client moves into public housing unit one month later. ... Changeover from program to system approach to ending homelessness. Next Steps.
  • Congress of Vienna - Sarah Smith

    Congress of Vienna - Sarah Smith

    Authoritarian governments were necessary to protect society from the lower elements of human behavior which were easily released in a democratic system. Metternich despised anticlericalism of the Enlightenment and French Revolution and believed Christian morality was vital against radical change
  • Theatre in Context

    Theatre in Context

    The works of John Osborne, Arnold Wesker were all so described. It is doubtful if the term derives in any way from Wesker's play The Kitchen because this was first presented in a production without décor in 1958, and not...


    SPEAK Trees & Symbolism Trees & Symbolism SPEAK Trees & Symbolism Trees & Symbolism SYMBOL: an object that stands for or represents something else (usually an abstract idea) As you examine the following works of art, consider what emotion each...
  • Programming Steps -

    Programming Steps -

    School Violence Awareness What is Bullying? Bullying The victim is being bullied when exposed, repeatedly and over time, to negative actions on the part of one or more other students Negative actions include intentionally inflicting, or attempting to inflict, injury...
  • Folie 1 - Bundesheer

    Folie 1 - Bundesheer

    Wehrpflicht Aussetzung der Wehrpflicht als Grundlage für die weitere ressortseitige Positionierung." Modellbearbeitung - Aufträge zur Umsetzung der Vorgaben HBM Umsetzung des Auftrages HBM an ChGStb am 11. November 2010 mit GZ S91940/3-S II/2010 durch ChGStb: „GStb wurde mit der Bearbeitung...