Professional Documents
Culture Documents
CH 1
CH 1
CH 1
Topics covered
Basic definition
Role of Management in Software Development
Software Products
Essential attributes of good software
Importance of Software Engineering Practices
Challenges for Software Engineering Practices
Software Engineering Diversity
Software Life Cycle
Software Process Model and its Types
Chapter 1 Introduction and Software Processes 2
1.1 Basic Definition
Factor Role
Software development requires good managers. The manager who can
understand the psychology of the people and provide good leadership. After
People having a good manager, project is in safe hands. It is the responsibility of a
manager to manage, motivate, encourage, guide and control the people of
his/her team.
What is delivered to the customer, is called a product. It may include source
Product code, specification document, manuals, documentation etc. Basically, it is
nothing but a set of deliverables only.
Process is the way in which we produce software. It is the collection of
activities that leads to (a part of) a product. An efficient process is required to
Process produce good quality products. If the process is weak, the end product will
undoubtedly suffer, but an obsessive over reliance on process is also
dangerous.
A proper planning is required to monitor the status of development and to
control the complexity. Most of the projects are coming late with cost
Project
overruns of more than 100%. In order to manage a successful project, we
must understand what can go wrong and how to do it wright.
Generic products
Stand-alone systems that are marketed and sold to any customer who wishes to buy
them.
Examples – PC software such as graphics programs, project management tools; CAD
software; software for specific markets such as appointments systems for dentists.
Customized products
Software that is commissioned by a specific customer to meet their own needs.
Examples – embedded control systems, air traffic control software, traffic monitoring
systems.
Software must be acceptable to the type of users for which it is designed. This
Acceptability means that it must be understandable, usable and compatible with other systems
that they use.
More and more, individuals and society rely on advanced software systems.
Automation in each and every field of life has become a necessity. To fulfill all
these demands software products are being developed that are reliable and
trustworthy to its users.
Initial cost for any software development has remained an obstacle in the
history but time has proved that well engineered software products are
cheaper in longer run than those software that are just developed like a
personal programming project.
Heterogeneity
Increasingly, systems are required to operate as distributed systems across networks
that include different types of computer and mobile devices.
Business and social change
Business and society are changing incredibly quickly as emerging economies develop
and new technologies become available. They need to be able to change their existing
software and to rapidly develop new software.
Security and trust
As software is intertwined with all aspects of our lives, it is essential that we can trust that
software.
There are many different types of software system and there is no universal
set of software techniques that is applicable to all of these.
The software engineering methods and tools used depend on the type of
application being developed, the requirements of the customer and the
background of the development team.
Stand-alone applications
These are application systems that run on a local computer, such as a PC. They include
all necessary functionality and do not need to be connected to a network.
Interactive transaction-based applications
Applications that execute on a remote computer and are accessed by users from their
own PCs or terminals. These include web applications such as e-commerce applications.
Embedded control systems
These are software control systems that control and manage hardware devices.
Numerically, there are probably more embedded systems than any other type of system.
Phase Description
Requirement Gathering All possible requirements of the system to be developed are captured in this phase
and analysis and documented in a requirement specification doc.
The requirement specifications from first phase are studied in this phase and system
System Design design is prepared. System Design helps in specifying hardware and system
requirements and also helps in defining overall system architecture.
With inputs from system design, the system is first developed in small programs
Implementation 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.
All the units developed in the implementation phase are integrated into a system
Integration and Testing after testing of each unit. Post integration the entire system is tested for any faults
and failures.
Once the functional and non-functional testing is done, the product is deployed in the
Deployment of system customer environment or released into the market.
There are some issues which come up in the client environment. To fix those issues
Maintenance patches are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment.
All phases are cascaded to each other in which progress is seen as flowing
steadily downwards (like a waterfall) through the phases.
The next phase is started only after the defined set of goals are achieved for
previous phase and it is signed off, so the name "Waterfall Model".
In this model phases do not overlap.
Advantages Disadvantages
No working software is produced until whole life cycle is
Simple and easy to understand and apply.
not completed.
Easy to manage due to fix boundaries each phase with Not a good model for complex and object-oriented
specific deliverables. projects.
Phases are processed and completed one at a time. Poor model for long and ongoing projects.
Works well for smaller projects where requirements are Not suitable for the projects where requirements are
very well understood. changing frequently.
Process and results are well documented. It is difficult to measure progress within stages.
Advantages Disadvantages
At the end of each build, working product is produced that
More resources (manpower) may be required.
facilitates customer evaluation and feedback.
Although cost of change is lesser in this model, but
Results are obtained periodically.
changing requirements itself is not very suitable.
Parallel development can be planned and measured. More management attention is required.
Less costly to change the scope/requirements. Not suitable for smaller projects.
Defining increments (builds) may require definition of the
Testing and debugging during smaller iteration is easy.
complete system.
System architecture or design issues may arise, all
Risks are identified and resolved during iteration; and
requirements are not gathered at the beginning of life
each iteration is an easily managed milestone.
cycle.
Ending of project is not very obvious.
Project’s progress is highly dependent upon the risk
analysis phase.
Phase Description
After getting user requirements a search is made for components to be implemented
Component Analysis that are available in library as it is or with small variations. Usually, there is no exact
match and already available components only provide some of the required functionality.
During this stage, the requirements are analyzed using information about the
Requirements components that have been discovered. They are then modified to reflect the available
Modification components. Where modifications are impossible, the component analysis activity may
be re-entered to search for alternative solutions.
During this phase, the framework of the system is designed or an existing framework is
System Design with reused. The designers take into account the components that are reused and organize
Reuse the framework to cater for this. Some new software may have to be designed if reusable
components are not available.
Software that cannot be externally procured is developed, and the components and
Development and COTS (commercial off-the-shelf) systems are integrated to create the new system.
Integration System integration, in this model, may be part of the development process rather than a
separate activity.
Activity Description
Specific objectives for that phase of the projects are defined. Constraints on the process
Objective Setting and the product are identified and a detailed management plan is drawn up. Project risks
are identified. Alternative strategies, depending on these risks, may be planned.
For each of the identified project risks, a detailed analysis is carried out. Steps are taken
Risk Assessment and
to reduce the risk. For example, if there is a risk that the requirements are inappropriate,
Reduction
a prototype system may be developed.
After risk evaluation, a development model for the system is chosen. For example,
throwaway prototyping may be the best development approach if user interface risks are
Development and dominant. If safety risks are the main consideration, development based on formal
Validation transformations may be the most appropriate process, and so on. If the main identified
risk is sub-system integration, the waterfall model may be the best development model
to use.
The project is reviewed and a decision made whether to continue with a further loop of
Planning the spiral. If it is decided to continue, plans are drawn up for the next phase of the
project.
Advantages Disadvantages
Changing requirements can be accommodated with the
Management is more complex.
help of extensive use of prototypes.
Requirements can be captured more accurately. End of project may not be known clearly.
Advantages Disadvantages
Very realistic approach for software development. Not suitable for handling complex projects.
More risk of sustainability, maintainability and
Promotes teamwork and cross training.
extensibility.
Functionality can be developed rapidly and Not suitable for small or low risk projects and could be
demonstrated. expensive for small projects.
Without an overall plan and in absence of agile project
Resource requirements are minimum.
manager practice may fail entirely.
Depends heavily on customer interaction, so if customer
Suitable for fixed or changing requirements.
is not clear, team can be driven in the wrong direction.
There is very high individual dependency, since there is
Minimal rules, documentation easily employed.
minimum documentation generated.
Enables concurrent development and delivery within an Transfer of technology to new team members may be
overall planned context. quite challenging due to lack of documentation.
Little or no planning required.
Easy to manage.
Gives flexibility to developers.
38
Chapter 1 Introduction and Software Processes
Key points (Summary of the Chapter – Already Discussed)