Sunteți pe pagina 1din 28

Software Engineering Myths and Realities

By Mohsin Sheikh

Why SE is Required-Apart from Programming

Computer Science
Theory Fundamentals

Software Engineering
The practicalities of developing Delivering useful software

is concerned with

Computer science theories are currently insufficient to act as a complete underpinning for software engineering, BUT it is a foundation for practical aspects of software engineering

Why Software as a Engineering Stream


Electrical Engineering- To satisfy growing power needs Mechanical Engineering- To provide Locomotion Civil Engineering-To provide Shelter Software Engineering------ Not Known Is it Effort Is it Size Is it Cost Is it Time Is it Technology Is it Failure

What Needs to be Handled with SEPM


It is Change and Complexity For Handling User Counts Software Size Development and Operating Cost Development and Execution Time Technology and Tools Effort

Why Software Engineering is Hard ?


Mozilla contains 3 Million lines of code UNIX contains 4 million lines of code Windows 2000 contains 108 lines of code

SIZE is a BIG Problem

Software engineering is about managing all the sources of complexity to produce effective software

Software vs. Hardware


Infant mortality Wear out

Failure rate

Failure rate

obsolescence

Time

Time

Hardware failure rates

Idealized software failure rates

Failure rate

Side effects

Change

software failure due to change

Time

What Needs to be Managed

Understandability (Ease of Use) Availability (Access time, downtime) Reliability (Failure Recovery) Maintainability (Easy to Manage and Maintain) Affordability (Cost Benefits) Deployability (Easy to Migrate) Disposability (Easy to Remove at end of Lifecycle)

Who is Involved- Stakeholders Customer, Requirement Engineer, Analyst, Project Lead, Programmer, Business Consultant etc.

How it Works Comprehensively ?

Understanding Level with Stakeholders

Are software developers different to other professionals?

YES&NO (depending on context) 22%

What do you think?

YES 54%

NO 24%

What Needs to be Improved


Technology Training Cost of Development Pay of Engineer Work Task Completion Time Client Interactions Leaders and Experience Persons Directions Vacations, Company Policies, Retentions of Employee etc. Or Some improvements over -Requirement, Planning, Design, Coding, Testing Or Motivation to do All

Aim is towards a Process Formation

Make the overall process improved


It automatically guides a product development which have all the quality characteristics instead of verifying each product on some quality checks. Judge the system Quantitatively rather than Qualitatively (Numeric Measure of Assessment)
Here standards and Guidelines comes into play. What we have ? ISO, CMMI, SPICE, PSP-TSP etc (Wide range is available from Requirements gathering to Deployment)

Software Eras
Early years Second era Third era Fourth era Batch Multiuser Distributed Powerful systems desk-top Limited Real-time systems distribution Database Embedded intelligence OOP Custom Product software software Low cost Parallel hardware Internet Consumer impact The fifth era? Cloud computing Web 2.0 Smart phones Multi-core

1950

1960

1970

1980

1990

200x

Increasing Amounts of Software

Steps of Activities Common to Software Projects...


Requirements

and specification

Includes

Domain analysis Defining the problem Requirements gathering

Obtaining input from as many sources as possible Organizing the information Writing detailed instructions about how the software should behave

Requirements analysis

Requirements specification

Activities Common to Software Projects...


Design

Deciding how the requirements should be implemented, using the available technology Includes:

Systems engineering: Deciding what should be in hardware and what in software Software architecture: Dividing the system into subsystems and deciding how the subsystems will interact Detailed design of the internals of a subsystem User interface design Design of databases

Activities Common to Software Projects


Modeling

Creating representations of the domain or the software

Use case modeling Structural modeling Dynamic and behavioral modeling

Programming

Quality

assurance

Reviews and inspections Testing

Deployment Managing

the process

15

Chapter 1: Software and Software Engineering

Lethbridge/Laganire 2005

Myth-Programming is Everything

It is sufficient for each type of development No need to go inside the development logics Easy to write code Everything is already available Easy to learn programming practices Coding is the main part of software Cost factors only depends on coding

Then why humans are hired..why not some automated tool for code generation..

Why Manpower

The way of writing code , The way of Understanding Problem, The Effort Reduction Feel can only be Realized by Humans This is what make you Unique and Powerful & If you are unable to do soNO need of yours MIS-UNDERSTANDING in industry..

Software Engineer is Better than CODER


CODE is not EVERYTHING It is a Part of SOMETHING

No need to Learns Code .Learn How to Code in an effective manner Let us Take a look Over How Code Impact on Industry Quality Value Assessment.

Maturity Levels of Organizations Developing Code


Optimizing (5)

Process improvement

Process control

Managed (4)

Feedback

Process definition

Defined (3)

Measurement

Process discipline

Repeatable (2)

Integrated end-to-end process

Initial (1)

Basic management control

Rational Unified Process


The Rational Unified Process is a Software Engineering Process. It provides a disciplined approach to assigning tasks and responsibilities within a development organization. Its goal is to ensure the production of high-quality software that meets the needs of its end-users, within a predictable schedule and budget.

Best Practices: Develop software iteratively Manage requirements Use component-based architectures Visually model software Verify software quality Control changes to software

What are the costs of software engineering?

Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability. Distribution of costs depends on the development model that is used.

Activity cost distribution


Wat erfal l mod el 0 25 50 75 100

Sp eci f i cat io n

Desi gn

Develo pment

Int eg rat i on and t es t in g

It erati ve develo pmen t 0 25 50 75 1 00

Sp eci f i cat io n

Iterat iv e d evel op m en t i neerin g 50 75

Sys t em t es t in g

Co m po nent -based so ftware en g 0 25

1 00

Sp eci f i cat io n

Develo pment

Int eg rat i on and t es t in g

Develo pment an d evol u ti on cos t s for lo ng -l ifeti m e sy st 0 10 200

em s 30 400

Sys t em d ev el op m ent

Sys t em evo lu ti on

Product development costs

25

50

75

100

Sp ecificatio n

Develo pmen t

System testin g

Why this industry is on Top from the last 15 Years.


engine body wheels other parts

compose

car

Concept

A new engine model in an existing body model results in a new car model A new engine can be designed based on existing engines As a summary, parts of a car (or the design of the parts) can be used for new cars (or models). A necessary condition for the use: part interface should be compatible. Reason behind fastest Growth is

Reusability and Code Sharing

SEPM Skill Improvements Sessions


Session -1:Cloud Tools and Applications
Hands On and Practice Sessions

Session -2: Design Guidelines with UML Modeling (Rational Rose, Plant UML etc)
Hands On and Theory Session

Session -3: Coding Standards and Guidelines


Theory and Practice Sessions

Session -4: Testing Tools and Operations


Hands On and Practice Sessions

The Next Frontier - On Demand Solutions For Your Business Cloud Web Client-Server Computing Personal Computers Mainframe

Next Frontier-Cloud Tools and Technologies

Thank You
Mail-ID: mohsin07er@hotmail.com Mb:(+91) 9009928905

S-ar putea să vă placă și