Unit I
Unit I
Software
Development
Software Development
• Software development refers to the design, documentation,
programming, testing, and ongoing maintenance of a software
deliverable. The combination of these steps are used to create a
workflow pipeline, a sequence of steps that when followed produce
high-quality software deliverables.
• Software development refers to a set of computer science activities
dedicated to the process of creating, designing, deploying and
supporting software.
• Software itself is the set of instructions or programs that tell a computer
what to do. It is independent of hardware and makes computers
programmable. There are three basic types:
• System software to provide core functions such as operating systems, disk
management, utilities, hardware management and other operational
necessities.
• Programming software to give programmers tools such as text editors,
compilers, linkers, debuggers and other tools to create code.
• Application software (applications or apps) to help users perform tasks. Office
productivity suites, data management software, media players and security
programs are examples. Applications also refers to web and mobile
applications like those used to shop on Amazon.com, socialize with Facebook
or post pictures to Instagram.
• A possible fourth type is embedded software. Embedded systems software is
used to control machines and devices not typically considered computers —
telecommunications networks, cars, industrial robots and more. These
devices, and their software, can be connected as part of the Internet of Things
• Programmers, or coders, write source code to program computers for
specific tasks like merging databases, processing online orders, routing
communications, conducting searches or displaying text and graphics.
Programmers typically interpret instructions from software developers and
engineers and use programming languages like C++ or Java to carry them out.
• Software engineers apply engineering principles to build software and
systems to solve problems. They use modeling language and other tools to
devise solutions that can often be applied to problems in a general way, as
opposed to merely solving for a specific instance or client.
• Software developers have a less formal role than engineers and can be
closely involved with specific project areas — including writing code. At the
same time, they drive the overall software development lifecycle — including
working across functional teams to transform requirements into features,
managing development teams and processes, and conducting software
testing and maintenance.
Evolution of Software Development
• The process of developing a software product using software
engineering principles and methods is referred to as software
evolution. This includes the initial development of software and its
maintenance and updates, till desired software product is developed,
which satisfies the expected requirements.
• The process of developing a software product using software
engineering principles and methods is referred to as software
evolution. This includes the initial development of software and its
maintenance and updates, till desired software product is developed,
which satisfies the expected requirements.
• Evolution starts from the requirement gathering process. After which
developers create a prototype of the intended software and show it to the
users to get their feedback at the early stage of software product
development. The users suggest changes, on which several consecutive
updates and maintenance keep on changing too. This process changes to the
original software, till the desired software is accomplished.
• Even after the user has desired software in hand, the advancing technology
and the changing requirements force the software product to change
accordingly. Re-creating software from scratch and to go one-on-one with
requirement is not feasible. The only feasible and economical solution is to
update the existing software so that it matches the latest requirements.
• Software Evolution Laws
• Lehman has given laws for software evolution. He divided the software into
three different categories:
• S-type (static-type) - This is a software, which works strictly according to
defined specifications and solutions. The solution and the method to achieve it,
both are immediately understood before coding. The s-type software is least
subjected to changes hence this is the simplest of all. For example, calculator
program for mathematical computation.
• P-type (practical-type) - This is a software with a collection of procedures. This
is defined by exactly what procedures can do. In this software, the specifications
can be described but the solution is not obvious instantly. For example, gaming
software.
• E-type (embedded-type) - This software works closely as the requirement of
real-world environment. This software has a high degree of evolution as there
are various changes in laws, taxes etc. in the real world situations. For example,
Online trading software.
E-Type software evolution
• In this model, the risk factor is higher, so this model is not suitable for
more significant and complex projects.
• This model cannot accept the changes in requirements during
development.
• It becomes tough to go back to the phase. For example, if the
application has now shifted to the coding phase, and there is a change
in requirement, It becomes tough to go back and change it.
• Since the testing done at a later stage, it does not allow identifying
the challenges and risks in the earlier phase, so the risk reduction
strategy is difficult to prepare.
RAD (Rapid Application
Development) Model
• RAD is a linear sequential software development process model that emphasizes a
concise development cycle using an element based construction approach. If the
requirements are well understood and described, and the project scope is a constraint,
the RAD process enables a development team to create a fully functional system within
a concise time period.
• RAD (Rapid Application Development) is a concept that products can be developed
faster and of higher quality through:
• Gathering requirements using workshops or focus groups
• Prototyping and early, reiterative user testing of designs
• The re-use of software components
• A rigidly paced schedule that refers design improvements to the next product version
• Less formality in reviews and other team communication
• The various phases of RAD are as follows:
• 1.Business Modelling: The information flow among business functions is defined by
answering questions like what data drives the business process, what data is
generated, who generates it, where does the information go, who process it and so on.
• 2. Data Modelling: The data collected from business modeling is refined into a set of
data objects (entities) that are needed to support the business. The attributes
(character of each entity) are identified, and the relation between these data objects
(entities) is defined.
• 3. Process Modelling: The information object defined in the data modeling phase are
transformed to achieve the data flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting, or retrieving a data
object.
• 4. Application Generation: Automated tools are used to facilitate construction of the
software; even they use the 4th GL techniques.
• 5. Testing & Turnover: Many of the programming components have already been
tested since RAD emphasis reuse. This reduces the overall testing time. But the new
part must be tested, and all interfaces must be fully exercised.
When to use RAD Model?
• When the system should need to create the project that modularizes
in a short span time (2-3 months).
• When the requirements are well-known.
• When the technical risk is limited.
• When there's a necessity to make a system, which modularized in 2-3
months of period.
• It should be used only if the budget allows the use of automatic code
generating tools.
Advantage of RAD Model
• Scrum
• Crystal
• Dynamic Software Development Method(DSDM)
• Feature Driven Development(FDD)
• Lean Software Development
• eXtreme Programming(XP)
1)Scrum
• SCRUM is an agile development process focused primarily on ways to manage
tasks in team-based development conditions.
• There are three roles in it, and their responsibilities are:
• Scrum Master: The scrum can set up the master team, arrange the meeting
and remove obstacles for the process
• Product owner: The product owner makes the product backlog, prioritizes
the delay and is responsible for the distribution of functionality on each
repetition.
• Scrum Team: The team manages its work and organizes the work to complete
the sprint or cycle.
2)eXtreme Programming(XP)
• This type of methodology is used when customers are constantly changing
demands or requirements, or when they are not sure about the system's
performance.
3)Crystal:
• There are three concepts of this method-
• A)Chartering: Multi activities are involved in this phase such as making a development team,
performing feasibility analysis, developing plans, etc.
• B)Cyclic delivery: under this, two more cycles consist, these are:
• Team updates the release plan.
• Integrated product delivers to the users.
• C)Wrap up: According to the user environment, this phase performs deployment, post-
deployment.
4)Dynamic Software Development Method(DSDM):
• DSDM is a rapid application development strategy for software development and gives an
agile project distribution structure. The essential features of DSDM are that users must be
actively connected, and teams have been given the right to make decisions. The techniques
used in DSDM are:
• Time Boxing
• MoSCoW Rules
• Prototyping
• 5)The DSDM project contains seven stages:
• Pre-project
• Feasibility Study
• Business Study
• Functional Model Iteration
• Design and build Iteration
• Implementation
• Post-project
• 6)Feature Driven Development(FDD):
• This method focuses on "Designing and Building" features. In contrast to other smart methods,
FDD describes the small steps of the work that should be obtained separately per function.
• Frequent Delivery
• Face-to-Face Communication with clients.
• Efficient design and fulfils the business requirement.
• Anytime changes are acceptable.
• It reduces total development time.
Disadvantages(Cons) of Agile Model: