Unit 1-Software Development Process
Unit 1-Software Development Process
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.
A software engineer applies mathematical analysis and the principles of computer science in
order to design and develop computer software.
• Cost Management
1. Quality focus
The characteristics of good quality software are:
The method provides the answers of all 'how-to' that are asked during the process.
It provides the technical way to implement the software.
It includes collection of tasks starting from communication, requirement analysis, analysis and
design modelling, program construction, testing and support.
4. Tools
The software engineering tool is an automated support for the software development.
The tools are integrated i.e the information created by one tool can be used by the other tool.
For example: The Microsoft publisher can be used as a web designing tool.
* characteristics of software:
1. Software is developed or engineered ,it is not manufacture
2. Software does not wear out
3. Most of the software’s are custom built
* Types of Software
System Software –
• System Software is necessary to manage the computer resources and support the
execution of application programs.
• Software like operating systems, compilers, editors and drivers etc., come under this
category. A computer cannot function without the presence of these
Applications Software
• Application Software, also known as end-user programs or productivity programs are
software that helps the user in completing tasks such as doing online research, jotting
down notes, setting an alarm, designing graphics, keeping an account log, doing
calculations or even playing games.
• Word Processors, Database Software, Multimedia Software, Graphics Software, Web
Browsers
Embedded Software –
• This type of software is embedded into the hardware normally in the Read Only
Memory (ROM) as a part of a large system and is used to support certain
functionality under the control conditions.
• Examples are software used in instrumentation and control applications like washing
machines, satellites, microwaves etc.
Utility:
• Utility software is designed to aid in analyzing, optimizing, configuring and maintain
• This software focuses on how an OS functions and then accordingly it decides its
trajectory to smoothen the functioning of the system. Softwares like antiviruses, disk
cleanup & management tools, compression tools, defragmenters, etc are all utility
tools. Some examples of utility tools are:
Avast Antivirus
Directory Opus
McAfee Antivirus
Piriform CCleaner
Razer Cortex
Windows File Explorer
WinRAR
WinZip
Scientific and engineering software
Scientific and engineering software satisfies the needs of a scientific or
engineering user to perform enterprise specific tasks. Such software is written for
specific applications using principles, techniques and formulae specific to that
field. Examples are software like MATLAB, AUTOCAD, PSPICE, ORCAD, etc
Artificial Intelligence Software
• Software like expert systems, decision support systems, pattern recognition software,
artificial neural networks, etc. come under this category. They involve complex problems
which are not affected by complex computations using non-numerical algorithms.
• Example-Robotics,Nural Networks,Computer Games
Customer software
The generic software development development is done to develop
is done for developing a general a software product as per the
1. purpose software. needs of particular customer.
communicating by them.
Any standard software process model would primarily consist of two types of activities:
A set of framework activities, which are always applicable, regardless of the project type, and a
set of umbrella activities, which are the non SDLC activities that span across the entire software
development life cycle.
Umbrella activities
7. Reusability management
It defines the criteria for reuse the product.
The quality of software is good when the components of the software are developed for certain
application and are useful for developing other applications.
1. Communication:
The software development starts with the communication between customer and developer.
2. Planning:
3. Modeling:
Modeling consists of complete requirement analysis and the design of the project like algorithm,
flowchart etc.
The algorithm is the step-by-step solution of the problem and the flow chart shows a complete
flow diagram of a program.
4. 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 flow of coding is correct or not.
Testing also check that the program provides desired output.
5. Deployment:
Deployment step consists of delivering the product to the customer and take 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.
* Prescriptive Process Models
The following framework activities are carried out irrespective of the process model chosen by
the organization.
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
The name 'prescriptive' is given because the model prescribes a set of activities, actions, tasks,
quality assurance and change the mechanism for every project.
The waterfall model is also called as 'Linear sequential model' or 'Classic life cycle model'.
In this model, each phase is fully completed before the beginning of the next phase.
This model is used for the small projects.
In this model, feedback is taken after each phase to ensure that the project is on the right path.
Testing part starts only after the development is complete.
NOTE: The description of the phases of the waterfall model is same as that of the process model.
The waterfall model is simple and easy to understand, implement, and use.
All the requirements are known at the beginning of the project, hence it is easy to manage.
It avoids overlapping of phases because each phase is completed at once.
This model works for small projects because the requirements are understood very well.
This model is preferred for those projects where the quality is more important as compared to
the cost of the project.
Disadvantages of the waterfall model
This model is not good for complex and object oriented projects.
It is a poor model for long projects.
The problems with this model are uncovered, until the software testing.
The amount of risk is high.
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 any suggested
modifications.
The next increment implements on the customer's suggestions and add additional requirements
in the previous increment.
This process is repeated until the product is finished.
For example, the word-processing software is developed using the incremental model.
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 during the smaller iteration.
The working software generates quickly and early during 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 estimated initially.
This model requires a very clear and complete planning.
The planning of design is required before the whole system is broken into small increments.
The demands of customer for the additional functionalities after every increment causes
problem during the system architecture.
3. RAD model
1. Business Modeling
Business modeling consist of the flow of information between various functions in the project.
For example what type of information is produced by every function and which are the
functions to handle that information.
A complete business analysis should be performed to get the essential business information.
2. Data modeling
The information in the business modeling phase is refined into the set of objects and it is
essential for the business.
The attributes of each object are identified and define the relationship between objects.
3. Process modeling
The data objects defined in the data modeling phase are changed to fulfil the information flow
to implement the business model.
The process description is created for adding, modifying, deleting or retrieving a data object.
4. Application generation
The prototypes are independently tested after each iteration so that the overall testing time is
reduced.
The data flow and the interfaces between all the components are are fully tested. Hence, most of
the programming components are already tested.
Prototype is defined as first or preliminary form using which other forms are copied or derived.
Prototype model is a set of general objectives for software.
It does not identify the requirements like detailed input, output.
It is software working model of limited functionality.
In this model, working programs are quickly produced.
1. Communication
In this phase, developer and customer meet and discuss the overall objectives of the software.
2. Quick design
This phase gives the clear idea about the development of software because the software is now
built.
It allows the developer to better understand the exact requirements.
4. Construction of prototype
The prototype is evaluated by the customer itself.
5. Deployment, delivery, feedback
If the user is not satisfied with current prototype then it refines according to the requirements of
the user.
The process of refining the prototype is repeated until all the requirements of users are met.
When the users are satisfied with the developed prototype then the system is developed on the
basis of final prototype.
Advantages of Prototyping Model
Prototype model need not know the detailed input, output, processes, adaptability of operating
system and full machine interaction.
In the development process of this model users are actively involved.
The development process is the best platform to understand the system by the user.
Errors are detected much earlier.
Gives quick user feedback for better solutions.
It identifies the missing functionality easily. It also identifies the confusing or difficult
functions.
Disadvantages of Prototyping Model:
The client involvement is more and it is not always considered by the developer.
It is a slow process because it takes more time for development.
Many changes can disturb the rhythm of the development team.
It is a thrown away prototype when the users are confused with it.
It needs better communication between the team members. This may not be achieved all the
time.
It requires to remember the status of the different activities.
Agile Software Development
Agile principles
The test plan is reviewed after each sprint Test plan is reviewed after complete
development.
Testing team can take part in the requirements It is difficult for the test to initiate any
change phase without problems. change in needs
gile is a mindset and it’s a set of values and principles. Agile is a way of thinking and acting.
Agile is all about short cycles, iterative and incremental delivery, failing fast, getting feedback,
delivering business value to customers early and about people, collaboration and interaction.
Agile is a mindset which is all about transparency, inspection and adaptation. Agile however
doesn’t consist of any roles, events or artifacts. It’s a mindset. For example, Scrum is one of the
widely used frameworks under the Agile umbrella, which may help you in becoming more Agile,
there are however many more frameworks within the Agile movement, like Kanban, XP, Crystal
and many more as shown in the Figure below:
Scrum
Scrum is a framework that helps agile teams to work together. Using it, the team members can
deliver and sustain the complex product. It encourages the team to learn through practice, self-
organize while working on the problem. Scum is a work done through the framework and
continuously shipping values to customers.
Its focus is on an adaptive product development strategy where a cross-functional team works as
a unit to reach a common goal within 2-4 weeks (Sprint).
With scrum, a product is built in a series of repetition called sprints. It breaks down big complex
projects into bite-size pieces. It makes projects more manageable, allows teams to ship high
quality, work faster, and more frequently. The sprints give them more flexibility to adapt to the
changes.
product backlog
1. Focus on the business need: DSDM teams must establish a valid business case and ensure
organizational support throughout the project
2. Deliver on time: Work should be time-boxed and predictable, to build confidence in the
development team.
3. Collaborate: DSDM teams must involve stakeholders throughout the project and empower all
members of the team to make decisions.
4. Quality: To ensure high quality, the level of quality should be agreed with the business at the
start of the project. This is enforced through continuous testing, review, and documentation.
5. Build incrementally from firm foundations: Teams must do enough design work up front
(EDUF) to ensure they know exactly what to build, but not too much to slow development.
6. Developer Iteratively: Take feedback from the business and use this to continually improve
with each development iteration. Teams must also recognize that details emerge as the project or
product develops and they must respond to this.
7. Communicate continuously and clearly: Holding daily stand-up sessions, encouraging
informal communication, running workshops and building prototypes are all key DSDM tools.
Communicating through documents is discouraged - instead, documentation must be lean and
timely.
8. Demonstrate control: The project manager and team leader should make their plans and
progress visible to all and focus on successful delivery.
o Business Study: In this part of the study, business experts and the technical experts are all called
upon and discussions happen where in all the essential business problems are listed and studied.
It is then overlooked into if the technical capabilities available are sufficient to meet the business
requirements. A prioritization is then made upon the requirements and application &
infrastructure diagrams are finalized.
Functional model iteration: The requirements are finalized and prioritized in the earlier two
studies are then built in a functional prototype wherein a model of one requirement after another
is built in incrementally. The prototypes are then studied for its quality and improvement
possibility by functional experts (and also some times by end users) so that it can be further
improved upon. This stage can be further sub divided into smaller sub-stages:
o Identify functional prototype: Based on the prioritized requirements, identify the key
functionalities to be built in the prototype
o Accept plan and schedule: Form a plan and schedule to build the functionalities are finalized.
Identify team members, allocate tasks and finalize deadlines in this sub stage.
o Create a functional prototype: The developers then loop in and create the prototype based on the
functional requirements. They also further test the functionalities themselves (unit testing) and
further improve the product in this sub stage
o Review the functional prototype: End users are then brought into the picture. These then have a
look at the functionalities and then test those. The comments are then taken into consideration
and further improvement areas are identified
Design and build integration: This phase first begins with ensuring that the functionalities as
built meet the user’s expectations and can function well in the practical and operational
environment. Most important focus inn this phase, the individual units (or functionalities) as
built in the earlier stage are integrated into one system. Since in DSDM, there is no clear
distinction between design & build, both of these phases are clubbed together and these two
phases simultaneously continue together. This stage also comprises of four sub-stages:
o Identify design prototype: Once the requirements are modeled into the prototype, the ones that
need to be in the final system are identified and prioritized.
o Accept plan and schedule: The prioritized ones are then planned and scheduled to be built. Team
mates are identified and the tasks are allocated.
o Create a design prototype: A design prototype is created by the developers and then it is provided
to the testers and end users for testing. The end users then look into the app and provide
comments on how it could be improved further.
o Review the design prototype: Further testing is done on the system and its correctness and
closeness to the planned one is identified.
Implementation: As a part of this stage the tested application is put up in live environment and
is made available to the end users. Training to end users is also provided. Also timely review and
feedback is collated from the end user to ensure that the business demands are met and right
solution is provided to the end users and their needs are all catered too. Implementation is further
broken down into 4 sub-parts:
o User approval & guidelines
o Train users
o Implement
Feature-Driven Development
It is an agile iterative and incremental model that focuses on progressing the features of the
developing software. The main motive os feature-driven development is to provide timely
updated and working software to the client. In FDD, reporting and progress tracking is
necessary at all levels.
FDD Lifecycle
Build overall model
Build feature list
Plan by feature
Design by feature
Build by feature
This step is where you write your outline to define your domain model—the business problem
you want your software development project to solve. The team works closely with the chief
architect to define the scope and context of the system. Multiple domain models should be
merged into one overall model as an outline for your system.
The features list is similar to the scrum product backlog. Identify the features that are important
to the client. Features are expressed as action, result, and object (for example, “validate the
account number of the user”).
It should not take longer than two weeks to develop any given feature. If a feature will take
longer than two weeks to build, it should be broken up into smaller features.
3: Plan by feature
Determine the order in which the features from your features list will be developed and
implemented. Consider potential risks, dependencies, team and individual workload, and any
other obstacle that could hinder feature development.
Then assign feature sets to the programmers who are most capable and have the bandwidth to
develop them within the specified timeframe.
4: Design by feature
The chief programmer determines which features will be designed and built in a two-week
iteration. This person also defines the feature priorities and determines who will be involved on
the feature team. A design review needs to be completed by the whole team before moving
forward.
5: Build by feature
In this step, all of the items necessary to support the feature design are implemented. The user
interface is designed, and a feature prototype is built and tested. If the feature passes the test and
is approved, the completed version can be added to the main build and made available to
customers.
1. Speculation
During this phase project is initiated and planning is conducted. The project plan uses project
initiation information like project requirements, user needs, customer mission statement etc, to
define set of release cycles that the project wants.
Speculation consists of Project initiation and Risk driven Adaptive cycle planning. During this
phase, coders attempt to understand the exact nature of the software and the requirements of the
users.
2. Collaboration
3. Learning
The workers may have a overestimate of their own understanding of the technology which may
not lead to the desired result. Learning helps the workers to increase their level of
understanding over the project.
Learning process is of 3 ways:
1. Focus groups
2. Technical reviews
3. Project postmortem
Extreme Programming
Designing
Coding
Testing
Crystal
Crystal method is an agile software development approach that focuses primarily on people and
their interactions when working on a project rather than on processes and tools. Alistair believed
that people’s skills and talents as well as the way they communicate has the biggest impact on
the outcome of the project.
Which approach will be most suitable for your projects depends on three dimensions:
Team size
Criticality
Project priority