Mca24 Software Engineering Dept. of Mca Ramaiah Institute of Technology Geetanjali R
Mca24 Software Engineering Dept. of Mca Ramaiah Institute of Technology Geetanjali R
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
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
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.
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.
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
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
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.
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.
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.
Process activities
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
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 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:
Prototype development
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
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.
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.
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
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.
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.
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.