Professional Documents
Culture Documents
Unit I: Introduction: - Professional Software Development, Software Engineering Ethics Headings and Subheadings
Unit I: Introduction: - Professional Software Development, Software Engineering Ethics Headings and Subheadings
Unit I: Introduction: - Professional Software Development, Software Engineering Ethics Headings and Subheadings
Software is not just the programs themselves but also all associated documentation and configuration
data that is required to make these programs operate correctly. A professionally developed software
system is often more than a single program. The system usually consists of a number of separate
programs and configuration files that are used to set up these programs. It may include system
documentation which describes the structure of the system; user documentation, which explains how
to use the system, and web sites for users to download recent product information.
Generic products: these are standalone systems that are produced by a development
organisation and sold on the open market to any customer who is able to buy them. Eg., word
processors, databases, drawing packages
Customised (or bespoke) products: These are systems that are commissioned by a particular
customer. A software contractor develops the software especially for that customer.
Examples of this type of software include control systems for electronic devices, systems
written to support a particular business process and air traffic control systems.
Software Engineering: -
A software process is a sequence of activities that leads to the production of a software product. There
are four fundamental activities that are common to all software processes.
Software specification, where customers and engineers define the software that is to be
produced and the constraints on its operation.
Software development, where the software is designed and programmed.
Software validation, where the software is checked to ensure that it is what the customer
requires
Software evolution, where the software is modified to reflect changing customer and market
requirements.
Software Engineering Diversity: -
Software engineering is a systematic approach to the production of software that takes into account
practical costs, schedule, and dependability issues, as well as the needs of software customers and
producers.
1. Stand-alone applications
2. Interactive transaction based applications
3. Embedded control systems
4. Batch processing systems
5. Entertainment systems
6. Systems for modelling and simulation
7. Data collection systems
8. Systems of systems
With the advent of the internet, any software product is put on the internet to widen its number of
users. Two types of software’s started being developed ever since.
Web services
Web applications
Web services are software components that deliver specific, useful functionality and which are
accessed over the Web.
Web applications are constructed by integrating these web services, which may be provided by
different companies.
Confidentiality
Competence
Intellectual property rights
Computer misuse
Socio Technical Systems: -Complex systems, system engineering, system procurement, system
development, system operation.
Introduction
o Complex systems
Emergent system properties
Non determinism
Success criteria
o Systems engineering
o Stages of systems engineering
System procurement
System development
System operation
Human error
System evolution
Introduction: -
Socio technical systems include non-technical elements like people, processes, regulations, etc., as
well as technical components such as computers, software and other equipment. They are very hard
to understand as a whole and are divided into layers. These layers are: -
1. The equipment layer: This layer is composed of hardware devices, some of which may be
computers
2. The operating system layer: - this layer interats with the hardware and provides a set of
common facilities for higher software layers in the system.
3. The communications and data management layer: - this layer extends the operating system
facilities and provides an interface that allows interaction with more extensive functionality,
such as access to remote systems, access to a system database, etc,. this is sometimes called
middleware, as it is in between the application and the operating system.
4. The application layer: this layer delivers the application specific functionality that is required.
There may be many different application programs in this layer.
5. The business process layer: at this level, the organisation business processes, which make use
of the software system are defined and enacted.
6. The organisational layer: this layer includes higher level strategic processes as well as business
rules, policies, and norms that should be followed when using the system.
7. The social layer: at this layer, the law and regulations of society that govern the operation of
the system defined.
Complex systems: -
A complex system, consists of many diverse and autonomous but interrelated and interdependent
components or parts linked through many (dense) interconnections. Complex systems cannot be
described by a single rule and their characteristics are not reducible to one level of description. They
exhibit properties that emerge from the interaction of their parts and which cannot be predicted from
the properties of the parts.
They have emergent properties that are properties of the system as a whole, rather than
associated with individual parts of the system. Emergent properties depends on both the
system components and the relationships between them. Given this complexity, the
emergent properties can only be evaluated once the system has been assembled. Security and
dependability are emergent system properties.
They are often nondeterministic. This means that when presented with a specific input, they
may not always produce the same output. The systems behaviour depends on the human
operators and people do not always react in the same way. Furthermore, use of the system
may create new relationships between the system components and hence change its
emergent behaviour. System faults and failures may therefore be transient, and people may
disagree about whether or not a failure has actually occurred.
The extent to which the system supports organizational objectives does not just depend on
the system itself. It also depends on the stability of these objectives, the relationships, and
conflicts between organisational objectives and how people in the organisation interpret
these objectives. New management may reinterpret the organisational objectives that a
system was designed to support so that a successful system may then be seen as a failure.
Property Description
Volume The volume of a system (the total space occupied) varies depending on how
the component assemblies are arranged and connected.
Reliability System reliability depends on component reliability but unexpected
interactions can cause new types of failures and therefore affect the
reliability of the system.
Security The security of the system (its ability to resist attack) is a complex property
that cannot be easily measured. Attacks may be devised that were not
anticipated by the system designers and so may defeat built-in safeguards.
Repairability This property reflects how easy it is to fix a problem with the system once it
has been discovered. It depends on being able to diagnose the problem,
access the components that are faulty, and modify or replace these
components.
Usability This property reflects how easy it is to use the system. It depends on the
technical system components, its operators, and its operating environment.
Functional emergent properties when the purpose of a system only emerges after its
components are integrated. For example: a bicycle has the functional properties of being a
transportation device once it has been assembled from its components
Non – functional emergent properties which relate to the behaviour of the system in its
operational environment. Reliability, performance, safety and security are examples of
emergent properties. These are critical for computer – based systems, as failure to achieve a
minimum defined level in these properties usually makes the system unusable.
Three perspectives of reliability in a socio technical systems:
Hardware reliability
o What is the probability of a hardware component failing and how long does it take to
repair that component?
Software reliability
o How likely is it that a software component will produce an incorrect output? Software
failure is usually distinct from hardware failure in that software does not wear out.
Operator reliability
o How likely is it that the operator of a system will make an error?
Non –deterministic: -
A deterministic system is one where a given sequence of inputs will always produce the same
sequence of outputs.
Software systems are deterministic; systems that include humans are non-deterministic
o A socio-technical system will not always produce the same sequence of outputs from
the same input sequence
o Human elements
People do not always behave in the same way
o System changes
System behaviour is unpredictable because of frequent changes to hardware,
software and data.
Success criteria: -
Complex systems are developed to address ‘wicked problems’ – problems where there cannot
be a complete specification.
Different stakeholders see the problem in different ways and each has a partial understanding
of the issues affecting the system.
Consequently, different stakeholders have their own views about whether or not a system is
‘successful’
o Success is a judgment and cannot be objectively measured.
o Success is judged using the effectiveness of the system when deployed rather than
judged against the original reasons for procurement.
Systems engineering
Procurement (acquisition)
o The purpose of the system is established, high-level system requirements are defined,
decisions are made on how functionality is distributed and the system components
are purchased.
Development
o The system is deployed and put into use. Changes are made as new requirements
emerge. Eventually, the system is decommissioned
Human error
o Human errors occur in operational processes that influence the overall dependability
of the system.
o Viewing human errors:
The person approach makes errors the responsibility of the individual and
places the blame for error on the operator concerned. Actions to reduce error
include threats of punishment, better training, more stringent procedures,
etc.
The systems approach assumes that people are fallible and will make
mistakes. The system is designed to detect these mistakes before they lead
to system failure. When a failure occurs, the aim is not to blame an individual
but to understand why the system defences did not trap the error.
System evolution
o Large systems have a long lifetime. They must evolve to meet changing requirements.
o Evolution is inherently costly
Changes must be analysed from a technical and business perspective;
Sub-systems interact so unanticipated problems can arise;
There is rarely a rationale for original design decisions;
System structure is corrupted as changes are made to it.
o Existing systems which must be maintained are sometimes called legacy systems.
Changes to a system are often a source of problems and vulnerabilities.
Changes may be made without knowledge of previous design decisions made
for security and dependability reasons.
Built-in safeguards may stop working.
New faults may be introduced or latent faults exposed by changes.
These may not be discovered because complete system retesting is
too expensive.
Software process: software process model, process activities, coping with change, the rational
unified process.
When we describe and discuss processes, we usually talk about the activities in these
processes such as specifying a data model, designing a user interface, etc. and the ordering of
these activities.
Process descriptions may also include:
o Products, which are the outcomes of a process activity;
o Roles, which reflect the responsibilities of the people involved in the process;
o Pre- and post-conditions, which are statements that are true before and after a
process activity has been enacted or a product produced.
Plan-driven processes are processes where all of the process activities are planned in advance
and progress is measured against this plan.
In agile processes, planning is incremental and it is easier to change the process to reflect
changing customer requirements.
In practice, most practical processes include elements of both plan-driven and agile
approaches.
There are no right or wrong software processes.
Inflexible partitioning of the project into distinct stages makes it difficult to respond to
changing customer requirements.
o Therefore, this model is only appropriate when the requirements are well-understood
and changes will be fairly limited during the design process.
o Few business systems have stable requirements.
The waterfall model is mostly used for large systems engineering projects where a system is
developed at several sites.
o In those circumstances, the plan-driven nature of the waterfall model helps
coordinate the work.
The main drawback of the waterfall model is the difficulty of accommodating change after the
process is underway. In principle, a phase has to be complete before moving onto the next
phase.
Incremental development
o Specification, development and validation are interleaved. May be plan-driven or
agile.
Incremental development benefits
Real software processes are inter-leaved sequences of technical, collaborative and managerial
activities with the overall goal of specifying, designing, implementing and testing a software
system.
The four basic process activities of specification, development, validation and evolution are
organized differently in different development processes. In the waterfall model, they are
organized in sequence, whereas in incremental development they are inter-leaved.
Software specification
The process of establishing what services are required and the constraints on the system’s
operation and development.
Requirements engineering process
o Feasibility study
Is it technically and financially feasible to build the system?
o Requirements elicitation and analysis
What do the system stakeholders require or expect from the system?
o Requirements specification
Defining the requirements in detail
o Requirements validation
Checking the validity of the requirements
Software design and implementation
Design activities
Architectural design, where you identify the overall structure of the system, the principal
components (sometimes called sub-systems or modules), and their relationships and how
they are distributed.
Interface design, where you define the interfaces between system components.
Component design, where you take each system component and design how it will operate.
Database design, where you design the system data structures and how these are to be
represented in a database.
Software validation
Verification and validation (V & V) is intended to show that a system conforms to its
specification and meets the requirements of the system customer.
Involves checking and review processes and system testing.
System testing involves executing the system with test cases that are derived from the
specification of the real data to be processed by the system.
Testing is the most commonly used V & V activity
Change avoidance, where the software process includes activities that can anticipate possible
changes before significant rework is required.
o For example, a prototype system may be developed to show some key features of the
system to customers.
Change tolerance, where the process is designed so that changes can be accommodated at
relatively low cost.
o This normally involves some form of incremental development. Proposed changes
may be implemented in increments that have not yet been developed. If this is
impossible, then only a single increment (a small part of the system) may have be
altered to incorporate the change.
Software Prototyping
A prototype is an initial version of a system used to demonstrate concepts and try out design
options.
A prototype can be used in:
o The requirements engineering process to help with requirements elicitation and
validation;
o In design processes to explore options and develop a UI design;
o In the testing process to run back-to-back tests.
Benefits of prototyping
Throw-away prototypes
Prototypes should be discarded after development as they are not a good basis for a
production system:
o It may be impossible to tune the system to meet non-functional requirements;
o Prototypes are normally undocumented;
o The prototype structure is usually degraded through rapid change;
o The prototype probably will not meet normal organisational quality standards.
Incremental delivery
Rather than deliver the system as a single delivery, the development and delivery is broken
down into increments with each increment delivering part of the required functionality.
User requirements are prioritised and the highest priority requirements are included in early
increments.
Once the development of an increment is started, the requirements are frozen though
requirements for later increments can continue to evolve.
Incremental development
o Develop the system in increments and evaluate each increment before proceeding
to the development of the next increment;
o Normal approach used in agile methods;
o Evaluation done by user/customer proxy.
Incremental delivery
o Deploy an increment for use by end-users;
o More realistic evaluation about practical use of software;
o Difficult to implement for replacement systems as increments have less functionality
than the system being replaced.
Incremental delivery advantages
Customer value can be delivered with each increment so system functionality is available
earlier.
Early increments act as a prototype to help elicit requirements for later increments.
Lower risk of overall project failure.
The highest priority system services tend to receive the most testing.
Most systems require a set of basic facilities that are used by different parts of the system.
o As requirements are not defined in detail until an increment is to be implemented, it
can be hard to identify common facilities that are needed by all increments.
The essence of iterative processes is that the specification is developed in conjunction with
the software.
o However, this conflicts with the procurement model of many organizations, where
the complete system specification is part of the system development contract.
Objective setting
o Specific objectives for the phase are identified.
Risk assessment and reduction
o Risks are assessed and activities put in place to reduce the key risks.
Development and validation
o A development model for the system is chosen which can be any of the generic
models.
Planning
o The project is reviewed and the next phase of the spiral is planned.
Spiral model has been very influential in helping people think about iteration in software
processes and introducing the risk-driven approach to development.
In practice, however, the model is rarely used as published for practical software
development.
A modern generic process derived from the work on the UML and associated process.
Brings together aspects of the 3 generic process models discussed previously.
Normally described from 3 perspectives
o A dynamic perspective that shows phases over time;
o A static perspective that shows process activities;
o A practive perspective that suggests good practice.
Inception
o Establish the business case for the system.
Elaboration
o Develop an understanding of the problem domain and the system architecture.
Construction
o System design, programming and testing.
Transition
o Deploy the system in its operating environment.
RUP iteration
In-phase iteration
o Each phase is iterative with results developed incrementally.
Cross-phase iteration
o As shown by the loop in the RUP model, the whole set of phases may be enacted
incrementally.
o An example of a modern software process.
Workflow Description
Business modelling The business processes are modelled using business use cases.
Requirements Actors who interact with the system are identified and use cases
are developed to model the system requirements.
Analysis and design A design model is created and documented using architectural
models, component models, object models and sequence
models.
Implementation The components in the system are implemented and structured
into implementation sub-systems. Automatic code generation
from design models helps accelerate this process.
Testing Testing is an iterative process that is carried out in conjunction
with implementation. System testing follows the completion of
the implementation.
Deployment A product release is created, distributed to users and installed in
their workplace.