Software Engineering
Software Engineering
Nature of Software
What to do?
• Nothing, if the system works fine…
• But, as time passes, legacy systems evolve for one or more of
the following reasons:
– adapt to meet the needs of new computing environments or
technology
– enhance to implement new business requirements
– extend to make it interoperable with other more modern systems
or databases
– re-architected to make it viable within a evolving computing
environment.
• Hence legacy system should be reengineered
– Devise methodologies that are founded on the notion of evolution
• 4 broad categories of software are evolving to
dominate the industry:
– Webapps
– Mobile applications
– Cloud computing
– Product Line software
Key Concepts
• Realities behind the software development
– It follows that a concerted effort should be made
to understand the problem before a software
solution is developed.
– It follows that design becomes a pivotal activity.
– It follows that software should exhibit high quality.
– It follows that software should be maintainable
• Software in all of its forms and across all of its
application domains should be engineered.
• Defining Software Engineering as proposed by IEEE
– (1) The application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of
software; that is, the application of engineering to software.
(2) The study of approaches as in (1).
– What about other approaches?
Adaptability and Agility
– Layered technology
• Any engineering approach must rest on an organizational
commitment to quality
• Process
– glue that holds the technology layers together & enables rational
and timely development of computer software
– Forms the basis for management control of software projects and
establishes the context in which
• technical methods are applied
• Work products are produced
• Milestones are establishes
• Quality is ensured &
• Change is properly managed
• Methods encompass a broad array of tasks that include
– Communication
– Requirements analysis
– Design modeling
– Program construction
– Testing &
– Support
• Rely on a set of basic principles that govern each area of the
technology and include modeling activities and other descriptive
techniques.
• Tools provide automated or semi-automated support for the
process and methods
The Software Process
2. A staged model
Continuous
CMMI meta-
model
• Level 0: Incomplete –process area either not performed or not achieving
all goals and objectives defined by CMMI for level 1 capability
• Level 1: Performed – all the specific goals of process area are satisfied,
work tasks carried out to produce defined work products
State diagram
indicates what
actions are taken
A state is any as a consequence
observable of a particular
mode of event
behavior
• Analysis patterns
– Certain things reoccur across all objects within a specific
application domain: called Analysis patterns
– represent something (class, function or behavior) within the
application domain
– reused when modeling many applications
– Geyer-Schulz and Hahsler suggest 2 benefits
• Information about an analysis pattern presented in a standard template
– Pattern Name: a descriptor that captures the essence of the pattern; the
descriptor is used within the analysis model when reference is made to the
pattern
– Intent:
– Motivation
– Forces and Context: a description of external issues (forces); External issues
encompass business-related subjects, external technical constraints, and people-
related matters
– Solution
– Consequences
– Design: discusses how the analysis pattern can be achieved through the use of
known design patterns
– Known uses
– Related patterns
• Negotiating Requirements
– Boehm defines a set of negotiation activities at the beginning of
each software process iteration
• Identification of the system or subsystem’s key stakeholders.
• Determination of the stakeholders’ “win conditions.”
• Negotiation of the stakeholders’ win conditions to reconcile them into a
set of win-win conditions for all concerned (including the software team).
– Handshaking
• allows detailed requirements to be delegated to software teams.
• The teams need to elicit requirements from customers (e.g., product
users and domain experts), thereby improving product acceptance
– “A compromise is the art of dividing the cake in such a way that
everyone believes that he has the biggest piece”
• VALIDATING REQUIREMENTS
–To examine for inconsistencies, omissions and ambiguity
–A review of the requirements model addresses the following questions:
• Is each requirement consistent with the overall objectives for the system or product?
• Have all requirements been specified at the proper level of abstraction?
• That is, do some requirements provide a level of technical detail that is inappropriate at this stage?
• Is the requirement really necessary or does it represent an add-on feature that may not be essential
to the objective of the system?
• Is each requirement bounded and unambiguous?
• Does each requirement have attribution? That is, is a source (generally, a specific individual) noted
for each requirement?
• Do any requirements conflict with other requirements?
• Is each requirement achievable in the technical environment that will house the system or product?
• Is each requirement testable, once implemented?
• Does the requirements model properly reflect the information, function, and behavior of the system
to be built?
• Has the requirements model been “partitioned” in a way that exposes progressively more detailed
information about the system?
User Satisfaction…?
• A Software Engineering is walking along a beach and finds a lamp.
• He rubs the lamp, and a genie appears and says
– “I am the most powerful genie in the world. I can grant you any wish, but only
one wish.”
• The Software Engineer pulls out a map, points to it and says,
– I want peace in the Middle East.
• The genie responds,
– Gee, I don’t know. Those people have been fighting for millennia. I can do just
about anything, but this is likely beyond my limits.
• The S/w Engineer then says,
– Well, I am a Project Manager, and my application have lots of users. Please
make all my users satisfied with my software and let them ask for sensible
changes.
• At which point the genie responds, Um, let me see that map again
Functional vs Non-Functional Requirements
Functional Non-functional
Any requirement which specifies what the Any requirement which specifies how the system
system should do; performs a certain function;
providing particular service to the user. how a system should behave;
generally specify the system’s quality attributes
or characteristics
e.g. e.g.
“Send email when a new customer signs “Modified data in a database should be updated
up”; for all users accessing it within 2 seconds”
“Open a new account”
Typical Functional Requirements include: Typical non-functional requirements include:
Business Rules; Performance – for example: response time,
Transaction corrections, adjustments and throughput, utilization, static volumetric;
cancellations; Scalability; Capacity; Availability; Reliability
Administrative functions; Recoverability; Maintainability; Serviceability;
Authentication; Authorization levels; Security; Regulatory; Manageability
Audit Tracking; External Interfaces; Environmental; Data Integrity;
Certification Requirements; Usability; Interoperability
Reporting Requirements; Historical Data;
Legal or Regulatory Requirements
• Business Rules
– Example: License Inspection Project
– Rule 1:
• A Driver of a Vehicle must have a valid Driver's License.
– Rule 2:
• A Driver's License must be considered valid if all of the following are
true:
– The Driver's License belongs to the Driver.
– The Expiry Date of the Driver's License is later than the Inspection Date.
– The physical proof is produced within 24 hours of the Inspection Date.
• Possible business requirements to enforce these rules:
– Police officer to inspect driver's license.
– Scanner to read driver's license for validity.
– Card reader for driver to insert driver's license when driving through a
checkpoint.
• Exercise:
• Construct Business Rules for Order Entry
System (Hint: Email Address)
Analysis Model – first technical
representation of the system
Requirements Analysis provides the
• Requirements Analysis software designer with a representation
– Build models that depict of information, function and behavior
that can be translated to architectural,
• user scenarios,
interface and component-level designs.
• functional activities,
• problem classes and their relationships,
• System and class behavior &
• The flow of data as it is transformed
– Throughout analysis modeling, software engineer’s focus is on what
and not how Software engineers perform
• What objects does the system manipulate? analysis modeling and create
an analysis model to provide
• What functions must the system perform? information of 'what'
• What behaviors does the system exhibit? software should do instead
• What interfaces are defined? & of 'how' to fulfill the
requirements in software.
• What constraints apply?
• Analysis model must achieve 3 primary objectives:
– To describe what the customer requires
– To establish a basis for the creation of a software design
– To define a set of requirements that can be validated once the software is built
• Analysis rules of Thumb (Arlow and Neustadt)
– The model should focus on requirements that are visible within the problem or
business domain
– Each element of the analysis model should add to an overall
understanding of software requirements and provide insight into
the information domain, function, and behavior of the
system
– Delay consideration of infrastructure
& other non-functional models until design
– Minimize coupling throughout the system
– Be certain that analysis model provides value to all stakeholders
– Keep the mode as simple as it can be
• Domain Analysis
– How are analysis patterns recognized in the first place?
– Who defines them, categorizes them, and readies them for use on subsequent
projects?
– Firesmith describes “Software domain analysis is the identification, analysis,
and specification of common requirements from a specific application domain,
typically for reuse on multiple projects within that application domain . . .
[Object-oriented domain analysis is] the identification, analysis, and
specification of common, reusable capabilities within a specific application
domain, in terms of common objects, classes, subassemblies, and frameworks”.
• Analysis Modeling approaches
– Structured analysis
• Considers data and the processes that transforms the data as separate
entities
– Object-oriented analysis
• Focuses on the definition of classes and the manner in which they
collaborate with one another to effect customer requirements. UML & the
Unified Process are predominantly object-oriented
– Lead to the derivation of one or more of these modeling elements
• Data Modeling Concepts
– Analysis modeling begins with data modeling
– Software engineer defines all data objects that are processed
within the system, relationships between them, & other
information pertinent to the relationships
– Data Objects: representation of any composite information
• Can be an external entity, a thing, an occurrence, an event, a role, an
organizational unit, a place or a structure. E.g. Figure below shows an
object : car
– Data Attributes
• Defines the properties of a data object and take on one of 3 different characteristics
as follows:
– Name an instance of the data object,
– Describe the instance
– Make reference to another instance in another table
• One or more of the attributes defined as an identifier – key (unique)
• Set of attributes for data objects should be determined based on the problem
context
• What additional attributes shall be added to the car? (Hint: for an Automobile
Company that needs manufacturing control s/w)
– Relationships
– Cardinality and Modality
• How many occurrences of object X are related to how many occurrences of object
Y?
• Data Model: capable of representing the no. of occurrences of objects in a given
relationship
• Tillmann
defines the
Cardinality of an object/relationship pair in the following manner:
“Cardinality is the specification of the number of occurrences of one object that can
be related to the number of occurrences of another object”.
Cardinality also defines “the maximum number of objects that can participate in a
relationship”
– A 1:1 relationship
– A 1:N relationship
– An M:N relationship
• How it can be known that a particular data object must participate in the
relationship?
• Through Modality
• Modality is 0 if there is no explicit need for the relationship to occur; 1 – if the
occurrence of the relationship is mandatory
• Scenario-based Modeling
– Analysis modeling with UML begins with the creation of scenarios
in the form of use-cases, activity diagrams, and swimlane diagrams
– Writing Use-cases
– Concept: describes a specific usage scenario in simple language
from the point of view of a defined actor
• What to write about?
– To begin develop a set of use-cases, the functions or activities performed by a
specific actor are listed
• How much to write about it?
• How detailed to make our description?
• How to organize the description?
• SafeHome Surveillance subsystem identifies the following functions
performed by the homeowner actor:
• Select camera to view
• Request thumbnails from all cameras
• Display camera views in a PC window
• Control pan and zoom for a specific camera
• Selectively record camera output
• Replay camera output
• Access camera surveillance via the Internet
– Requirements-gathering team develops use-cases for each of
the functions noted
• Access camera surveillance via the Internet—display camera views
( ACS-DCV )
• Homeowner actor
• Use-case: Access camera surveillance via the Internet—display
camera views (ACS-DCV)
Actor: homeowner
If I’m at a remote location, I can use any PC with appropriate browser
software to log on to the SafeHome Products website. I enter my user ID and
two levels of passwords and once I’m validated, I have access to all
functionality for my installed SafeHome system.
To access a specific camera view, I select “surveillance” from the major
function buttons displayed. I then select “pick a camera” and the floor plan
of the house is displayed. I then select the camera that I’m interested in.
Alternatively, I can look at thumbnail snapshots from all cameras
simultaneously by selecting “all cameras” as my viewing choice.
Once I choose a camera, I select “view” and a one-frame-per-second view
appears in a viewing window that is identified by the camera ID. If I want to
switch cameras, I select “pick a camera” and the original viewing window
disappears and the floor plan of the house is displayed again. I then select
the camera that I’m interested in. A new viewing window appears
• The variation of a narrative use-case presents the interaction as an ordered sequence of user
actions.
• Use case: Access camera surveillance via the Internet—display camera views
(ACS-DCV) also referred to as primary scenarios
• Actor: homeowner
1. The homeowner logs onto the SafeHome Products website.
2. The homeowner enters his or her user ID.
3. The homeowner enters two passwords (each at least eight characters in length).
4. The system displays all major function buttons.
5. The homeowner selects the “surveillance” from the major function buttons.
6. The homeowner selects “pick a camera.”
7. The system displays the floor plan of the house.
8. The homeowner selects a camera icon from the floor plan.
9. The homeowner selects the “view” button
10.The system displays a viewing window that is identified by the camera ID.
11.The system displays video output within the viewing window at one frame per second.
• Refining a Preliminary Use-case
– Each step in the primary scenario is evaluated by asking the
following questions
a) Can the actor take some other action at this point?
b) Is it possible that the actor will encounter some error condition at this
point? If so, what might it be?
c) Is it possible that the actor will encounter some other behavior at this
point (e.g., behavior that is invoked by some event outside the actor’s
control)? If so, what might it be?
– Answering these questions create a set of secondary scenarios
– Consider steps 6 & 7: answer the question for a) b) & c)
• One secondary scenario: “view thumbnail snapshots for all cameras”
(step 6)
• Secondary scenario: Error condition “No floor plan configured for this
house”
Secondary Scenario
• To develop an
Activity Diagram
– Supplements the use case by
providing a graphical representation of
the flow of interaction within a specific
scenario
• Rounded rectangles implies a
specific system function
• Arrows represent flow through the system
• Decision diamonds depict a branching decision
• Solid horizontal lines indicate that parallel activities are occurring
Adds additional
details not
directly
mentioned by
the use-case
• Swimlane diagrams
– Allows to represent the flow of activities described by the use case
and at the same time indicate which actor or analysis class has
responsibility for the action described by an activity rectangle.
Primary
external
entities
• Next expand the level 0 DFD to level 1 DFD (fig. 8.10)
– Perform “Grammatical Parse” on the narrative that describes the context
level bubble
– i.e., isolate all nouns and verbs from the SafeHome Processing Narrative
– Verbs are processes, represented as bubbles in a subsequent DFD
– Nouns are either external entities (boxes), data or control objects (arrows) or data
stores (double lines)
– Context level processes expanded to six processes; information flow between
processes at level 1 derived from the parse; information flow continuity maintained
between levels 0 &1.
– DFD level 1 further refined into lower levels (fig. 8.11)
– The process “monitor sensors” can be refined into a level 2 DFD
• Creating a Control Flow Model
– Large class of applications driven by ‘events’ rather than data,, produce control
information rather than reports or displays
– Process information with heavy concern for time & performance
– An event or control item implemented as a Boolean value or a discrete list of
conditions
– Listing all potential candidate events with the guidelines as follows:
• List all sensors that are “read” by the software
• List all interrupt conditions
• List all “switches” that are actuated by an operator
• List all data conditions
• Describe the behavior of a system by identifying its states, identify how each
state is reached, & define the transitions between states
• Control Specification (CSPEC) => represents the behavior of the
system in 2 different ways: (fig. 8.12)
– Contains a state diagram=> sequential specification of behavior
– Program activation table => combinatorial specification of behavior
– By reviewing the state diagram, a software engineer determines the
behavior of the system & more importantly ascertain whether there are
“holes” in the specified behavior.
– Describes the behavior of the system, but gives no information about
the inner working of processes that are activated as a result of this
behavior
• Process Specification (PSPEC)=> used to describe all flow
model processes that appear at the final level of refinement
• Content of process specification includes
– Narrative text
– Program Design Language (PDL) description of the process algorithm
– Mathematical equations, tables, diagrams or charts
• Software Engineer creates a “mini-spec” => serve as a guide
for design of the software component that will implement the
process
• E.g., PSPEC for “process password” take the form:
• Class-based Modeling
– Identifying Analysis Classes
• By performing a “grammatical parse” on the use-cases or processing narratives developed
for the system to be built
• Classes determined by nouns
• What should we look for once all of the nouns have been isolated?
• Candidate classes: External Entities, events, roles, places, structures, things, organizational
units, etc.
• Taxonomy of classes suggested by Budd: producers (sources) & consumers (sinks) of data,
data managers, observer classes and helper classes
• What are not considered as classes or objects?
• E.g. Medical Imaging system
– InvertImage
– ImageInversion Are these two are classes?
– Information Hiding
• How do we decompose a software solution to obtain the best set of
modules?
• Principle: modules be “characterized by design decisions that each hides
from all others”
• Hiding defines & enforces access constraints to both procedural detail
within a module & any local data structure used by the module handover
– Functional Independence
• Direct outgrowth of modularity and the concepts of
abstraction and information hiding
• Design software so that each module addresses a specific sub-
function of requirements
• Has a simple interface
• Easier to maintain
• Error propagation is reduced
• Reusable modules are possible
• Independence assessed using 2 qualitative criteria:
– Cohesion: indication of relative functional strength of a module
– Coupling: indication of relative interdependence among modules
• Cohesion
– Natural extension of the information hiding concept
– Should ideally do just one thing
• Coupling
– Depends on the interface complexity between modules, the point at which entry or
reference is made to a module & what data pass across the interface
– Refinement
• A process of elaboration
• Abstraction and Refinement are complementary concepts
• Refinement helps the designer to reveal low-level details as design
progresses
– Refactoring
• Important design activity for agile methods
• “Is the process of changing a software system in such a way that it does not
alter the external behavior of the design yet improves its internal structure”.
• Existing design is examined for
– Redundancy
– Unused design elements
– Inefficiency or Unnecessary algorithms
– Poorly constructed or inappropriate data structures
– Design classes
• As the design model evolves, the software team must define a set of design
classes that
(i) Refine the analysis classes by providing design detail that will enable the
classes to be implemented &
(ii) Create a new set of design classes that implement a software
infrastructure to support the business solution
• 5 different types each representing a different layer of design
architecture are suggested:
– User Interface Classes: define all abstractions that are necessary for
human computer interactions
– Business domain Classes: are often refinements of the analysis classes
– Process Classes: implements lower-level business abstractions required
to fully manage the business domain classes
– Persistent Classes: represent data stores that will persist beyond the
execution of the software
– System Classes: implement software management and control
functions that enable the system to operate and communicate within
its computing environment and with the outside world
• Each design class is reviewed to ensure that it is “well-formed”
which define 4 characteristics:
– Complete and sufficient
– Primitiveness: methods associated with a design class should
be focused on accomplishing one service for the class
– High cohesion: small, focused set of responsibilities and
single-mindedly applies attributes and methods to implement
those responsibilities
– Low coupling: design classes within a subsystem should have
only limited knowledge of classes in other subsystems. This
restriction is called “ Law of Demeter” and suggest that a
method should only send messages to methods in
neighboring classes
represents the level of detail as each element indicates the evolution of the design model
of the analysis model is transformed into a as design tasks are executed as part of the
design equivalent and then refined iteratively software process
– Difference:
• refined and elaborated as part of the design
• More implementation specific detail is provided
• Architectural structure and style, components that reside within the
architecture and
• Interfaces between the components and with the outside world
– Design model has 4 major elements
• Data design elements
• Architectural design elements
• Interface design elements
• Component-level design elements
– Data Design Elements
• creates a model of data and/or information that is represented
at a high level of abstraction.
Structure of the data Always been an important part of software design
At the program-component level the design of data structures and the associated
algorithms required to manipulate them is essential to
the creation of high- quality applications.
At the application level the translation of a data model (derived as part of
requirements engineering) into a database is pivotal to
achieving the business objectives of a system
At the business level the collection of information stored in distinct
databases and reorganized into a “data warehouse”
enables data mining or knowledge discovery that can
have an impact on the success of the business itself.
– Architectural Design Elements
• Equivalent to the floor plan of a house which gives us an
overall view of the house
• Give us an overall view of the software
• the model derived from 3 sources:
– Information about the application domain for the software to be built
– specific requirements model elements such as use cases or analysis
classes, their relationships & collaborations for the problem at hand &
– the availability of architectural styles and patterns
– Interface Design Elements
• Equivalent to a set of detailed drawings for the doors,
windows, & external utilities of a house
• Detailed drawings tells us how things and information flow into
and out of the house and within the rooms that are part of the
floor plan
• Depict information flows into and out of a system and how it is
communicated among the components defined as part of the
architecture
• 3 important elements of interface design:
1. The user interface (UI)
2. External interfaces to other systems, devices, networks, or other
producers or consumers of information
3. Internal interfaces between various design components
• UI design incorporates
– Aesthetic elements
– Ergonomic elements (e.g., information layout and placement,
metaphors, UI navigation)
– Technical elements (e.g., UI patterns, reusable components)
• External Interface design incorporates
– Error checking and appropriate security features
• Design of internal interface closely aligned with component-
level design
• To enable communication and collaboration between
operations in classes => messaging
• Messaging: designed to accommodate the requisite information
transfer and the specific functional requirements of the
operation that has been requested
• In UML, an interface is defined as:
– “An interface is a specifier for the externally-visible operations of a class,
component, or other classifier without specification of internal
structure”
– More simply stated “an interface is a set of operations that describes
some part of the behavior of a class and provides access to these
operations”
– E.g. SafeHome Security Function
– Interface: Control Panel class
update, add,
delete, or
otherwise
modify data
within the store
–Point A Point defines how much a team can commit. A point usually refers to 8 hours. Each
story is estimated in points.
– Capacity: Capacity defines how much an individual can commit. Capacity
is estimated in hours.
• What is a User Story?
– a requirement which defines what is required by the user
as functionality
– Two forms:
• As a <User Role> I want <Functionality> so that <Business Value>
• In order to <Business value> as a <User Role> I want
<Functionality>
– During release planning, a rough estimate is given to a
user story using relative scale as points. During iteration
planning, the story is broken down into tasks
• Relationship of User stories and tasks
User stories Tasks
Talks about what is to be done ; Talks about how it is to be done ;
It defines what a user needs It defines how a functionality is to be
implemented
Each story is a collection of tasks Stories are implemented by tasks
User story is divided into tasks when it is Tasks are estimated in hours, typically
planned in current iteration from 2 to 12 hours
Stories are validated using acceptance
tests
• Create an Initial Product Backlog
– Product Backlog is a dynamic prioritized source for all the work that
needs to be done to deliver a product. This artifact is product focused
not system focused.
• A product backlog consists of:
– Features
– Enhancements
– Defects
– Non IT Deliverables
• Example:
– As the mail room I must scan mortgage applications from the customer
so that they can be processed
– As the system I must load scanned images so they are available to the
indexing user
– As the indexer I want to be able to view a list of all applications requiring
indexing
• What information do we capture in the product backlog?
– The details below provide a guideline to what information you
may want to capture in a product backlog
• An example is shown below:
• When a Story is Done
– The team decides what done means. The criteria may be:
• All tasks (development, testing) are completed.
• All acceptance tests are running and are passed.
• No defect is open.
• Product owner has accepted the story.
• Deliverable to the end-user
• What is Acceptance Criteria?
– Criteria defines the functionality, behavior, and performance required by a feature so
that it can be accepted by the product owner
– It defines what is to be done so that the developer knows when a user story is
complete.
• How the Requirements are Defined?
– Requirements are defined as
• A User Story,
• With Acceptance Criteria, and
• Tasks to implement the story
Agile – Manifesto
Product Owner represents the general view of deals with the detailed view of the
the product backlog product backlog and their acceptance
criteria
Agile Team provides insights on the technical defines their tasks and sets the effort
feasibilities or any dependencies estimates required to fulfill the
commitment
– Prerequisites of Planning
• Items in product backlog are sized and have a relative story point assigned
• Ranking given to portfolio items by the product owner
• Acceptance criteria clearly stated for each portfolio item
– Planning Process
• Determine how many stories can fit in an iteration
• Break these stories into tasks and assign each task to their owners.
• Each task is given estimates in hours
• These estimates help team members to check how many task hours each
member have for the iteration
• Team members are assigned tasks considering their velocity or capacity so
that they are not overburdened
– Velocity Calculation
• Velocity is an average number of units required to finish user stories in an
iteration
• An agile team calculates velocity based on past iterations
• Planned velocity tells the team how many user stories can be completed in
the current iteration
• If the team quickly finishes the tasks assigned, then more user stories can
be pulled in
• Otherwise, stories can be moved out too to the next iteration
– Task Capacity
• Derived from the following three facts
– Number of ideal working hours in a day
– Available days of person in the iteration
– Percentage of time a member is exclusively available for the team
– Planning Steps
• Product Owner describes the highest ranked item of product backlog
• Team describes the tasks required to complete the item
• Team members own the tasks
• Team members estimate the time to finish each task
• These steps are repeated for all the items in the iteration
• If any individual is overloaded with tasks, then his/her task is distributed
among other team members
DESIGN ENGINEERING
PRODUCT METRICS
• Direct measures are unusual in the software world
• Software metrics are indirect
• Measures used to assess the quality of the software product as it is
being engineered
• Software Quality is conformance to explicitly stated functional and
performance requirements, explicitly documented development
standards, and implicit characteristics that are expected of all
professionally developed software.
– Software requirements: foundation from which quality is measured; Lack of
conformance to requirements is lack of quality
– Specified standards: define a set of development criteria that guide the
manager in which the software is engineered
– If software conforms to its explicit requirements but fails to meet implicit
requirements, quality is compromised
• Mccall’s Quality factors
– propose a useful categorization of factors that affect software quality.
– focus on three important aspects of a software product: its operational
characteristics, its ability to undergo change, and its adaptability to new
environments
• McCall and his colleagues provide the following descriptions:
– Correctness - The extent to which a program satisfies its specification and fulfills
the customer’s mission objectives
– Reliability.
– Efficiency.
– Integrity - Extent to which access to software or data by unauthorized persons
can be controlled.
– Usability
– Maintainability
– Flexibility
– Testability
– Portability.
– Reusability
– Interoperability
• Difficult to develop direct measures of these quality factors
• ISO 9126 Quality Factors
– Was developed to identify quality attributes for computer
software
– Functionality: degree to which the software satisfies stated
needs as indicated by the following sub-attributes:
• suitability, accuracy, interoperability, compliance, and security.
– Reliability: amount of time that the software is available
for use as indicated by the following sub-attributes
• Maturity, fault tolerance, recoverability
– Usability: degree to which the software is easy to use as
indicated by the following sub-attributes
• understandability, learnability, operability
– Efficiency: degree to which the software makes optimal use of
system resources as indicated by the following sub-attributes
• Time behavior, resource behavior.
– Maintainability: The ease with which repair may be made to the
software as indicated by the following sub-attributes
• analyzability, changeability, stability, testability.
– Portability: The ease with which the software can be transposed
from one environment to another as indicated by the following
sub-attributes
• adaptability, installability, conformance, replaceability
• The transition to a Quantitative view
– Quality is subjective, a more precise definition of software quality is
needed as a way to derive quantitative measurements of software
quality for objective analysis
• A framework for Product Metrics
– Within the software engineering context,
• Measure : provides a quantitative indication of the extent, amount,
dimension, capacity, or size of some attribute of a product or process
• Measurement: the act of determining a measure.
• Metric: “a quantitative measure of the degree to which a system,
component, or process possesses a given attribute”.
– A software engineer collects measures and develops metrics so
that indicators will be obtained
– Indicator: a metric or combination of metrics that provides insight
into the software process, a software project, or the product itself.
– When a single data point has been collected (e.g., the number of
errors uncovered within a single software component), a measure
has been established
– Measurement occurs as the result of the collection of one or more data points
(a number of component reviews and unit tests are investigated to collect
measures of the number of errors for each).
– Software metric relates the individual measures in some way (e.g., the average
number of errors found per review or the average number of errors found per unit
test)
– What are the steps of an effective measurement process?
• Formulation
• Collection
• Analysis
• Interpretation
• Feedback
– Software metrics are useful only if they are characterized effectively & validated so
that their worth is proven:
• A metric should have desirable mathematical properties
• When a metric represents a software characteristic that increases when positive traits occur
or decrease when undesirable traits are encountered, the value of metric should increase or
decrease in the same manner
– Each metric should be validated empirically in a wide variety of contexts before
being published or used to make decisions
• The Product Metrics Landscape
– Metrics for the Analysis model
• Functionality delivered
• System size
• Specification quality
– Metrics for the Design model
• Architectural metrics
• Component-level metrics
• Interface design metrics
• Specialized OO design metrics
– Metrics for Source code
• Halstead metrics
• Complexity metrics
• Length metrics
– Metrics for testing
• Statement and Branch coverage metrics
• Defect-related metrics
• Testing Effectiveness
• In-process metrics
– Function-based Metrics
• FP metric
• Function points derived using an empirical relationship based on direct
measures of software’s information domain & assessments of software
complexity
• Information domain values:
– No. of external inputs
– No. of external outputs
– No. of external queries
– No. of internal logic files (ILF)
– No. of external interface files (EIF)
• Organizations that use function point methods develop criteria for
determining whether a particular entry is simple, average or complex
• To compute FPs, the following relationship holds:
– FP = count total x [0.65 + 0.01 x ∑ (Fi)]
– Fi (i=1 to 14) are value adjustment factors (VAF) based on responses to the
following questions: