Definition of Software Engineering
“The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines”
(Pressman. 1992).
Software Engineering Principles
- Adopt Project Management
- Apply Measurements
- Apply well defined and repeatable methods
- Utilise standard components
Economical Software
- ‘Get it Right First time’
- Reduce Risk
- Use a quality approach
- Encourage reuse
- Understand the process of developing software
Reliable and Efficient Software
- Introduce methods to measure software performance and attributes
- Monitor the software performance
- Tailor the software to the hardware it will run on
- Apply appropriate software to appropriate systems
Real Machines
- Concentrate development process
- Allow for future expansion
- Do not neglect the different platforms of computer systems
- Match the performance of the software to the requirements
Risk
Two Main Factors that Comprise Risk
- likelihood of occurrence (Probability).
- Consequence of occurrence (impact).
Risk = Probability X Impact
Boehm’s “Top 10 risk items”
- Personnel shortfalls
- Unrealistic schedules and budgets
- Developing wrong functions
- Developing wrong user interface
- Gold plating
- Changing requirements
- Shortfalls in externally produced components
- Shortfalls in externally performed tasks
- Real-time Performance inadequacies
- Straining CS [computing] capabilities
The General Risk Management Framework
- Goal definition
- Risk identification
- Risk impact and probability evaluation
- Risk prioritisation
- Modelling risk relationships
- Mitigation and contingency planning
- Allocating and monitoring budget levels
- Continual risk monitoring
Software Measurement
What is measurement?
“Measurement is the process by which number or symbols are assigned to attributes of entities in the real world in such a way as to describe them according to clearly defined rules.” (Fenton, 1991)
Why Measure?
Developers use measurements to evaluate their progress towards completion.
Managers use measurement to assess project health and progress towards milestones.
Customers use measurements to determine quality and functionality of systems.
Maintainers Use measurement for decisions on reusability and reengineering.
The Goal Question Metric (GQM)
The goal question metric paradigm can be split into four steps:
- Identify the goals, questions and metrics
- Plan the measurement
- Measure
- Analyse and interpret the data
Step 1: Identify the Goals, Questions and Metrics
The Goal Template
Purpose: To [characterise, evaluate, predict, motivate, etc] the [process, product, model, metric] in order to [understand, manage, assess, engineer, learn, improve, etc] it.
Perspective : Examine the [cost, effectiveness, correctness, defects, changes, product measures, etc] from the viewpoint of the [developer, manager, customer].
Environment: The environment consists of the following factors: process(es), people, problem, methods, tools, constraints, etc.
Questions
Questions is the hardist part of the GQM, the aim of the questions is to clarify and defing the attributes of the entities. It is more practical to split the Goals into sub- goals to make it easier to make questions.
Metrics
One or many metrics may be required for one question. This step is not as hard as finding questions for goals but it is not automatic either. There are many factors that influence metrics and some are:
- The way the metric will be used in feedback
- The collection feasability
- Development practices
- Etc.
Step 2: Plan the Measurement
Priorities Metrics
Consider the following when priorities:
- Cost to collect and analyse
- Benefit to be gained
- Probability of success
Consider the following when planning for each metric:
- The collection Technique
- Data Validation
Step 3: Measuring
This is the physical action of measuring and recording
Step 4: Analysis and Interpretation
Here the original goals must be reviewed in light of the measurements we have taken. After doing this, it may be required to rework the goals and start the GQM process again like a cycle.
Basic Measurement Theory
There are several points on a scale of measurement and they are:
Nominal scale
This is where we measure by sorting items into categories.
Ordinal scale
This is where we measure by Ranking each Item.
Interval scale
This is where we measure using marks equal distances between one point to another, like temperature.
Ratio scale
This is where we introduce proportions when measuring.
Absolute scales
This scale involves entities that are simple counted.
Cyclomatic Complexity
Cyclomatic Complexity is the number or independent paths through a program module. It is used to measure the complexity of the software program.
There are three different ways to calculate the Cyclomatic Complexity of a module and they are:
- The number of simple decisions + 1
- The number of enclosed spaces +1
- The number of edges minus the number of nodes +1
Drawing a flow chart of the module makes it easier to work out the Cyclomatic Complexity.