\documentclass[12pt]{article}

\usepackage{hyperref}
\hypersetup{colorlinks=true,
    linkcolor=blue,
    citecolor=blue,
    filecolor=blue,
    urlcolor=blue,
    unicode=false}
\urlstyle{same}

\usepackage{enumitem,amssymb}
\newlist{todolist}{itemize}{2}
\setlist[todolist]{label=$\square$}
\usepackage{pifont}
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\newcommand{\done}{\rlap{$\square$}{\raisebox{2pt}{\large\hspace{1pt}\cmark}}%
\hspace{-2.5pt}}
\newcommand{\wontfix}{\rlap{$\square$}{\large\hspace{1pt}\xmark}}

\begin{document}

\title{SRS and CA Checklist}
\author{Spencer Smith}
\date{\today}

\maketitle

% Show an item is done by   \item[\done] Frame the problem
% Show an item will not be fixed by   \item[\wontfix] profit

\begin{itemize}

\item Follows writing checklist (full checklist provided in a separate document)
  \begin{todolist}
  \item \LaTeX{} points
  \item Structure
  \item Spelling, grammar, attention to detail
  \item Avoid low information content phrases
  \item Writing style
  \end{todolist}

\item Follows the template, all parts present
  \begin{todolist}
  \item Table of contents
  \item Pages are numbered
  \item Revision history included for major revisions
  \item Sections from template are all present
  \item Values of auxiliary constants are given (constants are used to improve
    maintainability and to increase understandability)
  \item Symbolic names are used for quantities, rather than literal values
  \end{todolist}

\item Overall qualities of documentation
  \begin{todolist}
  \item No statement is repeated at the same level of abstraction (for instance
    the scope should be more abstract than the assumptions, the goal statements
    should be more abstract than the requirements, etc.)
    \item Someone that meets the characteristics of the intended reader could
    learn what they need to know
  \item Someone that meets the characteristics of the intended reader could
    verify all of the statement made in the SRS.  That is, they do not have to
    trust the SRS authors on any information.
    \item Terminology, definitions, symbols, TMs and DDs can be given without
      derivation, except possibly for a source (citation), but all GDs and IMs
      should be derived/justified.  At least check a representative sample for
      this criteria.
    \item SRS is unambiguous.  At least check a representative sample.
    \item SRS is consistent.  At least check a representative sample.
    \item SRS is validatable.  At least check a representative sample.
    \item SRS is abstract.  At least check a representative sample.
    \item SRS is traceable.  At least check a representative sample.
    \item Literal symbols (like numbers) do not appear, instead being
      represented by SYMBOLIC\_CONSTANTS (constants are given in a table in the
      Appendix)
\end{todolist}

\item Reference Material
  \begin{todolist}
  \item All units introduced are listed (searching the document can help look
    for other units that may be present, but not listed)
    \item Units listed are each used at least once (manually searching the
      document is a quick way to check this)
    \item The names of units named after people are in lower-case
    \item All symbols used in the document are listed in the table of symbols
    \item All symbols listed in the table of symbols are used in the document
    \item All abbreviations/acronyms used in the document are listed in the
      table of abbreviations/acronyms      
    \item All abbreviations/acronyms listed in the table of
      abbreviations/acronyms are used in the document
    \end{todolist}

\item Introduction
  \begin{todolist}
  \item Introductory blurb focuses on the problem domain
  \item Introductory blurb Includes a ``roadmap''
  \item ``Purpose of the Document'' discusses the documentation's purpose, not
    the program's purpose
  \item Scope of the requirements is an abstract version of the assumptions
  \item Characteristics of the intended reader are not confused with the user
    characteristics
  \item Characteristics of the intended reader are unambiguous
  \end{todolist}

\item General System Description
  \begin{todolist}
  \item System context includes a figure showing the relation between the
    software system and external entities
  \item User characteristics are unambiguous
  \item User characteristics are specific
  \item System constraints have an appropriate rationale (a constraint without a
    reason for that constraint is likely making the SRS less abstract than it
    should be)
  \end{todolist}

\item Problem Description
  \begin{todolist}
  \item Each item of the physical system is identified and labelled
  \item Goal statements are abstract
  \item Goal statements use a minimal amount of technical language,
    understandable by non-domain experts 
  \end{todolist}

\item Solution Characteristics Specification
  \begin{todolist}
  \item Each assumption is ``atomic'' (no explicit or implicit ``ands'')
  \item Assumptions are a refinement of the scope
  \item Each assumption is referenced at least once
  \item A link exists between each chunk and anything that references it
  \item The rationale is given for assumptions that require justification
  \item The derivation of all GDs as refinements from other models is clear
  \item The derivation of all IMs as refinements from other models is clear
  \item All DD are used (referenced) by at least one other model
  \item The IMs remain abstract
  \item Input data constraints are given, with a rationale where appropriate
  \item Properties of a correct solution are given
  \end{todolist}
  
\item Functional Requirements
  \begin{todolist}
  \item IMs and (possibly) TMs and GMs are referenced as appropriate by the
    requirements.
  \item All requirements are validatable
  \item All requirements are abstract
    \item Requirements are traceable to where the required details are found in
      the document
  \end{todolist}

\item Nonfunctional Requirements
  \begin{todolist}
  \item NFRs are verifiable
  \end{todolist}

\item Likely and Unlikely changes
  \begin{todolist}
  \item Likely changes are feasible to hide in the design
  \end{todolist}

\item Traceability Matrices
  \begin{todolist}
  \item Traceability matrix is complete
  \end{todolist}

\end{itemize}

\end{document}
