1 |
%Assignment is conducted in pairs. Max. 8 pages. |
2 |
\documentclass[12pt, a4paper]{article} |
3 |
\usepackage[latin1]{inputenc} |
4 |
|
5 |
\begin{document} |
6 |
\pagenumbering{roman} |
7 |
\thispagestyle{empty} |
8 |
\begin{centering} |
9 |
Assignment 1 - PAC003: Software Metrics, 5p\\ |
10 |
Jonas Petersson \& Mathias Börjeson\\ |
11 |
\emph{jopd01@student.bth.se \& tb00mbo@student.bth.se}\\ |
12 |
\end{centering} |
13 |
\tableofcontents |
14 |
\newpage |
15 |
\pagenumbering{arabic} |
16 |
\section{Internal product attributes} |
17 |
\subsection{Explain how the three aspects of the software size (Length, |
18 |
Functionality and Complexity) are supplementing each other to describe |
19 |
the notion of software size.} |
20 |
%length = is a physical size of the product |
21 |
%functionality = counts the functions supplied by the product |
22 |
%complexity = measures the complexity od underlying problem, or a solution |
23 |
%utan att ha en aning om hur notationen ser ut drar jag till med följande |
24 |
These three supplements each other adding references to |
25 |
each other. None of these is useful by itself, but by |
26 |
adding them up one can get a better perspective of the |
27 |
size of the software. The length itself don't tell |
28 |
anything of how large the completed software will be, but |
29 |
together with functions and complexity one can understand |
30 |
the size of the software. Once the size of the software is |
31 |
established one may come with effort estimations, and |
32 |
based on those make a budget for what resources the |
33 |
project will need. Given these three it is possible to get |
34 |
an idea of how productive a programmer is during a time |
35 |
unit. It will not be a perfect answer, but it will be |
36 |
something that could be used to measure deviations in work |
37 |
etc. |
38 |
\subsection{Give an example where code length measure can be useful and an |
39 |
example where source code length measure is not useful.} |
40 |
Code length is useful if it is not going to be used by |
41 |
itself. One example of this could be if we are interested |
42 |
in how much work is done in a week. Then we could look at |
43 |
loc, and also take into account the complexity and the functions provided |
44 |
(like loc * complexity / functions or something similar). |
45 |
Then loc could be useful. |
46 |
|
47 |
Code length is useless if it is used by itself. For |
48 |
example the statement I am a good programmer since I |
49 |
produce more then n loc per week useless. |
50 |
\subsection{Explain what are the main ideas behind Albrecht's Function Points. |
51 |
Discuss advantages and disadvantages of the measure. Motivate.} |
52 |
%denna var bra http://www.spr.com/products/function.htm |
53 |
The main idea behind FP's are to provide language |
54 |
independent metric that can be used no matter what |
55 |
language are used. Albrech thought it was wrong that the |
56 |
only way to tell effort and cost per effort until he begun |
57 |
was in loc. A often used metric to tell productivity was |
58 |
cost/loc, and that don't tell anything since different |
59 |
languages require different number of loc's to solve the |
60 |
same problem. This cost could be lover if the language |
61 |
requires a lot of code, but the end cost could still get |
62 |
higher if the program takes longer time to complete. |
63 |
The main idea behind FP's is to give ways to |
64 |
tell cost and productivity in a way that is language |
65 |
independent. FP's does satisfy this idea. A easier |
66 |
language will get a lower cost/FP and a greater number of |
67 |
FP's/person\&month then a more complex language. |
68 |
|
69 |
The great advantage with this method is that it is (almost) truly |
70 |
language independent, while a disadvantage would be that |
71 |
if this is established in the beginning of a project and |
72 |
should be used to choose a appropriate language to use, if |
73 |
the language is unfamiliar, then these metrics can't be |
74 |
computed (like FP's/person\&month). Also this way of presenting |
75 |
the result does not take into account training and |
76 |
inexperience while showing the result. Also this should |
77 |
not be used to compare different projects or groups to se |
78 |
the difference between them since this does not take |
79 |
everything into account. Also one might be tempted to |
80 |
always use the language with the highest productivity, |
81 |
this is good in most cases, but sometimes there are other |
82 |
factors to sum in, like speed, security etc. |
83 |
\subsection{Describe structural measures presented by Fenton. (Control flow |
84 |
structure, Data flow structure, Data structure). Give an example |
85 |
where you explain how one could use the structural measures |
86 |
(specify which structural measure) to ensure the quality of the |
87 |
software product.} |
88 |
%http://sern.ucalgary.ca/~kliewerc/SENG/623/summaries.htm#sum02 var lite halvbra... det bästa jag kunde hitta dock, + F4... |
89 |
Control flow is a diagram with nodes, connected via the |
90 |
directed connections showing the possible routs the |
91 |
program (or actually the flow of data in the program) may |
92 |
take. This could be broken down to several diagrams if it |
93 |
gets to large and complex. This diagram can be used to |
94 |
decide how many test cases is needed to test the program |
95 |
completely. |
96 |
|
97 |
The data flow structure could be shown in a module-call |
98 |
graph. The module-call graph shows what modules calls what |
99 |
other modules, and thereby showing more the flow of |
100 |
information within the program. This may also be used to |
101 |
show coupling and cohesion in the program. |
102 |
|
103 |
The data structure can be measured both locally and |
104 |
globally. Locally it is interesting how much data |
105 |
structure each data item has, and globally it is the |
106 |
amount of data for the system. For the local data |
107 |
structures very little research has been done, but for the |
108 |
global there are more. |
109 |
\subsection{Draw the flow graph for the program, which |
110 |
based on the data provided by everyday measurements of the air |
111 |
temperature will calculate the maximum, minimum and the most |
112 |
commonly occurred temperature (the temperature that occurs twice |
113 |
or more) for a given month. Present program paths that has to be |
114 |
executed in order to satisfy the following testing strategies:} |
115 |
See appendix a for the diagram. |
116 |
\subsubsection{Statement coverage} |
117 |
a-b-c-d-e-f-g-h-i-j-k-l-m-n |
118 |
\subsubsection{Branch coverage} |
119 |
a-b-c-d-e-f-g-h-i-j-k-l-m-n \\ |
120 |
a-b-c-b-c-d-e-g-i-j-k-m-n \\ |
121 |
a-b-c-d-e-f-g-h-i-j-k-l-m-k-m-n \\ |
122 |
\subsubsection{Visit each loop} |
123 |
%osäker på om detta är rätt...jag har bara antagit att man skall göra ett test så att man kör alla looparna |
124 |
a-b-c-b-c-d-e-f-g-e-f-g-h-i-g-h-i-j-k-l-m-k-m-n |
125 |
\subsection{Calculate the cyclomatic complexity of your program. What does |
126 |
this figure tell you?} |
127 |
%Cyclomatic complexity (CC) = E - N + p |
128 |
%where E = the number of edges of the graph |
129 |
%N = the number of nodes of the graph |
130 |
%p = the number of connected components |
131 |
%http://www.sei.cmu.edu/str/descriptions/cyclomatic.html |
132 |
Hopefully you mean McCabe's cyclomatic complexity\\ |
133 |
% e = no of arcs | n = no of nodes |
134 |
e-n+2 | 18 - 14 + 2 = 18 - 16 = 2 \\ %men vad säger nu detta |
135 |
This tells us the number of tests we have to do to cover |
136 |
each path in the program. It could also be used to give a |
137 |
estimation of how complex the final software will be. If |
138 |
higher then 20 it should be seen as a high risk project, |
139 |
and if higher then 50 as a very high risk project. %nuffrorna kommer från http://www.sei.cmu.edu/str/descriptions/cyclomatic.html |
140 |
\section{OO metrics} |
141 |
\textbf{Measuring the use cases} |
142 |
%vi skall använda templaten, och bifoga denna... |
143 |
\subsection{Measure the use case specifications shown in Design 1 using the |
144 |
chosen use case metrics suite from the lecture} |
145 |
See appendix b. |
146 |
\subsection{Measure the use case specifications shown in Design 2 using the |
147 |
chosen use case metrics suite from the lecture} |
148 |
See appendix c. |
149 |
\subsection{Write a short section (up to ½ page) with answers to the following |
150 |
questions:} |
151 |
\begin{itemize} |
152 |
\item Which of the two systems presented can be expected to be |
153 |
more complex and why? |
154 |
\item Which of the two systems can be expected to require more |
155 |
effort to be built? Why? |
156 |
\end{itemize} |
157 |
We expect design 2 to become more complex, both since |
158 |
it has more use cases, but also since it has higher |
159 |
values (in general) on the metrics suit. |
160 |
|
161 |
We expect design 2 to require more effort to build |
162 |
since it has more use cases and more actions (more |
163 |
functionality). Also since we feel that design 2 has a |
164 |
higher complexity. Also most of the values that we can |
165 |
get out from our metrics suit are greater, both in |
166 |
total and if we count them per use case. |
167 |
|
168 |
We feel that it is hard to make good (accurate) |
169 |
estimations based on this suit only and we also feel |
170 |
that while good estimations on use case level can be |
171 |
made using this suit, it is not a good thing to try to |
172 |
make estimations of the system as a whole only based |
173 |
on this information. |
174 |
\\ \\ \textbf{Measuring designs} |
175 |
\subsection{Measure the class diagram presented in Design 1 using the CK metrics suite presented on the |
176 |
lecture.} |
177 |
See appendix b. |
178 |
\subsection{Measure the class diagram presented in Design 2 using |
179 |
the CK metrics suite presented on the lecture.} |
180 |
See appendix c. |
181 |
\subsection{Measure the code in the files .java from Design 1 with the CK metrics suite |
182 |
presented on the lecture.} |
183 |
See appendix b. |
184 |
\subsection{ Measure the code in the files .java |
185 |
from Design 2 with the CK metrics suite presented on the lecture.} |
186 |
See appendix c. |
187 |
\subsection{Write a short section (up to ½ page) with answers to the following |
188 |
questions:} |
189 |
\subsubsection{Which of the metrics could not be computed based on the class diagrams? Why?} |
190 |
The LCOM (Lack of Cohesion in Methods) metric could |
191 |
not be computed from the class diagram because LCOM metrics |
192 |
are gathered through counting the number of |
193 |
method-pairs that have no attributes in common and |
194 |
then subtract the number of pairs that do have |
195 |
common attributes. This can not be seen when looking |
196 |
at the class diagram so you have to look at the |
197 |
code to compute it. It would probably be quite handy |
198 |
with a tool that computes this metric automatically |
199 |
since it is very time consuming to do by hand. |
200 |
\subsubsection{Which of the two systems is more complex? Why?} |
201 |
Since Design2 has a lower total LCOM value (140 vs |
202 |
93) it is therefore considered more complex. |
203 |
We draw this conclusion from the lecture and slides about CK metrics, a class |
204 |
with low cohesion is ``hard to comprehend, hard to |
205 |
reuse, hard to maintain and constantly effected by |
206 |
change'' |
207 |
\subsubsection{Which method of gathering metrics - from UML designs or source |
208 |
code - is less time consuming?} |
209 |
You get a much better overview of the system when |
210 |
looking at the UML design and it is much less |
211 |
time consuming than searching through source code after source code to |
212 |
find inheritance, number of children and so on. Some |
213 |
metrics require going through source code though, so you |
214 |
can not get everything from the UML designs, although it |
215 |
would have been handy if it was possible. |
216 |
\section{External product attributes} |
217 |
\subsection{Describe how the external product attributes differ from the |
218 |
internal ones. Describe the connection between external and |
219 |
internal product attributes.} |
220 |
The internal attributes can be measured from within the |
221 |
system (like loc etc) while for the external attributes |
222 |
one must look at the finished product to se the external |
223 |
attributes. Also in general internal attributes are |
224 |
considered easier to measure (and then predict) then the |
225 |
external attributes. |
226 |
|
227 |
This is partly since the internal attributes can be |
228 |
measured more ``directly'' then the external. For |
229 |
instance loc is easy to count while usability is a lot |
230 |
harder to measure. For the internal attributes one can |
231 |
expect to be able to get absolute values while on the |
232 |
external attributes one can expect them to be less |
233 |
accurate. |
234 |
|
235 |
However several of the internal attributes (if not all) |
236 |
does affect the external attributes in a way that can |
237 |
(in most cases) be predicted. One can for instance say |
238 |
that in a specific solution if the loc is increased |
239 |
(both with comments) then one could expect to get a |
240 |
higher maintainability. Also most of the external |
241 |
attributes can be affected via the internal if the |
242 |
developers keep the external attributes in mind. |
243 |
|
244 |
In most cases (if not always) the customer of the product |
245 |
is more interested in the external attributes. Does this |
246 |
mean that the external attributes are of ``greater'' |
247 |
value to the team developing the product? |
248 |
|
249 |
Not always but in many cases. Also one should keep in |
250 |
mind that just because the external attributes are more |
251 |
important that the internal could be forgotten. |
252 |
%\subsection{Assume that you are working at the company that |
253 |
%mainly specializes on developing of web-based applications. |
254 |
%Your manager gives you an assignment to develop a software |
255 |
%quality model for the company. The model should show external |
256 |
%quality attributes, corresponding internal attributes and |
257 |
%metrics. Present the assumptions that you will use while |
258 |
%creating of the quality model. Provide an explanatory text |
259 |
%for your model.} %Jag tyckte inte om att läsa den texten;) |
260 |
\subsection{Assume that you are working at a company that |
261 |
mainly specializes in development of web-based applications. |
262 |
Your manager gives you an assignment to develop a software |
263 |
quality model for the company. The model should show external |
264 |
quality attributes, corresponding internal attributes and |
265 |
metrics. Present the assumptions that you will use while |
266 |
creating the quality model. Provide an explanatory text |
267 |
for your model.} |
268 |
Assumptions: We are using an iterative development |
269 |
process, we are using function points to measure progress, |
270 |
we are using a good configuration management tool, we are |
271 |
identifying risks before starting a project, we are, but |
272 |
not always using uml for our projects. |
273 |
|
274 |
Since we are working on web-based applications we also |
275 |
assumed that we are selling those to a customer. This made |
276 |
us make a value based quality view. This made us decide |
277 |
that usability, lernability, reusability, maintainability, reliability, |
278 |
is the most important external attributes. The internal |
279 |
attributes are not considered as important, other than to |
280 |
help up the external. Customer satisfaction does supersede |
281 |
this thou. The external attributes has the following |
282 |
impact on customer satisfaction: \\ |
283 |
\begin{tabular}{|l|l|l|} |
284 |
\hline |
285 |
Attribute & Importance & Role \\ \hline |
286 |
Usability & High & |
287 |
Decides if the customer fells that he may use\\ |
288 |
& & the product or not. The more usable the product\\ |
289 |
& & becomes, the higher value it gets (and thereby\\ |
290 |
& & higher quality). \\ \hline |
291 |
%hmmm, borde finnas nått bättre sätt... |
292 |
Learnability & High & |
293 |
The quicker the end-user can learn to use the \\ |
294 |
& & program, the quicker he feels the value of the\\ |
295 |
& & program and does need it. This makes the \\ |
296 |
& & customer feels a gain from buying our product \\ \hline |
297 |
Reusability & Medium & |
298 |
This is only important if using agreements like\\ |
299 |
& & ``avtal 90'' or similar that gives us the freedom\\ |
300 |
& & of the developed artifacts, and may use them in\\ |
301 |
& & projects to come. If the customer has no demands\\ |
302 |
& & on this, and will own the artifacts then it is \\ |
303 |
& & not taken into consideration.\\ \hline |
304 |
Maintainability & Medium & |
305 |
This is only important if we are using the \\ |
306 |
& to low & |
307 |
reusability from above. And only to support that\\ |
308 |
& & purpose. Otherwise this would not have been a \\ |
309 |
& & issue at all. \\ \hline |
310 |
Reliability & High & |
311 |
This is important since a reliable program is \\ |
312 |
& & seen as having a higher value. \\ \hline |
313 |
\end{tabular} \\ \\ |
314 |
Internal attributes are only important in order to gain |
315 |
the external attributes. |
316 |
\end{document} |