Software Engineering Economics
Software Engineering Economics
Software Engineering Economics
Economics
Course Objectives
• This course combines knowledge from two important disciplines – software engineering
and economics.
• It covers the application and utility of economics concepts such as
• production functions,
• marginal analysis,
• future value in the domain of software engineering.
• Important techniques such as
• software business case analysis
• risk management
• software development process selection
• and software cost estimation are introduced.
• A chunk of the course is also devoted to highlighting the importance of human factors
(e.g. success critical stakeholders’ value propositions) in software engineering.
Goals
• Familiarize students with concepts and techniques necessary for
management positions in the software development industry
• Allow students to gain hands-on experience in using software tools
(e.g. COCOMO II) for making key software project management
decisions
Course schedule
1.Course overview; the Concept of Economic.
2.Software Engineering: Past, Present, & Future
3.Software development process selection (Agile vs. Plan-driven)
4.Value-based software engineering (VBSE)
5.Software Cost Estimation overview; COCOMO II
6.Using COCOMO II for software management decisions
7.Software business case analysis
Course schedule
8.Economic Analysis
• Cost-effectiveness analysis
• Multiple-goal decision analysis
• Dealing with risk
9.Economics of software quality
10.Software engineering ethics
The Definition of Economic
• Engineering on the other hand, is all about developing products, using well-
defined, scientific principles and methods.
The Importance of Software
Engineering
Need of Software Engineering
• Large software - It is easier to build a wall than to a house or building,
likewise, as the size of software become large engineering has to step
to give it a scientific process.
• Scalability- If the software process were not based on scientific and
engineering concepts, it would be easier to re-create new software
than to scale an existing one.
• Cost- As hardware industry has shown its skills and huge
manufacturing has lower down he price of computer and electronic
hardware. But the cost of software remains high if proper process is
not adapted.
Need of Software Engineering
• Dynamic Nature- The always growing and adapting nature of
software hugely depends upon the environment in which user works.
If the nature of software is always changing, new enhancements need
to be done in the existing one. This is where software engineering
plays a good role.
• Quality Management- Better process of software development
provides better and quality software product.
Characteristics of good software
• Operational
• Transitional
• Maintenance
Operational
• This tells us how well software works in operations. It can be
measured on:
• Budget
• Usability
• Efficiency
• Correctness
• Functionality
• Dependability
• Security
• Safety
Transitional
• This aspect briefs about how well a software has the capabilities to
maintain itself in the ever-changing environment:
• Modularity
• Maintainability
• Flexibility
• Scalability
Software Development Life Cycle (SDLC)
Communication
• This is the first step where the user initiates the request for a desired
software product.
• The team holds discussions with various stakeholders from problem domain and tries
to bring out as much information as possible on their requirements.
• The requirements are contemplated and segregated into user requirements, system
requirements and functional requirements.
• There are many algorithms available, which help the developers to conclude the
feasibility of a software project.
System Analysis
• At this step the developers decide a roadmap of their plan and try to bring up
the best software model suitable for the project.
• The project team analyzes the scope of the project and plans the schedule and
resources accordingly.
Software Design
• Next step is to bring down whole knowledge of requirements and analysis on the desk and
design the software product.
• The inputs from users and information gathered in requirement gathering phase are the inputs
of this step.
• The output of this step comes in the form of two designs; logical design and physical design.
• Engineers produce
• meta-data and data dictionaries
• logical diagrams
• data-flow diagrams
• some cases pseudo codes.
Software Design
Coding
• module testing
• program testing
• product testing,
• in-house testing
• testing the product at user’s end.
• Early discovery of errors and their remedy is the key to reliable software.
Integration
• Integration and Test Phase. How much testing and formal verification
should we perform on a product before releasing it to users?
decision situations for software
engineering economics
• • Maintenance Phase. Given an extensive list of suggested product
improvements, which ones should we implement first?
• Waterfall Model
• Iterative Model
• Spiral Model
• V – model
• Big Bang Model
Waterfall model
• Waterfall model is the simplest model of software
development paradigm. It says the all the phases of SDLC
will function one after another in linear manner. That is,
when the first phase is finished then only the second
phase will start and so on.
Waterfall model
• This model assumes that everything is carried out and taken place
perfectly as planned in the previous stage and there is no need to
think about the past issues that may arise in the next phase. This
model does not work smoothly if there are some issues left at the
previous step. The sequential nature of model does not allow us go
back and undo or redo our actions.
• This model is best suited when developers already have designed
and developed similar software in the past and are aware of all its
domains.
Iterative Model