1
B Naresh Lecturer in BVRICE Dept., of Computer Science UNIT IINTRODUCTION: Software Engineering Process paradigms - Project management - Process and Project Metrics – software estimation - Empirical estimation models - Planning - Risk analysis - Software project scheduling.
INTRODUCTION
Define Software
A software system or software is:
(i) Instructions/Computer programs that when executed provide desired function & performance.
(ii) Data structures that enable the programs to adequately manipulate information. (iii) Documents that describe the operation and use of the programs.
We can say that a software system consists of a number of separate programs, configuration files, which are used to setup these programs, system documentation, which describes the structure of the system & user documentation which explains how to use the system & website for users to download recent product information.
*****************************************************************************
Characteristics of Software
Since, software is a logical system (whereas, hardware is a physical system), its characteristics are different from hardware:
1. Software is developed or engineered; it is not manufactured in the classical sense.
2
B Naresh Lecturer in BVRICE Dept., of Computer Science2. Software doesn’t “wear out”.
As time progresses, the hardware components start deterioration-they are subjected to environmental maladies such as dust, vibration, temperature etc. and at some point of time they tend to breakdown as shown in the below figure.
As shown in the below figure, the failure rate curve for software shows that, undiscovered defects will cause high failure rates early in the life of a program. These are corrected (without introducing other errors) and the curve flattens as shown in below figure.
3
B Naresh Lecturer in BVRICE Dept., of Computer Science 3. Most of the software continues to be custom built or customizable. Reusability is an important characteristic of high quality software component.
A software component should be designed and implemented so that it can be reused in many different programs.
4. Efficiency
Software is a said to be efficient if it uses the available resources in the most efficient manner.
The software should be able to offer a quick response in the least processing time using the resources at minimum level. The software should efficient perform what the user demanded and give appropriate response in each case.
5. Maintainability
If the change is to be required in the software then change leads to the change in the software so that it performs in accordance with the user requirement.
The software engineer has to respond very fast if there is any change in the user requirements. Changes should be performed like this that it will not affect the overall integrity of the software.
6. On-time
The software should be developed on-time. If the software is developed late then it is of no use. A good engineer always develops the software on-time.
7. Within budget
4
B Naresh Lecturer in BVRICE Dept., of Computer Science8. Functionality
The software system is developed in a manner that it performs the entire task perfectly for which it is developed. The software should respond correctly as the user wants.
9. Adaptability
The software should be Adaptable. Software is desired to be Adaptable all the changes efficiently. The software should easily adopt all the changes in the software with no change in the efficiency of the software.
10. Dependability
It is the ability of the software that should not cause any physical damage in the event of system failure. It includes a range of characteristics like: reusability, security, and safety.
If software satisfies all the above characteristics then it is said to be good software or the software is well engineered.
*****************************************************************************
Types of Software Product:
There are two fundamental types of software product:
1. Generic software: This software is produced by a development organization and sold on the open market to any customer.
Example: Graphics software- Photoshop, Office Automation- MS Office, Accounting Software
– Tally, Design Software-Auto CAD etc.
2. Customized software: This software is developed especially for a particular customer by a software contractor.
Examples: Banking Systems, Air traffic control software, Railway ticket reservation systems, Hospital Management Systems etc.
5
B Naresh Lecturer in BVRICE Dept., of Computer Sciencerequirements. For custom products, the specification is usually developed and controlled by the organization that is buying the software.
*****************************************************************************
What are various Software Applications?
Software may be applied in any situation for which a specified set of procedural steps (i.e. an algorithm) has been defined. Information content & determinacy are important factors in determining the nature of a software application. Following are the categories of the software with their corresponding applications.
1. System Software:
It is a collection of programs written to service other programs eg., Compliers, Editor, File Management utilities, Operating System. These are characterized by heavy interaction with computer hardware and heavy usage by multiple users.
2. Real Time Software:
It is software that monitors and analyzes the real world problems and meets strictly the timelines in execution.
3. Business Software:
System like payroll accounts receivable/payable, inventory, MIS (Maintenance Information Systems) software for providing information are included in business software.
4. Engineering & Scientific software:
Applications used specifically for engineering, research, simulation automated manufacturing etc. are included in such software.
5. Embedded Software:
Artificial Intelligence based (home applications) intelligent systems like keypad or microwave oven, automated washing machines etc.
6. Personal computer Software:
6
B Naresh Lecturer in BVRICE Dept., of Computer Science7. Web based software:
These mainly incorporate the instructi
8. Artificial Intelligence Software:
To solve complex specific problems eg: expert system, knowledge pattern recognition etc.
*****************************************************************************
Engineering on the other hand, is all about developing products, using well scientific principles and methods.
Software Engineering is a detailed study of Engineering to
maintenance of software. The software is introduced to address the issues of low quality software projects.
According to Fritz Bauer, Software Engineering is the establishment and use of sound engineering principles in order to obtain
efficiently on real machine.
Problems arise when software generally exceeds timelines, budgets and reduce the level of quality. It ensures that the application is built consistently, correctly, on
and within requirements. The demand of Software Engineering is also emerged to provide the
B Naresh Lecturer in BVRICE Dept., of Computer Science
These mainly incorporate the instructions based on CGI, HTML, PERL etc.
Artificial Intelligence Software:
To solve complex specific problems eg: expert system, knowledge
*****************************************************************************
on the other hand, is all about developing products, using well scientific principles and methods.
is a detailed study of Engineering to design, development and
of software. The software is introduced to address the issues of low quality
OR
According to Fritz Bauer, Software Engineering is the establishment and use of sound engineering principles in order to obtain economical software that is reliable and works
Problems arise when software generally exceeds timelines, budgets and reduce the level of quality. It ensures that the application is built consistently, correctly, on-time and on budget ements. The demand of Software Engineering is also emerged to provide the
B Naresh Lecturer in BVRICE Dept., of Computer Science
ons based on CGI, HTML, PERL etc.
To solve complex specific problems eg: expert system, knowledge-based systems,
*****************************************************************************
on the other hand, is all about developing products, using well-defined,
design, development and
of software. The software is introduced to address the issues of low quality
According to Fritz Bauer, Software Engineering is the establishment and use of sound
is reliable and works
7
B Naresh Lecturer in BVRICE Dept., of Computer Sciencehuge rate of change in user requirements and environment on which application is supposed to be working.
Description: A software product is judged by how easily it can be used by the end-user and the features it offers to the user. An application must score in the following areas:- 1) Operational: -This tells how good a software works on operations like budget , usability, efficiency, correctness ,functionality , dependability , security and safety.
2) Transitional: - Transitional is important when an application is shifted from one platform to another. So, portability, reusability and adaptability come in this area.
3) Maintenance: - This specifies how good software works in the changing environment. Modularity, maintainability, flexibility and scalability come in maintenance part.
8
B Naresh Lecturer in BVRICE Dept., of Computer Science Software Engineering Process paradigms:Software engineering paradigm or process model is an abstract representation of a process.
The process model is chosen based on nature of software project and application and then to obtain deliverable product method and tools are applied.
Using problem solving loop the software development can be done. The problem solving loop includes:
The existing status that represents current state of affairs (relationship).
In the problem identification phase particular problem is identified.
The technical development stage is for solving the identification problem using an appropriate technology.
Finally solution integration is responsible for delivering the results.
9
B Naresh Lecturer in BVRICE Dept., of Computer ScienceGeneric software process models are:
The water fall model -- Separate and distinct phases of specification and development.
Prototyping model –A quick design approach is adopted.
Incremental model – It emphasizes on short development cycle.
Rapid application and development (RAD) model.
Evolutionary process models – specification, development and validation are interleaved.
Incremental model
Spiral model
WIN-WIN spiral model
Concurrent development.
*****************************************************************************
Software Engineering as Layered Technology:
Software engineering is totally a layered technology. It means that, to develop software one will have to go from one layer to another layer. The all layers are related and each layer fulfills the all requirements of the previous layer. Below we given a figure which is basically
shows that software engineering as a layered technology.
10
B Naresh Lecturer in BVRICE Dept., of Computer Science1. A Quality Focus
2. Process
3. Methods
4. Tools
A Quality Focus Layer
Quality layer is the main layer of the software engineering or developments. An engineering approach must rest on a quality. An engineering approach including software engineering should have an organizational commitment to quality. The "Bed Rock" that supports software engineering is a quality focus. The implementation of complete quality management policies gives improved standards.
Process Layer
The process layer is the foundation (base) of software engineering process defines a
frame work for timely delivery of software. The various tasks can be performed in this layer.
Determining Deliverables.
Establishing milestones.
Software configuration / Change management.
Software Quality Assurance.
Methods Layer
Software engineering methods layers provide the technical knowledge (i.e ” how to’s” ) for building software. Methods comprise various collections of tasks of the following.
Requirement Analysis. Design.
Program Construction. Testing and support.
11
B Naresh Lecturer in BVRICE Dept., of Computer Science Tools Layer:The software Engineering Tools provide automated or semi-automated support for the process and methods. The tools are used to bring automation in software development process. Ex : CASE (Computer Aided Software Engineering) and Rational Rose etc are the tools which is used to draw the use case diagrams.
****************************************************************************** What is software process?
It is the process of slitting software development work into distinct stages/phases containing activities with the aim of better planning and management.
What are Process Models?
A Process model describes the sequence of phases for the entire lifetime of a product. Usually there are three main phases.
1. Definition/Concept phase 2. Implementation phase 3. Maintenance Phase
Definition Phase:
Definition phase answers “what” questions that is during the definition the software developers attempts to identify.
What information is to be processed?
What function and performance are desired? What validation conditions are required? What types of interfaces are to be established? What design constraints exists?
All the questions can be answered through 1. System Analysis
12
B Naresh Lecturer in BVRICE Dept., of Computer Science Development Phase:Development phase answered “How” questions. In this phase developer attempts to answer How data structure and software architecture are to be designed?
How procedural details are to be implemented?
How design will be translated into a programming language? How testing will be performed?
All the previous questions can be answered through 1. Software Design
2. Coding and 3. Software Testing
Maintenance Phase:
The maintenance phases focus on change that is associated with: Error correction
Adaptation required Enhancement Prevention
*****************************************************************************
Software Development Models
The software development models are the various processes or methodologies that are being selected for the development of the project depending on the project’s aims and goals.
There are many development life cycle models that have been developed in order to achieve different required objectives.
The models specify the various stages of the process and the order in which they are carried out.
There are various Software development models or methodologies. They are as follows:
1. Waterfall model
2. V model
13
B Naresh Lecturer in BVRICE Dept., of Computer Science4. RAD model
5. Agile model
6. Iterative model
7. Spiral model
8. Prototype model
Choosing right model for developing of the software product or application is very important. Based on the model the development and testing processes are carried out.
******************************************************************************
1. Waterfall model
The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed fully before the next phase can begin.
This type of software development model is basically used for the for the project which is small and there are no uncertain requirements. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project.
14
B Naresh Lecturer in BVRICE Dept., of Computer Science Diagram of Waterfall-model:The sequential phases in Waterfall model are −
Requirement Gathering and analysis: All possible requirements of the system to be
developed are captured in this phase and documented in a requirement specification document.
System Design: The requirement specifications from first phase are studied in this phase
and the system design is prepared. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture.
Implementation: With inputs from the system design, the system is first developed in
small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality, which is referred to as Unit Testing.
Integration and Testing: All the units developed in the implementation phase are
15
B Naresh Lecturer in BVRICE Dept., of Computer Science Deployment of system: Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
Maintenance: There are some issues which come up in the client environment. To fix
those issues, patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.
Advantages of waterfall model:
This model is simple and easy to understand and use.
It is easy to manage due to the rigidity of the model – each phase has specific
deliverables and a review process.
In this model phases are processed and completed one at a time. Phases do not overlap.
Waterfall model works well for smaller projects where requirements are very well
understood.
Disadvantages of waterfall model:
Once an application is in the testing stage, it is very difficult to go back and change
something that was not well-thought out in the concept stage.
High amounts of risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a moderate to high risk of
changing.
When to use the waterfall model:
This model is used only when the requirements are very well known, clear and fixed.
Product definition is stable.
Technology is understood.
There are no ambiguous requirements
Sufficient resources are available freely
The project is short.
16
B Naresh Lecturer in BVRICE Dept., of Computer Science2. V model
V- model means Verification and Validation model. Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes. Each phase must be completed before the next phase begins.
V-Model is one of the many software development models. Testing of the product is planned in parallel with a corresponding phase of development in V-model.
Diagram of V-model:
The various phases of the V-model are as follows:
Requirements like BRS and SRS begin the life cycle model just like the waterfall model. But, in this model before development is started, a system test plan is created. The test plan focuses on meeting the functionality specified in the requirements gathering.
17
B Naresh Lecturer in BVRICE Dept., of Computer ScienceThe low-level design(LLD) phase is where the actual software components are designed. It defines the actual logic for each and every component of the system. Component tests are created in this phase as well.
The implementation phase is, again, where all coding takes place. Once coding is complete, the path of execution continues up the right side of the V where the test plans developed earlier are now put to use.
Coding: This is at the bottom of the V-Shape model. Module design is converted into code by developers. Unit Testing is performed by the developers on the code written by them.
Advantages of V-model: Simple and easy to use.
Testing activities like planning, test designing happens well before coding. This saves a
lot of time. Hence higher chance of success over the waterfall model.
Proactive defect tracking – that is defects are found at early stage.
Avoids the downward flow of the defects.
Works well for small projects where requirements are easily understood. Disadvantages of V-model:
Very rigid and least flexible.
Software is developed during the implementation phase, so no early prototypes of the
software are produced.
If any changes happen in midway, then the test documents along with requirement
documents has to be updated.
When to use the V-model:
The V-shaped model should be used for small to medium sized projects where
requirements are clearly defined and fixed.
The V-Shaped model should be chosen when ample technical resources are available
with needed technical expertise.
High confidence of customer is required for choosing the V-Shaped model approach. Since, no prototypes are produced, there is a very high risk involved in meeting customer expectations.
18
B Naresh Lecturer in BVRICE Dept., of Computer Science3. Incremental model
The incremental model combines the elements of waterfall model and they are applied in
an iterative fashion.
The first increment in this model is generally a core product.
Each increment builds the product and submits it to the customer for suggesting any
modifications.
The next increment implements the customer's suggestions and add additional
requirements in the previous increment.
This process is repeated until the product is completed. For example, the word-processing software is developed using the incremental model.
[For example:
In the diagram above when we work incrementally we are adding piece by piece but expect that each piece is fully finished. Thus keep on adding the pieces until it’s complete.
19
B Naresh Lecturer in BVRICE Dept., of Computer Science Diagram of Incremental model:Following are the phases of Incremental model:
i) Communication
The software development starts with the communication between customer and developer.
ii) Planning
It consists of complete estimation, scheduling for project development.
iii) Modeling
Modeling consists of complete requirement analysis and the design of the project like
algorithm, flowchart etc.
The algorithm is a
step-complete flow diagram of a program.
iv)Construction
Construction consists of code generation and the testing part.
Coding part implements the design details using an appropriate programming language.
Testing is to check whether the
Testing also checks that the program provides desired output.
B Naresh Lecturer in BVRICE Dept., of Computer Science Diagram of Incremental model:
Following are the phases of Incremental model:
The software development starts with the communication between customer and developer.
consists of complete estimation, scheduling for project development.
Modeling consists of complete requirement analysis and the design of the project like
-by-step solution of the problem and the flow chart shows a complete flow diagram of a program.
Construction consists of code generation and the testing part.
Coding part implements the design details using an appropriate programming language. Testing is to check whether the flow of coding is correct or not.
Testing also checks that the program provides desired output.
B Naresh Lecturer in BVRICE Dept., of Computer Science
The software development starts with the communication between customer and developer.
Modeling consists of complete requirement analysis and the design of the project like
the flow chart shows a
20
B Naresh Lecturer in BVRICE Dept., of Computer Science v) Deployment Deployment step consists of delivering the product to the customer and taking feedback
from them.
If the customer wants some corrections or demands for the additional capabilities, then
the change is required for improvement in the quality of the software.
Advantages of Incremental model
This model is flexible because the cost of development is low and initial product delivery
is faster.
It is easier to test and debug in the smaller iteration.
The working software is generated quickly in the software life cycle.
The customers can respond to its functionalities after every increment. Disadvantages of the incremental model
The cost of the final product may cross the cost initially estimated.
This model requires a very clear and complete planning.
The planning of design is required before the whole system is broken into smaller
increments.
The demands of customer for the additional functionalities after every increment causes
problem in the system architecture.
When to use the Incremental model:
This model can be used when the requirements of the complete system are clearly defined
and understood.
Major requirements must be defined; however, some details can evolve with time.
There is a need to get a product to the market early.
A new technology is being used
Resources with needed skill set are not available
There are some high risk features and goals.
21
B Naresh Lecturer in BVRICE Dept., of Computer Science4. Iterative model
An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which can then be reviewed in order to identify further requirements.
This process is then repeated, producing a new version of the software for each cycle of the model.
With every iteration, development module goes through the phases i.e requirement,
design, implementation and testing. These phases are repeated in iterative model in a sequence.
1) Requirement Phase
In this phase, the requirements for the software are assembled and analyzed. Generates a complete final specification of requirements.
2) Design Phase
In this phase, a software solution meets the designed requirements which can be a new design or an extension of an earlier design.
3) Implementation and test phase
In this phase, coding for the software and test the code will be done.
4) Evaluation
In this phase, software is evaluated, the current requirements are reviewed and the changes and additions in the requirements are suggested.
{For example:
22
B Naresh Lecturer in BVRICE Dept., of Computer ScienceAs shown in the image above, in the first iteration the whole painting is sketched roughly, then in the second iteration colors are filled and in the third iteration finishing is done. Hence, in iterative model the whole product is developed step by step.}
Diagram of Iterative model:
Advantages of an Iterative Model
Produces working software rapidly and early in the software life cycle.
This model is easy to test and debug in a smaller iteration.
It is less costly to change scope and requirements. Disadvantages of an Iterative Model
The system architecture is costly.
This model is not suitable for smaller projects. When to use iterative model:
Requirements of the complete system are clearly defined and understood.
When the project is big.
Major requirements must be defined; however, some details can evolve with time.
23
B Naresh Lecturer in BVRICE Dept., of Computer Science5. Spiral model
It is a combination of prototype and sequential or w
This model was developed by Boehm.
It is used for generating the software projects. This model is a risk driven process model.
Every phase in the Spiral model is start with a design goal and ends with the client
review.
The development team in this model begins with a small set of requirements and for the
set of requirements team goes through each development phase.
The development team adds the functionality in every spiral till the application is ready.
Following are the steps involved in spiral model:
B Naresh Lecturer in BVRICE Dept., of Computer Science
It is a combination of prototype and sequential or waterfall model. This model was developed by Boehm.
It is used for generating the software projects. This model is a risk driven process model. Every phase in the Spiral model is start with a design goal and ends with the client
in this model begins with a small set of requirements and for the set of requirements team goes through each development phase.
The development team adds the functionality in every spiral till the application is ready.
Following are the steps involved in spiral model:
B Naresh Lecturer in BVRICE Dept., of Computer Science
It is used for generating the software projects. This model is a risk driven process model. Every phase in the Spiral model is start with a design goal and ends with the client
in this model begins with a small set of requirements and for the
24
B Naresh Lecturer in BVRICE Dept., of Computer Science Phases of Spiral model are:1) Planning 2) Risk Analysis 3) Engineering 4) Evaluation
Planning Phase:
Requirements are gathered during the planning phase. Requirements like ‘BRS’ that is ‘Business Requirement Specifications’ and ‘SRS’ that is ‘System Requirement specifications’.
Risk Analysis:
In the risk analysis phase
solutions. A prototype is produced at the end of the risk analysis phase. If any risk is found during the risk analysis then alternate solutions are suggested and imple
Engineering Phase:
In this phase software is
this phase the development and testing is done. Evaluation phase:
This phase allows the customer to evaluate the output of the project to project continues to the next spiral.
B Naresh Lecturer in BVRICE Dept., of Computer Science
Requirements are gathered during the planning phase. Requirements like ‘BRS’ that is ‘Business Requirement Specifications’ and ‘SRS’ that is ‘System Requirement specifications’.
risk analysis phase, a process is undertaken to identify risk and alternate A prototype is produced at the end of the risk analysis phase. If any risk is found during the risk analysis then alternate solutions are suggested and implemented.
developed, along with testing at the end of the phase. Hence in this phase the development and testing is done.
This phase allows the customer to evaluate the output of the project to project continues to the next spiral.
B Naresh Lecturer in BVRICE Dept., of Computer Science
Requirements are gathered during the planning phase. Requirements like ‘BRS’ that is ‘Business Requirement Specifications’ and ‘SRS’ that is ‘System Requirement specifications’.
, a process is undertaken to identify risk and alternate A prototype is produced at the end of the risk analysis phase. If any risk is found
at the end of the phase. Hence in
25
B Naresh Lecturer in BVRICE Dept., of Computer Science Advantages of Spiral Model It reduces high amount of risk.
It is good for large and critical projects.
It gives strong approval and documentation control.
In spiral model, the software is produced early in the life cycle process. Disadvantages of Spiral Model
It can be costly to develop a software model.
It is not used for small projects. When to use Spiral model:
When costs and risk evaluation is important
For medium to high-risk projects
Long-term project commitment unwise because of potential changes to economic
priorities
Users are unsure of their needs
Requirements are complex
New product line
Significant changes are expected (research and exploration)
*****************************************************************************
6. Prototype model
A prototype model suggests that before development of the actual software a working prototype should be build first
A prototype is a toy implementation of the system.
It allows limited performance version of the eventual software to be delivered to the early stage of the development process.
The customer provides suggestion and improvements on the prototype.
26
B Naresh Lecturer in BVRICE Dept., of Computer Science It helps the customer determine how the feature will function in the final software. It is a very useful technique to obtain accurate requirements of the system.
STEPS OF PROTOTYPE MODEL Requirements:
A prototyping model begins with requirements analysis, and the requirements gathering of the system and this activity is usually done with developer and user meet and define overall objective
Quick Design:
It focuses on a representation of those aspects that will be visible to user. It leads to the construction of a prototype.
Implement :
27
B Naresh Lecturer in BVRICE Dept., of Computer Science Customer evaluation:The build prototype is presented to the customer for his/her evaluation.
Refinement of requirement as per suggestions:
Once the user evaluates the prototype, it is refined according to the requirements. When the user is satisfied to the developed prototype, a final system is developed based on the final prototype, which is developed by the iterative method means we design the system according to the final prototype.
After that final Design is prepared and in Implementation and unit testing project is implemented in any coding language and each module is tested. In Integration and System testing code is integrated and whole system is tested. Finally project is tested to find the error, then we install it to the customer website and at last we Maintain the system.
ADVANTAGES
Provides better understandability of the customers’ needs.
It helps to critically examine the technical issues
Used for development of large project
It reduces risk of failure.
DISADVANTAGES
It is a never ending process.
Prototype has to be discarded, so some might argue that the cost involved is higher.
It is time consuming model.
The developer often makes implementation compromise in order to get a prototype model working quickly.
When to use Prototype model:
Prototype model should be used when the desired system needs to have a lot of
interaction with the end users.
Typically, online systems, web interfaces have a very high amount of interaction with
end users, are best suited for Prototype model.