3. Unit Content
1. FAQs about software engineering
2 Professional and ethical responsibility2. Professional and ethical responsibility
3. Socio-technical Systems
NHCE-MCA Software Engineering Concepts 3
4. 1 FAQs about software engineering1. FAQs about software engineering
NHCE-MCA Software Engineering Concepts 4
5. FAQs about software engineering
What is software?
What is software engineering?What is software engineering?
What is the difference between software engineering and
computer science?
What is the difference between software engineering and
system engineering?
What is a software process?What is a software process?
What is a software process model?
NHCE-MCA Software Engineering Concepts 5
6. FAQs about software engineering
What are the costs of software engineering?
Wh t ft i i th d ?What are software engineering methods?
What is CASE (Computer-Aided Software Engineering)
What are the attributes of good software?
What are the key challenges facing softwareWhat are the key challenges facing software
engineering?
NHCE-MCA Software Engineering Concepts 6
7. What is software?
Software is a (computing) written programs, procedures
or rules and associated documentation pertaining to the
operation of a computer system and that are stored in
read/ write memory.
NHCE-MCA Software Engineering Concepts 7
8. What is software engineering?
The IEEE Computer Society defines software engineering as
The application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of
ft th t i th li ti f i i t ftsoftware; that is, the application of engineering to software.
NHCE-MCA Software Engineering Concepts 8
9. Difference of Software engineering and Computer science
SoftwareSoftware engineeringengineering is concerned with the
practicalitiespracticalities of developing and delivering useful
software.
ComputerComputer sciencescience is concerned with theorytheory and
fundamentalsfundamentals;;fundamentalsfundamentals;;
NHCE-MCA Software Engineering Concepts 9
10. Difference of Software engineering and System engineering
SoftwareSoftware engineeringengineering is part of this process concerned
with developing the software infrastructure controlwith developing the software infrastructure, control,
applications and databases in the system.
SystemSystem engineeringengineering is concerned with all aspects of
computer-based systems development including
hardware, software and process engineering.
NHCE-MCA Software Engineering Concepts 10
11. What is a software process?
A set of activities whose goal is the development or
evolution of software.
Generic activities in all software processes are:
•• SpecificationSpecification - what the system should do and its•• SpecificationSpecification - what the system should do and its
development constraints
•• DevelopmentDevelopment - production of the software system
•• ValidationValidation -- checking that the software is what the
customer wants
• Evolution changing the software in response to
NHCE-MCA Software Engineering Concepts 11
• Evolution - changing the software in response to
changing demands.
12. What is a software process model?
A simplified representation of a software process, presented from a
specific perspective.
Examples of process perspectives are
• Workflow perspective - sequence of activities;
• Data-flow perspective - information flow;
• Role/action perspective - who does what.
Generic process models
• Waterfall;
• Iterative development;
• Component-based software engineering.
NHCE-MCA Software Engineering Concepts 12
p g g
13. What are the costs of software engineering?
Costs vary depending on the type of system being
developed and the requirements of system attributesdeveloped and the requirements of system attributes
such as performanceperformance and systemsystem reliabilityreliability.
Distribution of costs depends on the developmentdevelopment modelmodel
that is used.
For custom software, evolutionevolution costscosts often exceed
developmentdevelopment costscostsdevelopmentdevelopment costscosts..
OtherOther costcost cancan bebe operationaloperational costcost ,maintenance,maintenance cost,cost,
NHCE-MCA Software Engineering Concepts 13
tangibletangible cost,cost, intangibleintangible costcost
14. What are software engineering methods?
St t d h t ft d l t hi h i l d tStructured approaches to software development which include system
models, notations, rules, design advice and process guidance.
M d l d i tiModel descriptions
• Descriptions of graphical models which should be produced;
Rules
• Constraints applied to system models;
Recommendations
• Advice on good design practice;
Process guidance
• What activities to follow.
NHCE-MCA Software Engineering Concepts 14
15. CASE (Computer-Aided Software Engineering)
Software systems that are intended to provide automated support for
software process activities.
CASE systems are often used for method support.
UpperUpper--CASECASE
• Tools to support the early process activities of requirementsrequirements
and design;design;
LowerLower--CASECASE
• Tools to support later activities such as programming,programming,
debuggingdebugging and testing.testing.
NHCE-MCA Software Engineering Concepts 15
16. What are the attributes of good software?
M i t i bilitMaintainability
• Software must evolve to meet changing needs;
Dependability
• Software must be trustworthy;
Efficiency
• Software should not make wasteful use of system resources;
Acceptability
• Software must accepted by the users for which it was designed.
This means it must be understandable, usable and compatible
with other systems.
NHCE-MCA Software Engineering Concepts 16
17. What are the key challenges facing software
engineering?
Heterogeneity, delivery and trust.
Heterogeneity
• Developing techniques for building software that can cope with
heterogeneous platforms and execution environments;
Delivery
• Developing techniques that lead to faster delivery of software;
TrustTrust
• Developing techniques that demonstrate that software can be
trusted by its users
NHCE-MCA Software Engineering Concepts 17
trusted by its users.
19. Professional and ethical responsibility
Software engineering involves wider
responsibilities than simply the application ofresponsibilities than simply the application of
technical skills.
Software engineers must behave in an honesthonest
and ethicallethically responsible way if they are to beand ethicallethically responsible way if they are to be
respected as professionals.
Ethical behaviour is more than simply upholding
the law
NHCE-MCA Software Engineering Concepts 19
the law.
20. Issues of Professional Responsibility
Confidentiality
• Engineers should normally respect the confidentialityg y p y
of their employers or clients irrespective of whether
or not a formal confidentiality agreement has beenor not a formal confidentiality agreement has been
signed.
Competence
• Engineers should not misrepresent their level ofEngineers should not misrepresent their level of
competence. They should not knowingly accept work
which is out with their competence
NHCE-MCA Software Engineering Concepts 20
which is out with their competence.
21. Issues of professional responsibility
Intellectual property rights
• Engineers should be aware of local laws governing the use ofEngineers should be aware of local laws governing the use of
intellectual property such as patents, copyright, etc. They
should be careful to ensure that the intellectual property ofp p y
employers and clients is protected.
Computer misuseComputer misuse
• Software engineers should not use their technical skills to
misuse other people’s computers Computer misuse rangesmisuse other people s computers. Computer misuse ranges
from relatively trivial (game playing on an employer’s machine,
say) to extremely serious (dissemination of viruses).
NHCE-MCA Software Engineering Concepts 21
y) y ( )
22. ACM/IEEE Code of Ethics
The professional societies in the US have cooperated to
produce a code of ethical practiceproduce a code of ethical practice.
The Code contains EightEight PrinciplesPrinciples related to the
behaviour of and decisions made by professional
software engineers, including practitioners, educators,
managers, supervisors and policy makers, as well as
trainees and students of the profession.
NHCE-MCA Software Engineering Concepts 22
23. Code of ethics - principles
software engineers shall adhere to the following Eight Principles:software engineers shall adhere to the following Eight Principles:
Public
• Software engineers shall act consistently with the publicpublic
interestinterest..
Client And Employer
• Software engineers shall act in a manner that is in the best
interestsinterests ofof theirtheir clientclient andand employeremployer consistent with the public
interest.
Product
• Software engineers shall ensure that their products and related
NHCE-MCA Software Engineering Concepts 23
g p
modifications meet the highesthighest professionalprofessional standardsstandards possible.
24. Code of ethics - principles
Judgment
• Software engineers shall maintain integrityintegrity and independenceindependence• Software engineers shall maintain integrityintegrity and independenceindependence
in their professional judgment.
M tManagement
• Software engineering managersmanagers and leadersleaders shall subscribe to
and promote an ethical approach to the management of
software development and maintenance.
Profession
• Software engineers shall advance the integrityintegrity and reputationreputation of
NHCE-MCA Software Engineering Concepts 24
the profession consistent with the public interest.
25. Code of ethics - principles
Colleagues
• Software engineers shall be fairfair to and supportivesupportive of• Software engineers shall be fairfair to and supportivesupportive of
their colleagues.
Self
• Software engineers shall participate in lifelonglifelongSoftware engineers shall participate in lifelonglifelong
learninglearning regardingregarding thethe practicepractice of their profession
d h ll t thi l h t th tiand shall promote an ethical approach to the practice
of the profession.
NHCE-MCA Software Engineering Concepts 25
27. Topics covered
To explain what a sociosocio--technicaltechnical systemsystem is and the distinction
between this and a computer-based systembetween this and a computer based system
To introduce the concept of emergentemergent systemsystem propertiesproperties such as
reliability and securityreliability and security
To explain systemsystem engineeringengineering and system procurement processes
To explain why the organisationalorganisational contextcontext ofof aa systemsystem affects itsTo explain why the organisationalorganisational contextcontext ofof aa systemsystem affects its
design and use
To discuss legacylegacy systemssystems and why these are critical to manyTo discuss legacylegacy systemssystems and why these are critical to many
businesses
NHCE-MCA Software Engineering Concepts 27
28. What is a system?
A purposeful collection of interinter--relatedrelated components
working together to achieveachieve some common objectiveworking together to achieveachieve some common objective.
A system may include software, mechanical, electrical
and electronic hardware and be operated by people.
NHCE-MCA Software Engineering Concepts 28
29. Components of ( an Information)System
NHCE-MCA Software Engineering Concepts 29
30. System categories
Technical computer-based systems
• Systems that include hardware and software but where the• Systems that include hardware and software but where the
operatorsoperators and operationaloperational processesprocesses are not normally
considered to be part of the system The system is not self-considered to be part of the system. The system is not self
aware.
Socio technical systemsSocio-technical systems
• Systems that include technical systems but also operationaloperational
d ll h d i t t ith th t h i lt h i lprocessesprocesses and peoplepeople who use and interact with the technicaltechnical
systemsystem.. Socio-technical systems are governed by
organisational policies and rules
NHCE-MCA Software Engineering Concepts 30
organisational policies and rules.
31. Socio-technical system characteristics
EmergentEmergent propertiesproperties
• Properties of the systemsystem ofof aa wholewhole that depend on the system
components and their relationships.
NonNon--deterministicdeterministic
• They do not always produce the same output when presented
with the same input because the systems' behaviour is partially
dependent on human operators.
ComplexComplex relationshipsrelationships withwith organisationalorganisational objectivesobjectives
• The extent to which the system supports organisational
objectives does not just depend on the system itself.
NHCE-MCA Software Engineering Concepts 31
32. Emergent properties
Properties of the systemsystem asas aa wholewhole rather than
properties that can be derived from the properties ofproperties that can be derived from the properties of
components of a system
Emergent properties are a consequence of the
relationships between system components
They can therefore only be assessed and measured
once the components have been integrated into a systemp g y
NHCE-MCA Software Engineering Concepts 32
33. Examples of emergent properties
Property Description
V l Th l f t (th t t l i d) i d di h thVolume 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 failure 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 byy y p y
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 thebeen 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
NHCE-MCA Software Engineering Concepts 33
technical system components, its operators and its operating environment.
34. Types of emergent property
FunctionalFunctional propertiesproperties
• These appear when all the parts of a systemsystem workwork togethertogether to
achieve some objective.
NonNon--functionalfunctional emergentemergent propertiespropertiesgg p pp p
• These relate to the behaviourbehaviour ofof thethe systemsystem in its operational
environment. They are often critical for computer-basedy
systems as failure to achieve some minimal defined level in
these properties may make the system unusable.
• Examples are reliability, performance, safety, and security.
NHCE-MCA Software Engineering Concepts 34
35. Systems engineering
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.ways in which it is used.
NHCE-MCA Software Engineering Concepts 35
36. The system engineering process
Software may have to compensate for hardware
problems.p
Inevitably involves engineers from different disciplines
who must work togetherwho must work together
• Much scope for misunderstanding here.
• Different disciplines use a different vocabulary and much
negotiation is required.
NHCE-MCA Software Engineering Concepts 36
37. The systems engineering process
Requirements
definition
System
decommissioning
System
design
definition
System
evolution
decommissioning
Sub-system
design
System
evolution
System
Sub-system
development
System
installation
System
integration
NHCE-MCA Software Engineering Concepts 37
39. 1.System requirements definition
Three types of requirement defined at this stage
• Abstract functional requirements. Systemq y
functions are defined in an abstract way.
System properties Non functional requirements for• System properties. Non-functional requirements for
the system in general are defined.
• Undesirable characteristics. Unacceptable system
behaviour is specified.
Should also define overall organisational objectives for
the system
NHCE-MCA Software Engineering Concepts 39
the system.
40. System requirements problems
Complex systems are usually developed to address
wicked problems
• Problems that are not fully understood;
Must anticipate hardware/communicationsMust anticipate hardware/communications
developments over the lifetime of the system.
Hard to define non-functional requirements
(particularly) without knowing the
component structure of the system.
NHCE-MCA Software Engineering Concepts 40
42. System design process
Partition requirements
• Organise requirements into related groupsOrganise requirements into related groups.
Identify sub-systems
• Identify a set of sub-systems which collectively can meet
the system requirements.
Assign requirements to sub-systems
Specify sub system functionalitySpecify sub-system functionality.
Define sub-system interfaces
NHCE-MCA Software Engineering Concepts 42
• Critical activity for parallel sub-system development.
43. System design problems
Requirements partitioning to hardware,
software and human components may involve a lot ofsoftware and human components may involve a lot of
negotiation.
Difficult design problems are often assumed to be readily
solved using software.
Hardware platforms may be inappropriate for
software requirements so softwaresoftware mustmust compensatecompensateq pp
forfor thisthis..
NHCE-MCA Software Engineering Concepts 43
44. Requirements and design
Requirements engineering and system design are
inextricably linked.
Constraints posed by the system’s environment and
other systems limit design choices so the actual design toother systems limit design choices so the actual design to
be used may be a requirement.
I iti l d i b t t t thInitial design may be necessary to structure the
requirements.
NHCE-MCA Software Engineering Concepts 44
45. Spiral model of requirements/design
NHCE-MCA Software Engineering Concepts 45
46. System modelling
An architectural model presents an abstractabstract viewview of the
sub-systems making up a systemy g p y
May include major informationinformation flowsflows between sub-
systemssystems
Usually presented as a blockblock diagramdiagram
May identify different types of functionalfunctional componentcomponent in
the model
NHCE-MCA Software Engineering Concepts 46
48. Sub-system description
Sub-system Description
Movement sensors Detects movement in the rooms monitored by the system
Door sensors Detects door opening in the external doors of the building
Alarm controller Controls the operation of the systemAlarm controller Controls the operation of the system
Siren Emits an audible warning when an intruder is suspected
Voice synthesizer Synthesizes a voice message giving the location of the suspected intruder
Telephone caller Makes external calls to notify security, the police, etc.
NHCE-MCA Software Engineering Concepts 48
50. 3.Sub-system development
Typically parallel projects developing the
hardware, software and communications.hardware, software and communications.
May involve some COTS (Commercial Off-the-Shelf) systems
procurement.procurement.
Lack of communication across implementation
teams.teams.
Bureaucratic and slow mechanism for
proposing system changes means that the development scheduleproposing system changes means that the development schedule
may be extended because of the need for rework.
NHCE-MCA Software Engineering Concepts 50
51. 4.System integration
The process of putting hardware,hardware, softwasoftware and
peoplepeople together to make a systempeoplepeople together to make a system.
Should be tackled incrementallyincrementally so that sub-systems
are integrated one at a time.
InterfaceInterface problemsproblems between sub-systems are usually
found at this stage.
May be problems with uncoordinated deliveriesMay be problems with uncoordinated deliveries
of system components.
NHCE-MCA Software Engineering Concepts 51
52. 5.System installation
After completion, the system has to be installed in the
t ’ i tcustomer’s environment
• Environmental assumptions may be incorrect;
• May be human resistance to the introduction of
a new system;
• System may have to coexist with alternative
systems for some time;
• May be physical installation problems (e.g.
cabling problems);
NHCE-MCA Software Engineering Concepts 52
• Operator training has to be identified.
53. 6.System evolution
Large systems have a long lifetime. They must evolve to
meet changing requirements.
Evolution is inherently costlyy y
• Changes must be analysed from a technical and business
perspective;perspective;
• Sub-systems interact so unanticipated problems can arise;
• There is rarely a rationale for original design decisions;• There is rarely a rationale for original design decisions;
• System structure is corrupted as changes are made to it.
NHCE-MCA Software Engineering Concepts 53
54. 7.System decommissioning
Taking the system out of service after its useful lifetime.
May require removal of materials (e g dangerousMay require removal of materials (e.g. dangerous
chemicals) which pollute the environment
• Should be planned for in the system design by
encapsulation.
May require data to be restructured and converted to be
used in some other system.y
NHCE-MCA Software Engineering Concepts 54
55. Organizations/people/systemsOrganizations/people/systems
Socio-technical systems are organisational systems
intended to help deliver some organisationalorganisational or
businessbusiness goalgoal.
If you do not understand the organisational environment
where a system is used, the system is less likely to meetwhere a system is used, the system is less likely to meet
the real needs of the business and its users.
NHCE-MCA Software Engineering Concepts 55
56. Human and organisational factors
Process changes
• Does the system require changes to the worky q g
processes in the environment?
Job changes
• Does the system de-skill the users in an environment or
cause them to change the way they work?
O i ti l hOrganisational changes
• Does the system change the political power structure in
an organisation?an organisation?
NHCE-MCA Software Engineering Concepts 56
57. Organisational processes
The processes of systems engineering overlap and
interact with organisational procurementprocurement processesprocesses..
Operational processes are the processes involved in
using the system for its intended purpose For newusing the system for its intended purpose. For new
systems, these have to be defined as part of the system
d idesign.
Operational processes should be designed to be flexible
and should notnot forceforce operationsoperations toto bebe donedone in a
particular way. It is important that human operators can
NHCE-MCA Software Engineering Concepts 57
p y p p
use their initiative if problems arise.
59. System procurement
Acquiring a system for an organization to meet some need
Some system specification and architectural design is usuallySome system specification and architectural design is usually
necessary before procurement
• You need a specification to let a contract for systemYou need a specification to let a contract for system
development
• The specification may allow you to buy a commercial off-the-The specification may allow you to buy a commercial off the
shelf (COTS) system. Almost always cheaper than developing
a system from scratch
Large complex systems usually consist of a mix of off the shelf and
specially designed components. The procurement processes for
NHCE-MCA Software Engineering Concepts 59
these different types of component are usually different.
60. The system procurement process
ChooseIssue requestChooseAdapt
Off-the-shelf
system available
Choose
supplier
Issue request
for bids
Choose
system
Adapt
requirements
Survey market forSurvey market for
existing systems
Let contract forNegotiateSelectIssue request Let contract for
development
Negotiate
contract
Select
tender
Issue request
to tender
Custom system
required
NHCE-MCA Software Engineering Concepts 60
61. Procurement issues
Requirements may have to be modified to match the
capabilities of off-the-shelf components.
The requirements specification may be part of theq p y p
contract for the development of the system.
Th i ll t t ti ti i d tThere is usually a contract negotiation period to agree
changes after the contractor to build a system has been
selected.
NHCE-MCA Software Engineering Concepts 61
62. Contractors and sub-contractors
The procurement of large hardware/software systems is
usually based around some principal contractor.
Sub-contracts are issued to other suppliers to supplypp pp y
parts of the system.
C t li ith th i i l t t d dCustomer liases with the principal contractor and does
not deal directly with sub-contractors.
NHCE-MCA Software Engineering Concepts 62
64. Legacy systemsLegacy systems
Socio-technical systems that have been developed using old or
obsolete technology.
Crucial to the operation of a business and it is often too risky to
discard these systems
• Bank customer accounting system;
• Aircraft maintenance system.
Legacy systems constrain new business processes and consume a
high proportion of company budgets.
NHCE-MCA Software Engineering Concepts 64
65. Legacy system components
Hardware - may be obsolete mainframe hardware.
Support software - may rely on support software from suppliers who
are no longer in business.
Application software - may be written in obsolete programming
languages.
Application data - often incomplete and inconsistent.
Business processes - may be constrained by software structure and
functionality.
Business policies and rules - may be implicit and embedded in the
system software.
NHCE-MCA Software Engineering Concepts 65
66. Chapter Review Questions
1. What are the difference between generic software product development and
custom software development?
2 Describe important attribute which all software product should have2. Describe important attribute which all software product should have.
3. What is the difference between a software process model and a software
process?
4.4. SuggestSuggest in which way a Software process model might be helpful in identifying
possible process improvement.
5 Di th i i i ft i i f i l thi /5. Discuss the various issues in software engineering professional ethics/
responsibility.
6. Explain ACM/IEEE code of ethics and suggest an appropriate example that6 p a C / code o et cs a d suggest a app op ate e a p e t at
illustrates that clause.
7. Discuss in detail systemsystem engineeringengineering processprocess with example.
NHCE-MCA Software Engineering Concepts 66
8. Explain system procurement process.
9. Explain why legacy systems may be critical to the operation of a business.
67. First Class Test Questions
1. Explain ACM/IEEE code of ethics and suggest an appropriate
example that illustrates that clause.
2. Discuss in detail system engineering process with example.
3. Explain system procurement process.
4. Explain why legacy systems may be critical to the operation of a
business.
5 Suggest in which way a Software process model might be5. Suggest in which way a Software process model might be
helpful in identifying possible process improvement.
Test Date: 26-02-2010
Time: 3.00-3.45pm
NHCE-MCA Software Engineering Concepts 67
e 3 00 3 5p
Note: Out of five questions any three questions will be asked to write the test but students should study all the
questions