Assignment4

docx

School

Arizona State University *

*We aren’t endorsed by this school

Course

515

Subject

Mechanical Engineering

Date

Feb 20, 2024

Type

docx

Pages

1

Uploaded by MasterBoar4135

Report
SER515 Foundations of Software Engineering Assignment 4 Advanced SE Module The various files (Word docs and zipfiles) asked for by each Part should be combined into one zipfile named ser515_<asurite>_Assign4.zip (no 7zip or other formats please). I would like to remind you of the importance of following instructions and submitting on time. Do not “forget” items; do not leave yourself enough time – don’t give away points! PART I: Dependencies and Build Tools (30 points) 1. JDepend is a tool that calculates Uncle Bob’s metrics for code dependencies. You can find a straightforward definition of these metrics in the tools docs directory or on this Wikipedia page (or in a lot of other blogs). Note that it talks about Afferent and Efferent coupling, the Abstraction and Instability concepts, and the derived metric Distance for comparing the Abstraction versus Instability. JDepend will calculate all of these these for you. With JDepend do the following: a. Run JDepend on the Spring PetClinic project we used for the ICA on November 16 th . You can do this at the command- line and generate the XML report by following the instructions that come with the library in the docs directory. Save the report as ser515_a4_part1_ASURITE.xml. b. Identify the Java package with the best performance and the package with the worst performance. In your Word doc under Part 1 task 1, identify these and explain why they are best and worst respectively. 2. Write a Maven or Gradle plugin (your choice) that calculates the Abstraction coupling metric for Java code. Yes JDepend does this for you (you may use JDepend as your test oracle for your unit tests), but I want you to write your own and only for this measure. Note that calculating the measure is a straightforward algorithm, and I am only asking you to do it for the .java files in a single given directory (in Java by convention source code files are put in a subdirectory structure that matches the package structure, just like javac does for compiled .class files). a. The choice of Maven versus Gradle plugin is up to you, but keep in mind Maven has a Java API while gradle plugins are written in Groovy or Kotlin. b. Create a zipfile of your plugin complete with what goes in a pom.xml or build.gradle. You should have a readme.[md| txt] for this task in the root folder of this submission that tells everything we need to know about building and using the plugin. c. Create a zipfile from the root of the source folder named ser515_a4_part1_plugin_ASURITE.zip Part II: AI and SE (20 points) Ask ChatGPT to create a JUnit test for the SimpleSquareRootFunction.java code we used for our JUnit ICA by typing in the query “Create a Junit test for the code:” + paste the contents of SimpleSquareRootFunction.java 1. Save the output to your Word file (screenshot(s)) under Part II. 2. Answer in your Word file: Did ChatGPT generate valid unit tests? Did it generate complete tests? 3. Try additional queries to try and get better results from ChatGPT. In your Word doc list the various queries you tried and give the results (screenshots again) only for the best result . You need to try a minimum of 2 additional queries, and you should achieve better results than the initial query in your best result. Explain why the results are better. 4. In your Word doc, write about 250-350 words on the impact ChatGPT is most likely to have on software engineering, and describe one benefit and one negative consequence of this technology (GenerativeAI) on the future of SE. (For reference, Part 1 is 326 words. Please do keep your answer in the specified range. Part III: Advanced SE Topic (20 points) In addition to AI, in this module we are covering a mishmash of advanced SE topics very quickly. I have listed readings from your textbook, mostly introductory and small selected sections from chapters 9 to 13. Pick any ONE of these topics from this reading list that most interests you and you feel is very important. Answer the following: 1. Find the corresponding section in the SWEBoK for the topic. Compare and contrast what Sommerville says in the specified sections and what the SWEBoK says (are they in agreement or are their significant differences – be specific) 2. Why does the topic interest you? 3. Why is it important now, and why will it be important in the future? 4. Discuss how this topic has changed over time – from pre-agile to present-day dominance of agile/lean/devops. I am looking for a) what agile says, if anything, about the topic (give references if needed), b) how significant the change is (positive or negative), and c) does the concept change in practice (how it is done and integrated into the process). I do not have a specific word count limit for Part III, but I would think you could complete it in about 500 words, which is about ½ a page. If you need more space that is OK but don’t go more than a page.
Discover more documents: Sign up today!
Unlock a world of knowledge! Explore tailored content for a richer learning experience. Here's what you'll get:
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help