CSCI 8700: Software Specification and Design

Fall 2020

Class format: Asynchronous remote
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)
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)


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

How this Online Course Works

This course is being offered as asynchronous online. As such there will be no Zoom lectures. 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. Beginning the week of 8/31, at the start of the week I will post videos on the Canvas home page with a preview of what to look for that week in the lecture slides and submissions.


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

Exam dates

  1. Midterm - October 14
  2. Final - December 14

Exams will be take-home. The dates above are the expected submission dates.


In place of a big semester-long team-based project, for this semester, you will work on 3 small projects. Project 1 will focus on requirements engineering tools. Project 2 will focus on understanding software architecture. Project 3 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.


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.