CSCI 8700: Software Specification and Design

Fall 2021

Meeting time: W 6:00-8:40
Classroom: PKI 263
Instructor: Dr. Harvey Siy
Office: PKI 281B
Phone: (402)554-2834
Email: hsiy at unomaha dot edu
Office Hours: By appointment (call or email ahead)
URL: https://hsiy.github.io
Prerequisites: CSCI 4830/8836 (Introduction to Software Engineering),
assumes a working understanding of SDLC, teamwork, project tracking, prototyping, requirements, design, testing and version control.
 
Textbook: Requirements Engineering: Fundamentals, Principles and Techniques by Pohl, 2010. Companion website
Textbook: Requirements Engineering: from System Goals to UML Models to Software Specifications by Lamsweerde, 2009. Companion website
Optional: Software Engineering (10th edition) by Ian Sommerville, Addison-Wesley, 2010. companion website, link to 9th edition, link to 8th Edition
Optional: Object-Oriented Software Engineering (3rd edition) by Bruegge and Dutoit, Prentice Hall 2009. Companion website
Optional: Software Requirements (3rd edition) by Wiegers and Beatty, 2013. Companion website
Optional: Requirements Engineering by Kotonya and Sommerville, 1998.
Optional: The Architecture of Open Source Applications (Vols 1-2) by Brown and Wilson. Online
Optional: Documenting Software Architectures: Views and Beyond (2nd ed) by Clements, Bachmann, Bass, Garlan, et al., 2003. (Available on Safari Books through UNO Library)

Description

The early stages in a software engineering project are often dominated by one question, what should we build? To address this question, software engineers engage in two activities, requirements engineering, which produces an organized body of necessary information about the product to be built, and architectural design, which produces a blueprint for how an acceptable product might be realized in software. Though distinct, these activities are typically intertwined (the so-called "twin peaks"). Architecture cannot exist without requirements, and some information needed by requirements engineering may not be obtainable without knowledge of the architecture.

This course is a continuation of the study of software engineering with an emphasis on these early activities of software development. Practical processes of requirements engineering and architectural design are included, as well as formal specifications of software systems. Other topics such as relevant metrics and support tools are also discussed.

Learning Objectives

On completion of this course, students will be able to:

Course content:

  1. Socio-technical context
  2. Requirements engineering process
  3. Requirements modeling (informal and formal notations)
  4. Non-functional requirements and quality attributes
  5. Architecturally significant requirements
  6. Architectural views

Instructional Approach

This course is being offered in person. Lectures will be flipped, that is, lecture slides and videos, and homeworks are provided in advance of the meeting. The class meeting time itself will be used for discussion and recap, and to give you time to work on the project and paper as needed. The Canvas home page is your guide to the activities expected for each week. The posted slides on the homepage will be the primary source of lecture information. Rather than reading off of the information that are in the slides, my videos will give a preview of what to look for in the lecture slides.

Evaluation

Midterm and Final Exams 40%
Project 20%
Research Paper 20%
Homeworks/Exercises: 20%

Exam dates

  1. Midterm - October 13
  2. Final - December 15

Project

In place of a big semester-long team-based project, for this semester, you will work on 4 small projects. Project 1 will focus on requirements specification. Project 2 will focus on tool support for requirements engineering and/or architecture design. Project 3 will focus on understanding software architecture. Project 4 will focus on formal specification.

Research paper

Students are required to submit a research paper that consists of a mini-literature review of an area in requirements engineering or software architecture research.

Homeworks/Exercises

There will be several exercises which will put into practice the principles and techniques from the course lectures.

Academic Integrity

Cheating will not be tolerated for project assignments, exams and other assignments. For formal policies about cheating and plagiarism, consult the UNO Student Policies and Department of Computer Science Policies and Procedures.