Software Engineering Processes

In this module we will begin studying software engineering by looing at the factors that brought the field into existence, and examining the impetus and growth of software engineering processes that provide a framework for how software is designed, created, tested, and released.


Introduction to Software Engineering

In this first lecture we will begin studying the foundations of software engineering, and exploring the factors that brought the field into existence.

One of the surprising things we will discover is that, while software engineering certainly includes writing code, it calls on a number of technical and non-technical disciplines.

The purpose of this first lecture is to survey the field of software engineering to motivate the individual topics that we will discuss in more depth during the course.

Class Presentation

Demo code

  • Java program to demonstrate creation of JUnit tests and JavaDoc.

Recommended Readings

Models of Software Engineering Processes

In this lecture we will begin looking at specific types of software engineering process models that have been developed to guide product development.

Class Presentation

Recommended Readings

The readings in this section provide a basic understanding of the material covered in this lecture.

Additional Readings

The readings in this section provide additional information or more in-depth coverage of the material covered in this lecture.

Focus on Agile Processes

Class Presentation

Recommended Readings

The readings in this section provide a basic understanding of the material covered in this lecture.

Additional Readings

The readings in this section provide additional information or more in-depth coverage of the material covered in this lecture.

Online Courses

These online courses will give you hands-on experience with Scrum and XP. NEU students, faculty, and staff can access Linked-In Learning (formerly Linda.com) courses at no cost by logging in with your myNEU user name and password. See the login information page at the NEU Library website.

Focus on Open Source Processes

Class Presentation

Recommended Readings

The readings in this section provide a basic understanding of the material covered in this lecture.

Additional Readings

The readings in this section provide additional information or more in-depth coverage of the material covered in this lecture.

Online Courses

  • DUE DATE: Thu, Feb 4 by 11:59:59pm

Initial Assignment

The purpose of this assignment is to make sure that your Java development environment is set up and you are able to check out and check in code to a GitHub repository. For this exercise, you will need the ability to create JUnit test functions, and the capability to generate JavaDoc from your Java classes.

Create a class ContentInfo in the default package that provides information about content specified by a URL. Also create a class ContentInfoTest that implements JUnit tests for the ContentInfo class. Be sure to provide complete JavaDoc documentation for both classes, and include any helpful documentation within methods that aid in understanding their implemetation.

ContentInfo

This public class provides information about content specified by a URL by implementing these public constructors and methods.

Returns Parameters Exceptions Description
ContentInfo constructor URL
the content location
NullPointerException
if URL null
Create an instance with the content URL.
ContentInfo constructor String
the content location
MalformedURLException
if invalid url string
Create an instance with a string representing the content URL.
getContentLength int IOException
if content unavailable
Get the length of this content in bytes.
getContentType String IOException
if content unavailable
Gets the content type for this content (type/subtype).
getImageSize Dimension IllegalStateException
if not image content
IOException
if content unavailable
Gets the dimension for image content.
getLastModified Date IOException
if content unavailable
Gets the date that this content was last modified.
getLineCount int IllegalStateException
if not text content
IOException
if content unavailable
Gets the line count for text content.
getLocation String Get the location for this content.
isAvailable boolean Determines whether the content is available.
isImage boolean IOException
if content unavailable
Determines whether the content is an image.
isText boolean IOException
if content unavailable
Determines whether the content is text.

Notes

  • IllegalStateException and NullPointerException are unchecked and so do not need to be declared, but they must be documented.
  • See java.net.URL for information about functionality for accessing content information.
  • See java.net.URLConnection for information about connecting to content through a URL.
  • See java.util.Date for information about creating dates from long time values.
  • See javax.imageio.ImageIO for information about getting image width and height from an image input stream.

Special note on getting a URL connection

Create a private getConnection() method that returns a URLConnection for the instance URL, or throws a IOException if the content is not available, Use this method to implement the public methods.

If the type of URLConnection returned by URL.connect() is HttpURLConnection, special handling is required for HTTP/HTTPS protocols. For other protocols, the URLConnection can be returned.

For a HttpURLConnection, getting the connection does not guarantee that the content exists. Instead, the HttpURLConnection.setRequestMethod() should be called with "GET", and then the connection response code requested. The HTTP server responds with HttpURLConnection.HTTP_OK if the content is available. Otherwise the getConnection() method throws a IOException.

An optimization is to add a boolean parameter to getConnection(). If true, use the request method "GET" because the content is required, or "HEAD" if false because the method is only being used to test for the existence of the content. This saves fetching the content if it is not required.

ContentInfoTest

This public class in the default package to provide JUnit tests for ContentInfo. The number of test functions is up to each student. For the purposes of testing lastModifiedDate(), it is sufficient to test the year.

Please use the data files located in the following web directory:

https://www.ccis.northeastern.edu/home/pgust/classes/cs5500/2021/Spring/resources/assignment-1/
  • 12lines.pdf
    size: 12811, type: application/pdf, mod date: 2021
  • 12lines.txt
    size: 649, type: text/plain, lines: 12, mod date: 2021
  • 500x200.png
    size: 68643, type: image/png, width: 500, height: 200, mod date: 2021

There are a number of JUnit tutorials online. If possible, use JUnit4 because it is simpler, and more tutorial documentation is available than for later versions. A fairly good JUnit tutorial is available on TutorialsPoint. Most Java IDEs including Eclipse and JetBrains IntelliJ support creating JUnit tests.

JavaDoc

Generate standard JavaDoc for all public, package, protected, and private members and methods of both classes and for the classes themselves into a "docs" subdirectory. Make sure that JavaDoc does not report any errors such as undocumented parameters or undocumented exceptions thrown. Inspect your JavaDoc in a web browser starting with the generated "index.html" to make sure it is complete.

You should already be familiar with JavaDoc style of commenting from previous courses such as CS 5004 (Align), CS 5010 (MS), or from your previous course work. For good examples, see the source code for core Java classes. There is a brief tutorial available on TutorialsPoint.

Staffing

This is an individual assignment, so you will be working on your own.

Turning in the assignment

Turn your assignment in by uploading the two class source files you created and the "docs" directory to your 2021SPCS5500SB/assignment-1-khoury_id repository. The graders will download and run your JUnit tests, and also examine your JavaDoc. Once you have checked in your code, please verify that what you checked in is actually in the repository to avoid delays in grading your assignment.

You are welcome to check in intermediate versions during development as a backup to what is on your computer. Only the final version will be graded.

Grading Rubric

This assignment is worth 100 points, allocated as follows

  • 25 pts: Correct implementation of ContentInfo constructors and methods. All methods and constructors must perform their required functionality for the specified content URL. They must also throw the expected exceptions for invalid content URLs or for content that does not exist or whose type does not apply (e.g. calling getLineCount() for non-text content type). The methods should not assume that the content specified by the URL exist or that its type remains the the same.
  • 25 pts: Implementation of ContentInfoTest unit tests that confirm the correct operation of the ContentInfo constructors and methods, and handling of expected and unexpected exceptions thrown. You may construct unit tests that test each constructor and method of the class for various content types. Some IDEs can generate unit tests methods for each method of the class being tested. You may instead construct unit tests that tests all methods for a given test content type or error condition (e.g. not found, malformed URL, no server, etc.)
  • 25 pts: Complete and correct JavaDoc comments in the source code of the two classes, as determined by reading the comments. The class comment blocks must describe the class, the author and the date using @author and @since tags. The constructor and method comments must include a description, parameters, return value, and exceptions thrown (specified checked and significant unchecked exceptions).
  • 25 pts: Correctly generated JavaDoc structure in the "docs" directory that display correctly when viewed in a web browser, starting with the "index.html" file.
  • DUE DATE: Thu, Feb 11 by 11:59:59pm

Reading a Professional Paper

In a quickly evolving field like Software Engineering, it is important to read papers about current topics in the professional literature, as well as papers where key concepts and methods were first presented. The purpose of this assignment is to give you experience reading professional literature and to provide you with some techniques that will help you get more out of the experience.

One the "Readings" page of this website is an article by Andrea G. Parker entitled, "How to Read a Research Paper". In it, Prof. Parker provides guidelines on how to read a paper, and describes a technique for taking notes by creating as a short, one-page review of the paper.

The assignment

In this assignment, you will apply Prof. Parker's guidelines, and create a one-page review of one of the papers in the "Recommended Readings" for lecture 2:

  • Phillip A. Laplante,Colin J. Neill, "The Demise of the Waterfall Model Is Imminent' and Other Urban Myths", ACM Queue, vol. 1, issue 10, February 24, 2004.
  • Following Prof. Parker's suggestions, your one-page paper will include:

    • a one or two sentence summary of the paper.
    • a deeper, more extensive outline of the main points of the paper, including for example assumptions made, arguments presented, data analyzed, conclusions drawn, and any limitations or extensions for the ideas in the paper.
    • your opinion of the paper; primarily, the quality of the ideas and its potential impact.

    Here is an example of a research paper review that follows these guidelines. The research paper is in the area of computer and operating systems, but provides an example of following these guidelines.

    Staffing

    This is an individual assignment, so you will be working on your own.

    Submitting the assignment

    Submit your review as a one-page PDF file, "assignment-2.pdf" to your 2021SPCS5500SB/assignment-2-khoury_id repository.

    Grading Rubric

    This assignment is worth 100 points, allocated as follows

    • 10 pts: Creation of a one or two sentence summary of the paper that adequately captures the overall theme of the article. Provide a citation for the article at the top of the page so that you can locate it again later, including a URL or a text link if available.
    • 40 pts: Outline of the paper with sufficient detail to capture assumptions made, arguments presented, data analyzed, and conclusions drawn to inform another reader about the essential points of the article.
    • 40 pts: Your opinion of the paper in sufficient depth that another reader will understand your perspective on the paper and the reasons for your conclusions about it.
    • 10 pts: Overall quality of formatting, including the use of headings, and how easy your paper is to read. Includes proper use of punctuation and spelling.

    For further study

    Also on the "Readings" page of this website is an article entitled, "Using the NEU Library" that describes how to access the many online resources, including books and articles, from major professional publications. As NEU students, you have full access to the library's many physical and online resources.

    Try using the NEU Scholar OneSearch portal to locate a "Letter" that makes reference to this article. The letter is in vol. 2 issue 2 of ACM Queue. Included is the authors' response to the letter. You will need to log in to the portal using your NEU id and password to access the letter. Read this letter and response once you have written your own review.