Unit I: Introduction: - Professional Software Development, Software Engineering Ethics Headings and Subheadings

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

Unit I

Introduction: - Professional Software Development, Software Engineering Ethics

Headings and subheadings : -

 Professional Software Development


o Software engineering
o Software engineering diversity
o Software engineering and the web
 Software engineering ethics

Professional Software Development

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.

Fig 1.1 frequently asked questions about software (Refer Textbook)

Two kinds of software products:-

 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: -

Fig 1.2 Essential attributes of good software (Refer Textbook)

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.

The various types of applications include: -

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

Software Engineering and the Web: -

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.

Software Engineering Ethics: -

Ethics of a Software Engineer: -

 Confidentiality
 Competence
 Intellectual property rights
 Computer misuse

Socio Technical Systems: -Complex systems, system engineering, system procurement, system
development, system operation.

Headings and sub headings: -

 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 system is a purposeful collection of interrelated components, of different kinds, which work


together to achieve some objective.

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.

Two types of complex systems

 Technical computer – based systems


 Sociotechnical systems

Characteristics of sociotechnical systems:

 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.

Emergent system properties:

Examples of emergent properties: -

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.

Two types of emergent systems: -

 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

 Procuring, specifying, designing, implementing, validating, deploying and maintaining socio-


technical systems.
 Concerned with the services provided by the system, constraints on its construction and
operation and the ways in which it is used to fulfil its purpose or purposes
Stages of systems engineering

 Systems engineering stages

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 developed – requirements are defined in detail, the system is


implemented and tested and operational processes are defined.
Operation

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.

Headings and sub headings: -

 Software process models


o Waterfall model
o Incremental development
o Reuse oriented software engineering
 Process activities
o Software specification
o Software design and implementation
o Software validation
 Coping with change
o Prototyping
o Incremental delivery
o Boehm’s spiral model
 The Rational Unified Process
o An example of a modern software process.

Software process models

 A structured set of activities required to develop a software system.


 Many different software processes but all involve:
o Specification – defining what the system should do;
o Design and implementation – defining the organization of the system and
implementing the system;
o Validation – checking that it does what the customer wants;
o Evolution – changing the system in response to changing customer needs.
 A software process model is an abstract representation of a process. It presents a description
of a process from some particular perspective.

Software process descriptions

 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 and agile processes

 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.

Software process models

 The waterfall model


o Plan-driven model. Separate and distinct phases of specification and development.
Waterfall model phases

 There are separate identified phases in the waterfall model:


o Requirements analysis and definition
o System and software design
o Implementation and unit testing
o Integration and system testing
o Operation and maintenance

Waterfall model drawbacks

 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

 The cost of accommodating changing customer requirements is reduced.


o The amount of analysis and documentation that has to be redone is much less than is
required with the waterfall model.
 It is easier to get customer feedback on the development work that has been done.
o Customers can comment on demonstrations of the software and see how much has
been implemented.
 More rapid delivery and deployment of useful software to the customer is possible.
o Customers are able to use and gain value from the software earlier than is possible
with a waterfall process.

Incremental model problems

 The process is not visible.


o Managers need regular deliverables to measure progress. If systems are developed
quickly, it is not cost-effective to produce documents that reflect every version of the
system.
 System structure tends to degrade as new increments are added.
o Unless time and money is spent on refactoring to improve the software, regular
change tends to corrupt its structure. Incorporating further software changes
becomes increasingly difficult and costly.

 Reuse-oriented software engineering


o The system is assembled from existing components. May be plan-driven or agile.
o In practice, most large systems are developed using a process that incorporates
elements from all of these models.
o Based on systematic reuse where systems are integrated from existing components
or COTS (Commercial-off-the-shelf) systems.
o Process stages
 Component analysis;
 Requirements modification;
 System design with reuse;
 Development and integration.
o Reuse is now the standard approach for building many types of business system
Process activities

 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

 The process of converting the system specification into an executable system.


 Software design
o Design a software structure that realises the specification;
 Implementation
o Translate this structure into an executable program;
 The activities of design and implementation are closely related and may be inter-leaved.

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

Coping with change

 Change is inevitable in all large software projects.


o Business changes lead to new and changed system requirements
o New technologies open up new possibilities for improving implementations
o Changing platforms require application changes
 Change leads to rework so the costs of change include both rework (e.g. re-analysing
requirements) as well as the costs of implementing new functionality

Reducing the costs of rework

 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

 Improved system usability.


 A closer match to users’ real needs.
 Improved design quality.
 Improved maintainability.
 Reduced development effort.

The process of prototype development


Prototype development

 May be based on rapid prototyping languages or tools


 May involve leaving out functionality
o Prototype should focus on areas of the product that are not well-understood;
o Error checking and recovery may not be included in the prototype;
o Focus on functional rather than non-functional requirements such as reliability and
security

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 and delivery

 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.

Incremental delivery problems

 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.

Boehm’s spiral model

 Process is represented as a spiral rather than as a sequence of activities with backtracking.


 Each loop in the spiral represents a phase in the process.
 No fixed phases such as specification or design - loops in the spiral are chosen depending on
what is required.
 Risks are explicitly assessed and resolved throughout the process.
Spiral model sectors

 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 usage

 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.

The Rational Unified Process

 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.

Phases in the Rational Unified Process

 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.

Static workflows in the Rational Unified 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.

Configuration and This supporting workflow managed changes to the system


change management

Project management This supporting workflow manages the system development

Environment This workflow is concerned with making appropriate software


tools available to the software development team

RUP good practice

 Develop software iteratively


o Plan increments based on customer priorities and deliver highest priority increments
first.
 Manage requirements
o Explicitly document customer requirements and keep track of changes to these
requirements.
 Use component-based architectures
o Organize the system architecture as a set of reusable components.
 Visually model software
o Use graphical UML models to present static and dynamic views of the software.
 Verify software quality
o Ensure that the software meet’s organizational quality standards.
 Control changes to software
o Manage software changes using a change management system and configuration
management tools.

You might also like