\documentclass[12pt]{article}
\usepackage{stmaryrd}
\usepackage{amsfonts, amssymb, amsmath, comment}
\usepackage{times}
\usepackage{listings}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage{url}
\usepackage{xypic}
\usepackage{epsf}
\usepackage{epsfig}
\usepackage{tikz}
\usetikzlibrary{matrix,shapes,arrows,positioning,chains}
\usepackage{tikz-uml}
\usepackage{enumitem}
\usepackage{comment}

\setlist[itemize]{nosep}
\setlist[enumerate]{nosep}

\setlength{\oddsidemargin}{-0.125in}
\setlength{\evensidemargin}{-0.125in}
\setlength{\textwidth}{7.0in}
\setlength{\textheight}{9.0in}
\setlength{\topmargin}{-0.5in}
\setlength{\headheight}{0in}
\parskip12pt
\parindent0pt
\pagestyle{fancy}
\lhead{CS 430 - Fall 2023}
\chead{CM A06}
\rhead{Due Tuesday, December 5, 11:59 PM}
\cfoot{\normalfont\medskip Copyright \copyright 2023}
%\renewcommand{\headrulewidth}{0.4pt}

\newcommand{\rmp}{\reversemarginpar\marginpar}

\providecommand{\SolutionQuestionImpedimentsToPortabilityPartA}{\vspace{3cm}}
\providecommand{\SolutionQuestionImpedimentsToPortabilityPartB}{\vspace{3cm}}
\providecommand{\SolutionQuestionImpedimentsToPortabilityPartC}{\vspace{3cm}}
\providecommand{\SolutionQuestionImpedimentsToPortabilityPartD}{\vspace{3cm}}
\providecommand{\SolutionQuestionOperatingSystemPortability}{\vspace{10cm}}
\providecommand{\SolutionQuestionEarlyEstimates}{\vspace{10cm}}
\providecommand{\SolutionQuestionSizeMetric}{\vspace{20cm}}
\providecommand{\SolutionQuestionFunctionPointsPartA}{\vspace{5cm}}
\providecommand{\SolutionQuestionFunctionPointsPartB}{\vspace{5cm}}
\providecommand{\SolutionQuestionFunctionPointsPartC}{\vspace{5cm}}
\providecommand{\SolutionQuestionCOCOMOPartA}{\vspace{2cm}}
\providecommand{\SolutionQuestionCOCOMOPartB}{\vspace{2cm}}
\providecommand{\SolutionQuestionCodeStandards}{\vspace{2cm}}
\providecommand{\SolutionQuestionOOProblems}{\vspace{6cm}}
\providecommand{\SolutionQuestionIntroductionOfClassical}{\vspace{6cm}}

\input xy
\xyoption{all}

\begin{document}

\begin{itemize}
\item{
Assignments must be completed individually.
}
\item{
No late assignments will be accepted.
}
\item{
Provide \textbf{concise} answers to the following questions.
Use \textbf{point form} whenever possible.
}
\item{
Submit your completed solutions to \textbf{Crowdmark}.
}
\end{itemize}

\begin{enumerate}

\item{ \label{QuestionImpedimentsToPortability}
Give one example of each of the following impediments to portability:
\begin{enumerate}
\item \label{QuestionImpedimentsToPortabilityPartA}
a \rmp{[1]}hardware incompatibility
\SolutionQuestionImpedimentsToPortabilityPartA
\item \label{QuestionImpedimentsToPortabilityPartB}
an \rmp{[1]}operating system incompatibility
\SolutionQuestionImpedimentsToPortabilityPartB
\item \label{QuestionImpedimentsToPortabilityPartC}
a \rmp{[1]}numerical system incompatibility
\SolutionQuestionImpedimentsToPortabilityPartC
\item \label{QuestionImpedimentsToPortabilityPartD}
a \rmp{[1]}compiler incompatibility
\SolutionQuestionImpedimentsToPortabilityPartD
\end{enumerate}
}

\item \label{QuestionOperatingSystemPortability}
Briefly \rmp{[2]}explain why developing your software product using the UNIX operating system maximizes the probability that your software product will be \textbf{portable} when it is complete.
\SolutionQuestionOperatingSystemPortability

\newpage

\item \label{QuestionEarlyEstimates}
Your \rmp{[3]}manager tells you that a client has requested a quotation for developing a software product \textbf{before the analysis workflow has been completed}.
Give some points to persuade your manager that doing this is a bad idea.
You may find \S 9.1 in the text, and Lecture 21 in the Lecture Notes, to be helpful here.
You do \textbf{not} need to cite specific statistical data in your answer.
\SolutionQuestionEarlyEstimates

\item \label{QuestionSizeMetric}
Give \rmp{[4]}reasons why \textbf{lines of code (LOC)} is not reliable as the \textbf{sole} measure of the size of a software product.
\SolutionQuestionSizeMetric

\newpage

\item{ \label{QuestionFunctionPoints}
This question is about measuring the size of a software product using \textbf{function points}, as in \S 9.2.1 of the text and Lecture 21 of the Lecture Notes.
\begin{enumerate}
\item \label{QuestionFunctionPointsPartA}
Compute \rmp{[4]}the \textbf{unadjusted function points (UFP)} for a software product having the following function point counts in conjunction with Figure 9.3 in the text (reproduced here).
Show your work.
\begin{center}
\textbf{Figure 9.3 - Table of Function Point Values}\\
\begin{tabular}{lccc}
 & Level & of & Complexity \\
\hline
Component & Simple & Average & Complex \\
\hline
Input item & 3 & 4 & 6 \\
Output item & 4 & 5 & 7 \\
Inquiry & 3 & 4 & 6 \\
Master file & 7 & 10 & 15 \\
Interface & 5 & 7 & 10 \\
\end{tabular}
\vspace{0.5cm}\\
\textbf{Function Point Counts to Use}\\
\begin{tabular}{lccc}
 & Level & of & Complexity \\
\hline
Component & Simple & Average & Complex \\
\hline
Input item & 4 & 5 & 2 \\
Output item & 8 & 6 & 2 \\
Inquiry & 9 & 7 & 1 \\
Master file & 3 & 2 & 1 \\
Interface & 3 & 4 & 3 \\
\end{tabular}
\end{center}
\SolutionQuestionFunctionPointsPartA

\newpage

\item \label{QuestionFunctionPointsPartB}
Compute \rmp{[2]}the \textbf{technical complexity factor (TCF)} using the given counts for each factor in Figure 9.4 from the text (reproduced here).
Show your work.
\begin{center}
\textbf{Figure 9.4 (augmented) - Technical factors for function point computation}\\
\begin{tabular}{ll|l}
Factor & Name & Count to Use\\
\hline
1 & Data communication & 3\\
2 & Distributed data processing & 2\\
3 & Performance criteria & 1\\
4 & Heavily utilized hardware & 2\\
5 & High transaction rates & 2\\
6 & Online data entry & 3\\
7 & End-user efficiency & 2\\
8 & Online updating & 2\\
9 & Complex computations & 2\\
10 & Reusability & 1\\
11 & Ease of installation & 2\\
12 & Ease of operation & 2\\
13 & Portability & 2\\
14 & Maintainability & 2\\
\end{tabular}
\end{center}
\SolutionQuestionFunctionPointsPartB

\item \label{QuestionFunctionPointsPartC}
Use \rmp{[2]}the results of parts \ref{QuestionFunctionPointsPartA} and \ref{QuestionFunctionPointsPartB} to compute the \textbf{function points (FP)} for the given software product.
\textbf{Round your answer up} to the next whole number of \textbf{function points}.
Show your work.
\SolutionQuestionFunctionPointsPartC
\end{enumerate}
}

\newpage

\item{ \label{QuestionCOCOMO}
This question is about estimating the effort to develop a software product using \textbf{Intermediate COCOMO}, as in \S 9.2.3 of the text and Lecture 22 of the Lecture Notes.
\begin{enumerate}
\item \label{QuestionCOCOMOPartA}
Compute \rmp{[2]}the \textbf{nominal effort} for a software product having
\begin{itemize}
\item{
\textbf{organic} development mode (with multiplier 3.3),
}
\item{
\textbf{exponent} 1.05, and
}
\item{
9500 LOC (i.e. 9.5 KDSI).
}
\end{itemize}
\textbf{Round your answer up} to the next whole number of \textbf{person-months}.
Show your work.
\SolutionQuestionCOCOMOPartA

\item \label{QuestionCOCOMOPartB}
Use \rmp{[2]}part a) to compute the \textbf{estimated effort} using the given multipliers for each factor in Figure 9.6 from the text (reproduced here).
\begin{center}
\textbf{Figure 9.6 (augmented) - Intermediate COCOMO software development effort multipliers}\\
\begin{tabular}{lcccccc|l}
 & & & Rating\\
Cost & Very & & & & Very & Extra & Rating\\
Drivers & Low & Low & Nominal & High & High & High & to Use\\
\hline
\textbf{Product Attributes} & & & & & & &\\
-Required software reliability & 0.75 & 0.88 & 1.00 & 1.15 & 1.40 & & Nominal \\
-Database size & & 0.94 & 1.00 & 1.08 & 1.16 & & High \\
-Product complexity & 0.70 & 0.85 & 1.00 & 1.15 & 1.30 & 1.65 & Low \\
\textbf{Computer Attributes} & & & & & & &\\
-Execution time constraint & & & 1.00 & 1.11 & 1.30 & 1.66 & High \\
-Main storage constraint & & & 1.00 & 1.06 & 1.21 & 1.56 & Nominal \\
-Virtual machine volatility & & 0.87 & 1.00 & 1.15 & 1.30 & & Nominal \\
-Computer turnaround time & & 0.87 & 1.00 & 1.07 & 1.15 & & Low \\
\textbf{Personnel Attributes} & & & & & & &\\
-Analyst capabilities & 1.46 & 1.19 & 1.00 & 0.86 & 0.71 & & Low \\
-Applications experience & 1.29 & 1.13 & 1.00 & 0.91 & 0.82 & & High \\
-Programmer capability & 1.42 & 1.17 & 1.00 & 0.86 & 0.70 & & Nominal \\
-Virtual machine experience & 1.21 & 1.10 & 1.00 & 0.90 & & & Low \\
-Programming language experience & 1.14 & 1.07 & 1.00 & 0.95 & & & High \\
\textbf{Project Attributes} & & & & & & &\\
-Use of modern programming practices & 1.24 & 1.10 & 1.00 & 0.91 & 0.82 & & Very High \\
-Use of software tools & 1.24 & 1.10 & 1.00 & 0.91 & 0.83 & & High \\
-Required development schedule & 1.23 & 1.08 & 1.00 & 1.04 & 1.10 & & High \\
\end{tabular}
\end{center}
\textbf{Round your answer up} to the next whole number of \textbf{person-months}.
Show your work.
\SolutionQuestionCOCOMOPartB
\end{enumerate}
}

\newpage

\item \label{QuestionCodeStandards}
When \rmp{[2]}I worked at SunLife Financial, all teams within IT adhered to strict standards with respect to how all source code was commented.
Give one reason which would have motivated the company to adopt this policy.
\SolutionQuestionCodeStandards

\item \label{QuestionOOProblems}
You \rmp{[2]}are going to announce that you have invented a new software development paradigm called \textbf{TomorrowForToday}, and that it has solved all the problems of the current Object-Oriented Paradigm.
In your promotional material for the new paradigm, you will state four advantages of your TomorrowForToday paradigm.
Which two advantages would you include in your promotional material?
Note, you only need to state what the advantages are; you do \textbf{not} need to give specific details on how these advantages are achieved.
\SolutionQuestionOOProblems

\item \label{QuestionIntroductionOfClassical}
Imagine \rmp{[4]}that it is 1970 and that you are managing a software development team.
To date, your team has used the \textbf{code-and-fix} life-cycle development model which was prevalent at the time.
State reasons which you would give to your manager to justify why it would benefit your team and its clients to adopt the newly-introduced \textbf{waterfall} life-cycle development model.
\SolutionQuestionIntroductionOfClassical
\end{enumerate}

\end{document}