the need for a pragmatic approach to software engineering

12
Page 1 - 12 C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp w w w . s o f t w a r e s e r v i c e s l a n k a . c o m S E N S I B L E S O L U T I O N S SOFTWARE ENGINEERING AN EFFORT TO STRIKE A SENSIBLE BALANCE

Upload: ssl

Post on 03-Jul-2015

548 views

Category:

Education


1 download

DESCRIPTION

Software Engineering - An effort to strike a sensible balance

TRANSCRIPT

Page 1: The need for a pragmatic approach to software engineering

Page 1 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

w w w . s o f t w a r e s e r v i c e s l a n k a . c o m

S E N S I B L E S O L U T I O N S

SOFTWARE ENGINEERINGAN EFFORT TO STRIKE A SENSIBLE BALANCE

Page 2: The need for a pragmatic approach to software engineering

Page 2 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

To begin with

● Software Engineering cannot be an after thought● 'Engineering' is defined as follows

'the discipline, art, and profession of acquiring and applying scientific, mathematical,

economic, social, and practical knowledge to design and build structures, machines,

devices, systems, materials and processes that safely realize improvements to the lives

of people.'

Wikipedia - http://en.wikipedia.org/wiki/Engineering

'The creative application of scientific principles to design or develop structures,

machines, apparatus, or manufacturing processes, or works utilizing them singly or in

combination; or to construct or operate the same with full cognizance of their design;

or to forecast their behaviour under specific operating conditions; all as respects an

intended function, economics of operation and safety to life and property.'

The American Engineers' Council for

Professional Development - Wikipedia

Engineering is the application of science to the needs of humanity. This is accomplished

through knowledge, mathematics, and practical experience applied to the design of

useful objects or processes.

http://www.wordiq.com/definition/Engineering

Page 3: The need for a pragmatic approach to software engineering

Page 3 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

Why do we get it wrong ?

● There can be many reasons ● Requirements (misses, misinterpretations, over emphasis, etc.)● Expertise and resourcing● Planning and execution● Technology● Engineering, etc.

● The exact causes depend on the context under consideration

Page 4: The need for a pragmatic approach to software engineering

Page 4 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

A common symptom

● A more common grouping of reasons points to engineering.

● Not being able get the right balance for the task at hand.

● A question of 'How much to engineer' than 'How to engineer'

Too little Too Much Ideal point/amount of engineering required depends on the requirements and

overall context (business, IT, expertise, etc.)

Page 5: The need for a pragmatic approach to software engineering

Page 5 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

What are the problems ?

A closer analysis points to● Dynamics of software● Choice and impact of marketing● Technology influence on user requirements

Page 6: The need for a pragmatic approach to software engineering

Page 6 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

Dynamics of software● Software is intangible (not having a physical substance)

● Makes it unique especially from an engineering perspective● Other fields of engineering deal with moulding of physical property which consumes longer

time & effort making innovation to take place at a much slower pace

● Today it is an established norm to test and evaluate design integrity and performance through software to minimise the physical forms of testing to save time and money. e.g. Design and construction of the A380.

● Unqueness makes innovation on software to be fast paced , constant, progressive and disruptive

● Todays solution stack comprises many technology components from different quarters

● Creates a interdependent stack

● Each of these components has its own cycle and pace of innovation

● These cycles will have a knock on effect on referenced components

● Creates an environment which is unpredictable and fluid

Page 7: The need for a pragmatic approach to software engineering

Page 7 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

Dynamics of software – The Innovation cycleThe diagram illustrates the constant innovation cycle a software is subjected to

● Progressive - Backward Compatible innovation mainly referes to progressive releases of software functionality which does not have a fundamental change impact on the existing versons the software.

● Progressive Backward Incompatible innovation refers to progressive change which has an impact on the existing platform. The roll out of Microsoft .NET framework 2.0 which mandated all code compiled on the previous version of the framework to be recompiled with amendments.

● Disruptive innovation refers to fundamental change on the existing software where the innovation breaks all that is established. e.g. Microsoft's move from Visual Studio 6.0 to the .NET platform – a fundamental change in its direction. The roll out of XML based technologies (including web services) as a mechanism for intergration and interoperability – A fundamental change in itegration

Innovation cycle

Progressive Disruptive

Backward Compatible

Backward Incompatible

Existing and related software assets mandated to be re-engineered

Minimum or no alterationsto accommodate

Page 8: The need for a pragmatic approach to software engineering

Page 8 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

Choice and impact of marketing● Software solutions are stiched together with technologies which are packaged

and made available through software products. ● Relational database technologies are made available through products such as Oracle DB,

SQL Server, MySQL, PostGres SQL, etc. HTML with browsers (Chrome, FireFox, IE, etc.).

● Implementation of a specific technology can include deviations from the standards (substractions and additions which are vendor specfic as per their technology and product strategies)

● Can include other non related technologies

● HTML comes packaged with web browsers. IE by microsoft also includes silverlight, .NET framework, etc. technologies plus HTML standards conformance will vary at the pheriphary.

● Today's technology landscape offers many alternatives (from open source to commercial) for putting together a technology stack.

● Spoilt for choice

● There can be many right alternatives for a particular requirement

● Each alternative comes with its strenghts and weaknesses

● Trying to make sense can be a real challange

Page 9: The need for a pragmatic approach to software engineering

Page 9 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

Choice and impact of marketing● This is futher complicated by the influence of marketing hype

● Marketing hype is a very visible entity in IT.

● While marketing has it merits in terms of creating the visibility for sales it also influences and blinds a well thought out and researched decision making process.

● A product vendor will always try to push through his proposition sometimes overlooking the actual merits, shortcomings and scope

● Very often the industry is exposed to technology / product release cycles which are marketted as 'THE ANSWER' panacea for all evils.

– Releases of Visual Studio 6.0, XML and web services, enterprise service bus, RIA, Silverlight, etc.

● Has it lived up to expectations (promise(s))? – But when the dust settles one eventually figures outs its practical scope and application– And by then there may some other thing or things to be 'Gung Ho' about

Page 10: The need for a pragmatic approach to software engineering

Page 10 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

Technology on user requirements● Engineering is undertaken to deliver on customer requirements and

expectations● Customer's expect value, bears the bills and consequences

● There are instances where technology overwhelms customer requirements.

● Results in ● Drive for technology perfection

● Complexity and bugs

● Project delays

● And at the end user rejection and lack of buy-in due to usability and value

● The reasons for such technology influence can be traced to● Technology marketing hype/influence, overpromise, immaturity and blind passion of

technologists and technology providers

– Projects driven and influenced by technologists● Lack of focus, priority and drive on user/business requirements, value creation and usability

Page 11: The need for a pragmatic approach to software engineering

Page 11 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

How do we cope● Software engineering cannot be an after thought

● It has to be a well thought out and researched approach. There is no magic pill

● Following guidelines can be cosidered as a start● Customer value, requirements and expectations are NO 1 priority

– Technology is only a tool and a platform for delivery– Relevence, Intiutiveness and usability are key to winning the customers

● Don't aim for perfection specially on a platform that is fluid and disruptive

– Everything as we know today will change tomorrow if not day after tomorrow

– Minimum or optimum as opposed to maximum engineering

– Layers of decoulping or abstraction to cope with change● Consider all alternatives of its merits and short commings in detail prior to selection

– Don't go simply by the marketing bull– Don't know ask or get help– Don't re-invent the wheel

● Be sensible and practical

Page 12: The need for a pragmatic approach to software engineering

Page 12 - 12C:\Users\Rizvi\Google Drive\Public Documents\15bd22ce-1200-41d9-8684-756928788a53-SSL-SE.odp

Contact detailsWebsite www.softwareserviceslanka.com

Email [email protected]

Phone +94 72 559 8983, +94 77 347 0531

Address 40/6B Swarnadisi Place, Koswattha Road Nawala, Rajagiriya, Sri Lanka CO 10100