Post on 17-May-2017
Software Engineering Myths and Realities
By Mohsin Sheikh
Why SE is Required-Apart from Programming
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
Computer Science Software Engineeringis concerned with
Theory Fundamentals
The practicalities of developing
Delivering useful software
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 SEPMIt is Change and Complexity For Handling
User CountsSoftware SizeDevelopment and Operating CostDevelopment and Execution TimeTechnology and ToolsEffort
Why Software Engineering is Hard ?
Mozilla contains 3 Million lines of code UNIX contains 4 million lines of code SIZE is a BIG Problem Windows 2000 contains 108 lines of code
“Software engineering is about managing all the sources of complexity to produce effective software”
Software vs. Hardware
Time
Failu
re ra
te
Wear out
Infant mortality
Time
Failu
re ra
te
obsolescence
Hardware failure rates Idealized software failure rates
Time
Failu
re ra
te
Change
Side effects
software failure due to change
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?
YES54%
NO24%
YES&NO (depending on context)
22%
What do you think?
What Needs to be ImprovedTechnology
TrainingCost of Development
Pay of EngineerWork Task Completion Time
Client InteractionsLeaders and Experience Persons DirectionsVacations, Company Policies, Retentions of
Employee etc.Or
Some improvements over -Requirement, Planning, Design, Coding, Testing
OrMotivation 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 Batch Limited
distribution Custom
software
Second era Multiuser Real-time Database Product
software
Third era Distributed
systems Embedded
“intelligence”
Low cost hardware
Consumer impact
Fourth era Powerful
desk-top systems
OOP Parallel Internet
1950 1960 1970 1980 1990 200x
Incr
easin
g Am
ount
s of S
oftw
are
The fifth era?• Cloud computing•Web 2.0• Smart phones• Multi-core
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 Requirements analysis
Organizing the information Requirements specification
Writing detailed instructions about how the software should behave
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
© Lethbridge/Laganière 2005
Chapter 1: Software and Software Engineering
15
Modeling Creating representations of the domain or the software
Use case modeling Structural modeling Dynamic and behavioral modeling
ProgrammingQuality assurance
Reviews and inspections Testing
DeploymentManaging the process
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 so…NO 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….
Initial (1)
Repeatable (2)
Defined (3)
Managed (4)
Optimizing (5)
Basic management control
Integrated end-to-end process
Measurement
Feedback
Process discipline
Process definition
Process control
Process improvement
Maturity Levels of Organizations Developing Code
Rational Unified Process®
Best Practices: Develop software iteratively Manage requirements Use component-based architectures Visually model software Verify software quality Control changes to software
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.
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 distributionWaterfall model
Iterative development
Component-based software engineering
Development and evolution costs for long-lifetime systems
System evolution
10 200 30 4000
System development
Specification Design Development Integration and testing
25 50 75 1000
Specification Development Integration and testing
25 50 75 1000
Specification Iterative development System testing
25 50 75 1000
Product development costs
Specification Development System testing
25 50 75 1000
engine body wheels other parts
compose
car
Why this industry is on Top from the last 15 Years….
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 SessionsSession -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 GuidelinesTheory and Practice Sessions
Session -4: Testing Tools and OperationsHands On and Practice Sessions
The Next Frontier - On Demand Solutions For Your BusinessCloud
WebClient-Server Computing
Personal ComputersMainframe
Next Frontier-Cloud Tools and Technologies
Thank You…Mail-ID: mohsin07er@hotmail.com
Mb:(+91) 9009928905