You are on page 1of 48

Software Engineering

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

• The dictionary defines “economics” as “a social science concerned chiefly with


description and analysis of the production, distribution, and consumption of
goods and services.” Here is another definition of economics that I think is
more helpful in explaining how economics relates to software engineering.

• Economics is the study of how people make decisions in resource-limited


situations. This definition of economics fits the major branches of classical
economics very well.
software economics
• Software economics is the study of how scarce project resources are
allocated for software projects.
• 
•  Software economics helps software managers allocate those
resources in the most efficient manner. 

• The process of counting function points, gathering data, analyzing


data is commonly referred to as Software Metrics, but in reality is a
branch of economics which should be called Software Economics
Software Engineering
• All Economics of all industrial nations are depends on software
• More and more system are software controlled
• Software Engineering is concerned with theories , methods and tools
for professional software development.
• Expenses on software represents a significant part in all developed
countries.
Software Engineering and
Project Management
• Software Engineering  is
• Designing the Software Architecture
• Designing the Software
• Converting complex logic/algorithm to code
• Testing and Debugging Software
• Project Management is:
• Understanding Software requirements and converting that to Project Requirements
• Preparing Plans to accomplish the work that needs to be done to meet those
requirements
• Estimating cost, effort, duration, resources required for the project
• Managing all the above aspects to take the project to conclusion
Software Cost
• Total Cost = Software Costs + Hardware Costs
• Software Costs often control computer system costs
• The cost of software on a PC or Laptop are often greater than the
hardware cost.
• Software Costs more to maintain than it does to develop.
• For System with long life, maintenance costs may be several times
developments costs.
• Software engineering is concerned with the cost-effective software
development
Software Products
• Generic products
• Stand-alone system that are marketed and sold to any customer who wishes to
buy them.
• Example : Graphics programs , project management tools and Microsoft
products
• The specification of what the software should do is owned by Developer and
decisions on software change are made by the developer
• Customized Products
• Software is specially made by a specific customer to meet their own need.
• The specification of what the software should do is owned by the customer for
the software and they made the decisions on software change that are required.
The Importance of Software
Engineering
• Software is more than just a program code.
• A program is an executable code, which serves some computational
purpose.
• Software is considered to be collection of executable programming code,
associated libraries and documentations.

• Software, when made for a specific requirement is called software product.

• 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 is important when the software is moved from one


platform to another:
• Portability
• Interoperability
• Reusability
• Adaptability
Maintenance

• 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.

• He contacts the service provider and tries to negotiate the terms.

• He submits his request to the service providing organization in


writing.
Requirement Gathering
• This step onwards the software development team works to carry on the project.

• 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.

• The requirements are collected using a number of practices as given -


• studying the existing or obsolete system and software,
• conducting interviews of users and developers,
• referring to the database or
• collecting answers from the questionnaires.
Feasibility Study
• After requirement gathering, the team comes up with a rough plan of software
process.

• At this step the team analyzes


• if a software can be made to fulfill all requirements of the user
• if there is any possibility of software being no more useful.

• It is found out, if the project is financially, practically and technologically feasible


for the organization to take up.

• 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.

• System analysis includes


• Understanding of software product limitations
• learning system related problems
• changes to be done in existing systems beforehand
• identifying and addressing the impact of project on organization and personnel etc.

• 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

• This step is also known as programming phase.

• The implementation of software design starts in terms of writing


program code in the suitable programming language and developing
error-free executable programs efficiently.
Testing

• Software testing is done while coding by the developers and thorough


testing is conducted by testing experts at various levels of code such as

• 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

• Software may need to be integrated with the libraries, databases and


other program(s).

• This stage of SDLC is involved in the integration of software with outer


world entities.
Implementation

• This means installing the software on user machines.

• At times, software needs post-installation configurations at user end.

• Software is tested for portability and adaptability and integration


related issues are solved during implementation.
Operation and Maintenance

• This phase confirms the software operation in terms of more


efficiency and less errors. If required,
• The users are trained on,
• The documentation on how to operate the software and
• how to keep the software operational.

• The software is maintained timely by updating the code according to


the changes taking place in user end environment or technology.
• This phase may face challenges from hidden bugs and real-world
unidentified problems.
Disposition

• This phase includes


• archiving data
• required software components
• closing down the system
• planning disposition activity
• terminating system at appropriate end-of-system time.
Decision situations for software
engineering economics
• Feasibility Phase. How much should we invest in information system analyses in
order to converge on an appropriate definition and concept of operation for the
system we plan to implement?

• Information system includes


• user questionnaires
• and interviews
• current-system analysis
• workload characterizations
• Simulations
• Scenarios
• prototypes
decision situations for software
engineering economics
• Plans and Requirements Phase. How much should we invest in
requirements validation activities before proceeding to design and
develop a software system?

• Product Design Phase. Should we organize the software to make it


possible to use a complex piece of existing software that generally but
not completely meets our requirements?
decision situations for software
engineering economics

• Programming Phase. Given a choice between three data storage and


retrieval schemes that are primarily execution-time efficient, storage
efficient, and easy to modify, respectively, which of these should we
choose to implement?

• 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?

• Phaseout. Given an aging, hard-to-modify software product, should


we replace it with a new product, restructure it, or leave it alone?
Software Development Processes
• Plan-Driven : Process all Processes where all of the process activities
are planned in advance and progress is measured against this plan

• Agile : Processes planning is incremental and it is easier to change the


process to reflect changing customer requirement
Software Development Paradigm

• 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

• This model leads the software development process in iterations. It


projects the process of development in cyclic manner repeating every
step after every cycle of SDLC process.
Iterative Model
• The software is first developed on very small scale and all the steps
are followed which are taken into consideration. Then, on every next
iteration, more features and modules are designed, coded, tested and
added to the software. Every cycle produces a software, which is
complete in itself and has more features and capabilities than that of
the previous one.
• After each iteration, the management team can do work on risk
management and prepare for the next iteration. Because a cycle
includes small portion of whole software process, it is easier to
manage the development process but it consumes more resources.
Spiral Model

• Spiral model is a combination of both,


iterative model and one of the
SDLC model. It can be seen as
if you choose one SDLC model
and combine it with cyclic
process (iterative model).
Spiral model
• This model considers risk, which often goes un-noticed by most other
models. The model starts with determining objectives and
constraints of the software at the start of one iteration. Next phase
is of prototyping the software. This includes risk analysis. Then one
standard SDLC model is used to build the software. In the fourth
phase of the plan of next iteration is prepared.
V – model

• The major drawback of waterfall


model is we move to the next stage
only when the previous one is finished
and there was no chance to go back
if something is found wrong in later stages.
V-Model provides means of testing
of software at each stage in reverse
manner.
V – model
• At every stage, test plans and test cases are created to verify and
validate the product according to the requirement of that stage. For
example, in requirement gathering stage the test team prepares all
the test cases in correspondence to the requirements. Later, when the
product is developed and is ready for testing, test cases of this stage
verify the software against its validity towards requirements at this
stage.
• This makes both verification and validation go in parallel. This model
is also known as verification and validation model.
Big Bang Model

• This model is the simplest model in its form. It requires


little planning, lots of programming and lots of funds. This
model is conceptualized around the big bang of universe.
As scientists say that after big bang lots of galaxies, planets
and stars evolved just as an event. Likewise, if we put
together lots of programming and funds, you may achieve
the best software product.
Big Bang Model
• For this model, very small amount of planning is required. It does not
follow any process, or at times the customer is not sure about the
requirements and future needs. So the input requirements are
arbitrary.
• This model is not suitable for large software projects but good one
for learning and experimenting.

You might also like