You are on page 1of 64

Scenario

PC World (PCW) is a medium-sized company that sells over 50 different types of


computer products. The company has grown steadily in the last 02 years mainly due
its popularity over the Internet. They are finding it increasingly difficult to cope up
with all the paperwork in the manual workflow associated with tracking orders due to
the increase of number of orders and lack of a software system.

The Managing Director of PCW is frustrated by the problems associated with adding
new requirements to the application and getting modifications completed in the
previous software application used in the PC WORLD company due to the software
development company’s usage of traditional waterfall model in their projects.
Therefore, the company currently has moved back to the old paper-based system.

Managing director or PCW has decided that PCW will use a company which is
following a software development methodology based on Agile philosophy to develop
the software for a new order tracking system.

JJLP Software (JJLP) is a software development company. JJLP use SCRUM as their
software development methodology. The Managing Director of PCW has decided to
contract JJLP, on “time and materials” basis, for the development of the new order
tracking system using Scrum development approach. You have been hired as a
software engineer for JJLP Software (JJLP) is a software development company. You
have to complete below tasks in completing the software project for PC World
company.

The new order tracking system will replace the old paper-based system and is likely to
include some of the following functionalities:

• Receive a sales order via telephone, or email – carried out by an


Order Handling Clerk.
• Check stock in a warehouse – carried out by an Order Handling Clerk.
• Create an acknowledgement copy of the sales order with a delivery date
after the order has been confirmed with the warehouse – carried out by a
Warehouse Operative.
• Create an acknowledgement copy of the sales order stating the item is out of
stock and the date it will be available after the order has been confirmed
with the warehouse – carried out by a Warehouse Operative.
• Credit-check customers and reject them if they are not creditworthy –
carried out by an Order Handling clerk.
• Create a daily report of orders that have been dispatched – carried out by
the Production Manager.
• Create an invoice for business customers after the delivery – carried out by
the Chief Accountant.
• Accept credit card payment from domestic customers after the order has
been confirmed with the warehouse - carried out by an Order Handling Clerk.
13 | P a g
Pradeeban.A (col/a-064620) Unit-30 application Development
e
Interdiction of application development

Application development involves creating a computer program, or set of programs to


perform tasks, from keeping track of inventory and billing customers to maintaining
accounts, speeding up business process and, in fact, even improving application effectiveness.
Unlike vanilla programming, application development involves higher levels of responsibility
(particularly for requirement capturing and testing).

The Application Development industry has seen a lot of changes in a relative short period of
time. From both sides of the fence customers looking for software solutions, and the resource
pool of application development talent there has been considerable upheaval over the last
few years.

application development t is the process of conceiving, specifying, designing, programming,


documenting, testing, and bug fixing involved in creating and maintaining applications,
frameworks, or other software components. Software development is a process of writing and
maintaining the source code, but in a broader sense, it includes all that is involved between
the conception of the desired software through to the final manifestation of the software,
sometimes in a planned and structured process. Therefore, software development may include
research, new development, prototyping, modification, reuse, re-engineering, maintenance, or
any other activities that result in software products.
The software can be developed for a variety of purposes, the three most common being to
meet specific needs of a specific client/business (the case with custom software), to meet a
perceived need of some set of potential users (the case with commercial and open source
software), or for personal use (e.g. a scientist may write software to automate a mundane
task). Embedded software development, that is, the development of embedded software, such
as used for controlling consumer products, requires the development process to be integrated
with the development of the controlled physical product. System software underlies
applications and the programming process itself, and is often developed separately.

The need for better quality control of the software development process has given rise to the
discipline of software engineering, which aims to apply the systematic approach exemplified
in the engineering paradigm to the process of software development.

There are many approaches to software project management, known as software development
life cycle models, methodologies, processes, or models. The waterfall model is a traditional
version, contrasted with the more recent innovation of agile software development.

1.1

Problems
Storage and accessibility
The physical space paperwork can take up is significant and will only continue to grow as
time goes on. The centralized office may no longer be able to hold all documentation and will
result in storage in different rooms, building or locations. This will slow down accessibility
thus productivity, result in damage or lost documents and increase storage costs.

Example : The average office spend $2,100 per year to maintain one four-drawer filing
cabinet and it costs $220 to replace a lost document. Multiply this across the organisation and
the cost is staggering.

Errors
One of the largest problems faced by organisations is document errors. When documents are
manually authored with pen and paper, they can be illegible and incomplete causing a
negative flow-on effect. Editing becomes hard labour because changes need to be physically
made or if completely illegible, a new document will need to be created. Information may
need to be tracked down by other employees and with the time passed, they may have
forgotten. Ultimately, this can result in incorrect documents with numerous errors and
therefore affect the client and bottom line.

Limited collaboration and double handling

Team collaboration on documents becomes challenging and time consuming when working
with paper. Multiple copies need to be printed, all ending up with their separate annotations
which then still need to be changed on the initial document. Once the initial document is
updated, more copies need to be printed, approved and then filed away. This lengthy process
slows down staff with their current workload, which there is no time for.

Document Management Problem


Whether using paper documents biggest problem arises when you need to put these
documents through business processes. It’s a common problem—in fact, 53% of workers are
looking for a simple and robust way to sign and route internal documents.

Routine business processes include: approving, reviewing, onboarding, and contracting.


Essentially any time you need to route a document from Point A to Point B and so on,
it requires a process.
Without workflow management software, have to manually route and track documents
through a process. This is often known as “babysitting the documents.” It’s a huge pain, and
it taxes time. And if you leave a document unattended, you risk losing it or introducing a
bottleneck.
A bottleneck might keep the document for so long that forget who had the document in the
first place. Or a document could be misplaced, lost, or, worse, stolen, along the way. When a
bottleneck happens, processes grind to a halt.

Babysitting isn’t just for paper documents, either. When don’t have workflow management
software, digital documents need supervision, too. They have to be delivered from mailbox to
mailbox, or via a file-sharing tool like Dropbox. Or they might even be printed, scanned, and
emailed several times.

Document Management Problem


biggest problem is data entry—both entering data on a form initially and rekeying it into your
back-end systems later on.

Without automated data entry software, data entry is a manual and repetitive process.

staff, customers, and vendors routinely enter data onto a form for organization. However,
there are certain fields they have to fill out each time, like name, company, and so on. It gets
redundant, and it takes up a lot of their time. Plus, they could easily mistype something and
the form could move along in the process without getting corrected—or without getting
corrected until it’s too late.

When paper-based forms are used, it takes even longer and introduces even more
opportunities for error. Handwriting could be misread. Data could be rekeyed incorrectly.
Forms could be lost or damaged before the information can be processed.
Data entry continues to be a problem when it becomes time to transfer data from forms into
your back-end system. Without the right automated data entry software, even data that is
entered on a web-based form has to be re-entered. In fact, 55% of users still end up rekeying
data from forms, rather than automatically syncing their forms with their back-end systems.

Reputational damage
It’s a cost that’s not easy to quantify but is critically important for the competitiveness of any
field services business…reputation.

It’s the trust that customers and clients have in ability to deliver what you promise. It’s
something that’s extremely hard to build and all too easy to lose.

In an increasingly digitally connected world, people now expect the kind of convenience
speed and efficiency that have been made possible by digital communications.

It’s a standard that a paper-based management setup will always struggle to meet.

A paper-based approach means slower processes, more administrative resources and higher
risk of inefficiency - documents lost, handwritten notes being misread and paperwork
incomplete.

With the viral power of social media, negative feedback, poor ratings and angry comments
can have a devastating impact on a company’s reputation.

Heightened compliance risks


A major risk faced by all field service businesses is non-compliance. Services need to be fast
and efficient but this cannot come at the cost of safety or adherence to laws and regulations.
Compliance is a challenging area to control when paper-based management methods are
being used. There’s a dangerous tendency for compliance measures to be viewed as being
needless paperwork chores.

It’s an area where digital management methods have a major advantage - allowing checks and
notifications to be automatically integrated into the everyday workflow.

These benefits help to minimise risks and can boost an organisation’s competitiveness when
tendering for contracts.

Lack of storage space


Paper documents can take up a significant amount of space, and the quantity of paper will
increase day by day.

Security issues
Regardless of size, for any organization is important to protect its data and other valuable
assets. One of the biggest information security risks for businesses is paper because printed
documents can be easily lost,

Prone to damage
Manual documents can be easily damaged, lost, misplaced or stolen. A fire or natural disaster
could mean the loss of essential information.

Document transportation
Transporting documents in a paper-based system is quite complicated, slow and inefficient.

Solution

The Benefits of Web-Based Systems


Web based applications used to be very limited in functionality. However, advances in
technology, security, and internet speeds have greatly increased the potential scope of web-
based systems. Today, we have web-based business accounting systems, web-based CRM
systems, a web-based Microsoft Office, and more. Web-based applications offer some
significant advantages over native, client-based software. Here are just some of the benefits
of web-based apps for business.

What is a Web Based System?


A web-based system is an application that is accessed via HTTP. The term web-based is
usually used to describe applications that run in a web browser. It can, though, also be used to
describe applications that have a very small component of the solution loaded on the client
PC. The host server for a web-based system could be a local server, or it could be accessed
via the internet.

Lower Development Costs


A web-based application runs in a web browser. That means that a single, responsive web
application can be used across multiple device types. Although web apps will need to be
tested on different browsers, there is no need to test them on different operating systems. This
makes development and testing much easier. It cuts development costs and reduces
development time.

Easy Installation and Maintenance


Unlike traditional software that is loaded on each device, web applications run from a host
server. There is no installation on local machines. Software upgrades are all completed
centrally. That reduces the costs of installing and upgrading software. It also ensures that all
users are always using the same version of the software.

Accessible Anywhere
Users can access a web-based system anywhere. So long as they have an internet connection,
a web browser, and the appropriate login details. This means that users can access the data
they need when they are away from the office. It also brings the possibility of staff working
from home.

Easy Data Sharing and Collaboration


The sharing of data and collaborating on projects is made much easier with web-based
systems. Data is stored in one central location, so users can share data and work together on
projects. It is also easier to integrate web-based systems than isolated desktop applications.

Centralized Security
As web apps are installed on web servers, security is controlled by an IT professional. That
avoids sensitive corporate information being held on many local client PCs, which are not as
secure. Employees can access data when they are away from the office via a web application.
So, it is not necessary for data to be held anywhere other than the secure central location.

Reduced Hardware Costs


Web-based systems can eliminate the need for powerful client PCs. Processing is carried out
on the host server. The host server can be engineered to efficiently service simultaneous, peak
demand. So, the storage, processor, and memory requirements for client PCs can be reduces.
Taken across an entire organization, this can represent a large cost saving for some
businesses.

Increased Efficiency
In most businesses, the deployment of web-based solutions leads to the streamlining of
business processes. Often, paper-based processes can be replaced by workflow-based
solutions. The business process improvements can lead to higher employee productivity and
lower costs.

Adaptable to Changing Workloads


The deployment of web-based applications requires no software loading on the client PC. All
that is needed is the setting up of a new user and the relevant secure access controls. This can
be a major benefit for growing businesses, or for seasonal businesses. Users can be added or
removed very quickly.
Greater Availability of Information
Web-based systems make it easier to provide access to real-time information. The paper
reports that might take days to prepare and distribute can be replaced on online reports and
digital dashboards. That can improve the quality and the speed of decision making, right
across an organization.

Web based custom application development can provide businesses with significant cost
savings and productivity improvements. Now that internet access is almost universally
available and internet speeds have significantly improved, applications that previously had to
be client based can now be deployed on the web.

Although this is the case in developed Western countries, it is not the case worldwide. In
some countries, internet access is unreliable. So, major deployment of web-based applications
may still not be possible. International organizations with overseas offices may not yet be
able to take full advantage of web-based solutions.

For domestic organizations, though, web-based systems have a promising future. From web-
based office applications, like content management systems and productivity applications, to
custom web-based software developed specifically for your organization, the foundation of
many future software solutions is likely to be web-based

When switching to a Cloud computing system, all of the company’s documents are housed in
the one place – you just need to do is simply login. The cost of storage will reduce
dramatically, as cloud storage is less costly than physical storage and all documentation is
safe, meaning no document will be damaged or destroyed ever again. Search time will also
decrease because there is the handy search bar available. Type in the relevant keyword, tag or
file number and within a matter of seconds, everything you need will appear.

Collaboration becomes easy when using Cloud computing. Documents can be readily
shared, updates are in real-time, changes can be tracked and all annotations can be made on
the same document, then owned by users. This way of collaboration also gives an equal
opportunity and higher levels of participation by team members.

benefits of web based system

NO MORE UPDATING ISSUES


According to a study from SC Magazine: [tweet box design=”default”]Small businesses are
spending a ridiculous amount of time each week on updating software.[/tweet_box] Well,
they don’t say “ridiculous” exactly but they do report that 11 hours a week is normal. Talk
about a waste of productivity. When a desktop software update is rolled out, it needs to be
installed on every single machine that the program is found on. Often, this has to be done
before any more work collaboration. That’s a huge reason developers are migrating towards
web application development software- they only need to roll out one update to the app,
rather than installing it individually on multiple devices.

LESS MONEY, MORE POWER


When it comes to desktop-based custom software application development, consideration has
to be given to the power of the machines that will be running. Sometimes a rollout of a
demanding new software program can require a complete hardware overhaul too. That’s a
huge expense. However, when web apps are used, they can be used from almost any device
with a browser. The computing power is coming from the server, which cuts down on
necessary on-site hardware requirements.

PLATFORM HAPPY
Not only is being able to use a less powerful computer (or tablet) a benefit of web apps,
having a different operating system isn’t an issue either. It’s all about the browser. Whether
the user is on Windows XP or 10, Mac OS or Linux, the web app is built for the browser.
True, some browsers don’t play nice with others. However, It’s generally much easier to code
for different browsers than it is for different operating systems. On top of that, the interface
will usually be much more familiar to the user.

QUICK DEVELOPMENT CYCLES


Every developer has their preferred language, no matter where they are. Whether they handle
software development in Perth like Red Rock Software or across the globe, some people just
work better in certain languages. In general, though, web based languages like HTML,
JavaScript, and CSS are easier to code in and develop quicker results- and that’s what is used
in order to build the majority of web apps. On top of that, there are even frameworks in place
to make the job even easier.

Improved Security
The SC Magazine survey mentioned before also brings up another point. Workers aren’t
updating software due to productivity: 60% of the businesses they surveyed are not always up
to date when it comes to their software. The biggest problem that this leads to is security.
Updates are often released to programs just to patch security holes and not just to fix bugs.
The problem is, if the updates never take place, the holes never get patched and the
computers are still vulnerable.

The Flexibility of the Internet


The desk and chair aren’t the same as they used to be. The office isn’t either. Web apps offer
the flexibility of access wherever there is internet. Employees aren’t chained to their desks
like they once were. According to a study by Global Workplace Analytics, employees of
Fortune 1000 companies around the world are not at their desk 50-60% of the time. With web
apps, they can have access to the office from anywhere.

Support
In a perfect world, users would never need to access support. Every program on every
computer would just work perfectly and every user is perfectly knowledgeable. Of course,
that’s not the case. Luckily, the old saying that there is always someone smarter out there can
work to our advantage. Many web apps have built in community support already accessible
online. This allows for the quicker resolution of issues, because the chances of somebody else
having the same problem that has already been fixed are pretty good

Higher Usage Rates


People are spending less time browsing on the internet and more time using apps connected
to the web. A study from Flurry Analytics shows that apps are taking control of 86% of the
time that users are spending on their phones. With web apps, users just log on and use it.
They don’t have to worry about downloading and installing, hoping that it works. It’s instant
use.

User Tracking
With web apps, there is built-in user tracking. This makes it much easier to figure out what
works with built programs and what doesn’t. Then, it makes improving future versions more
simple. Of course, we already talked about the ease of updating web programs, so developers
can make sure that their improvements are actually being utilised.

Offline Use
Although being able to be used online is a huge advantage, some people are concerned about
the necessity of being connected to the internet. In fact, just because it’s a web app doesn’t
mean it has to be used online. Offline versions can be built just as easily, although some of
the advantages are lost, this does eliminate a certain drawback

Customisation for different devices


Content within web-based applications can be easily customised for use on various devices,
such as mobile. This makes the application user-friendly, and pleasant to use since the
presentation of information can be altered accordingly. In fact, it is actually easier to
customise web-based applications than it is for standard desktop applications. Web-based
software can also be responsive to change based on browser. This supports mobile working
and ensures employees have the software at their fingertips whenever required.

Integration with other systems


Web-based applications give a far greater ability to integrate with other systems than desktop
applications. Localised software is isolated compared to web-based applications which are
significantly more interoperable. This is because web applications can be linked together
more easily than two completely separate systems.

Advantages of Agile model:


 Customer satisfaction by rapid, continuous delivery of useful software.
 People and interactions are emphasized rather than process and tools. Customers,
developers and testers constantly interact with each other.
 Working software is delivered frequently (weeks rather than months).
 Face-to-face conversation is the best form of communication.
 Close, daily cooperation between business people and developers.
 Continuous attention to technical excellence and good design.
 Regular adaptation to changing circumstances.
 Even late changes in requirements are welcomed.
Listed below are a few disadvantages of Agile:
 In case of some software deliverables, especially the large ones, it is difficult to
assess the effort required at the beginning of the software development life cycle.
 There is lack of emphasis on necessary designing and documentation.
 The project can easily get taken off track if the customer representative is not clear
what final outcome that they want.
 Only senior programmers are capable of taking the kind of decisions required during
the development process. Hence it has no place for newbie programmers, unless
combined with experienced resources.
Agile Developments also fails at times due to Unrealistic Expectations – Agile actually is and
what it can help you achieve. Agile is commonly believed to be a set a practices, processes
and tools, when in fact, Agile is really more of a mind-set and culture.
When to use Agile model:
 When new changes need to be implemented. The freedom agile gives to change is
very important. New changes can be implemented at very little cost because of the
frequency of new increments that are produced.
 To implement a new feature the developers need to lose only the work of a few days,
or even only hours, to roll back and implement it.
 Unlike the waterfall model in agile model very limited planning is required to get
started with the project. Agile assumes that the end users’ needs are ever changing in
a dynamic business and IT world. Changes can be discussed and features can be
newly effected or removed based on feedback. This effectively gives the customer the
finished system they want or need.
 Both system developers and stakeholders alike, find they also get more freedom of
time and options than if the software was developed in a more rigid sequential way.
Having options gives them the ability to leave important decisions until more or better
data or even entire hosting programs are available; meaning the project can continue
Difference between traditional and agile project methodology

Characteristics Agile approach Traditional approach

Organizational
Iterative Linear
structure

Scale of projects Small and medium scale Large-scale

Clearly defined before


User requirements Interactive input
implementation

Involvement of
High Low
clients

Development
Evolutionary delivery Life cycle
model

Customers are involved from Customers get involved early in the


Customer
the time work is being project but not once the execution
involvement
performed has started

Escalation When problems occur, the Escalation to managers when


entire team works together to
management problem arise
resolve it

Traditional model favors


Model preference Agile model favors adaption
anticipation

Less focus on formal and More serious about processes than


Product or process
directive processes the product

Test Tests are planned one sprint at a


Comprehensive test planning
documentation time

Project manager provides estimates


Scrum master facilitates and
Effort estimation and gets approval from PO for the
the team does the estimation
entire project

Reviews and Reviews are done after each Excessive reviews and approvals by
approvals iteration leaders
 to move forward without fear of reaching a sudden standstill.
Agile development model is also a type of Incremental model. Software is developed in
incremental, rapid cycles. This results in small incremental releases with each release
building on previous functionality. Each release is thoroughly tested to ensure software
quality is maintained. It is used for time critical applications. Extreme Programming (XP) is
currently one of the most well known agile development life cycle model.
1.2

Estimation and scheduling


The unique nature of individual software projects creates problems for developers and
managers in estimating and scheduling development time.

2. Sudden growth in requirements


As a project progresses, issues that are not identified earlier can create a last-minute
hurdle to meeting deadlines. and anticipate the worst-case or heaviest-use scenario.

3. Employee turnover
Every project has a number of developers working on it. When a developers leaves, he or
she may take critical information with him/her. This can delay, and sometimes derail an
entire project. Ensure you have resources where team members can collaborate and share
knowledge.

4. Breakdown of specification
During the initial phases of integration and coding, requirements might conflict. Moreover,
developers may find that even the specification is unclear or incomplete.

5. Productivity issues
On projects involving long timelines, developers tend to take things easy to begin with. As a
result, sometimes, they lose significant time to complete the project.

6. Compromising on designs
In order to get stuck into the next ‘real’ tasks, developers tend to rush the design-process.
This is a waste of programming hours, as designing is the most critical part of software
development.

7. Gold plating
Developers sometimes like to show off their skills by adding unnecessary features.
For instance, a developer might add Flash to a basic login module to make it look
‘stylish’. Again, this is a waste of programming hours.

8. Procedural risks
Day-to-day operational activities might hamper due to improper process implementation,
conflicting priorities, or a lack of clarity in responsibilities.

9. Technical risks
Sometimes software development firms reduce the functionality of the software to
compensate for overruns pertaining to high budgets and scheduling. There is always a
conflict between achieving maximum functionality of the software and peak performance.
In order to compensate for excessive budget and schedule overruns, companies sometimes
reduce the functionality of the software.

10. Unavoidable risks


These include changes in government policy, the obsolescence of software or other risks
that cannot be controlled or estimated. As the field of software development becomes
more and more complex, the risks associated with it have intensified. It is vital that
development firms focus on strategic planning to mitigate such risks.

11.Bad Timing
Speed matters. In a highly competitive environment, one day can mean big profits or big
setbacks. Scheduling problems can arise for a variety of reasons, for example:

· the time for the project was initially incorrectly calculated and set;
· the project manager does not properly track employees, skills, task status;
· the functional features of the final product were not determined in a timely manner;
· unexpected and urgent expansion of the project scope;
· lack of resources, etc.

Tips to avoid this software development risk: apply agile methodologies, ensure the
maximum involvement of all team members in planning and estimating, receive feedback
at all stages, starting from the earliest ones, involve the Owner or Stakeholders. Another
solution may be an emergency expansion of the team to increase the speed of
development, however, this can significantly affect the project budget.

12.Poor Code Quality and Technical Risks


Technical risks in software development are often a pitfall, something that
is not immediately noticeable but with serious negative consequences. In
an effort to get an innovative product, companies often require the use of
cutting-edge technologies, which themselves can have a number of
significant disadvantages. However, this is not the only reason that
increases the risks:

· lack of professionalism and knowledge of team members;


· constant changes in software requirements;
· the technology used does not have a sufficient level of development and
community support (it cannot provide the necessary functionality);
· too complex multi-part project;
· the implementation of project modules (in, for example, an existing
platform or application) turned out to be more difficult than
expected.

In this case, only flexible risk management can help. However, as practice
shows, in case of serious obstacles, it will not be possible to completely
avoid

13 Poor Productivity

Drop-in productivity is also among software development risks. This


usually occurs when working on projects with a long timeline. Engineers
motivated at the very beginning by the end of the project can hardly cope
with the tasks. The downside of a long project can be a waste of time in
the early stages when the illusion persists that the deadline is not too
soon. The reasons for poor productivity include:

· poor project management;

· incorrectly chosen methodology;

· incorrectly matched team members.


Tips to this type of risk are hidden in their reasons: using agile
methodologies allows to maintain the productivity and motivation of all
team members throughout the project since the processes are divided
into shorter periods of time. In addition, it is an opportunity for the project
manager to mentor and coach the team, which also helps to increase and
maintain a high level of developer involvement. The Product Owner will
also be more informed about the state of tasks and will be able to
observe the project.

14 Poor Management
As statistics show, 32% of projects fail due to poor project management. This concept
usually includes:

· poor communication and interaction within the team;


· insufficient qualification level of PM;
· lack of leadership and analytical skills;
· poor risk management in software development.

One of the consequences of poor project management can be the turnover of employees:
key project developers leave the team, without passing on crucial information on the
project to anyone, this entails delays in development, failure to meet deadlines, and
budget.

Therefore, high standards are always set for the project manager. He must combine the
traits and skills of a strategist and tactician, be deeply involved in the project, effectively
communicate with the team, build a strong organizational framework, and implement
elaborate documentation processes.

1.3
2.1

Software development tools

A programming tool or software development tool is a computer program that software


developers use to create, debug, maintain, or otherwise support other programs and
applications. The term usually refers to relatively simple programs, that can be combined
together to accomplish a task, much as one might use multiple hand tools to fix a physical
object. The most basic tools are a source code editor and a compiler or interpreter, which are
used ubiquitously and continuously.

Other tools are used more or less depending on the language, development methodology,
and individual engineer, often used for a discrete task, like a debugger or profiler. Tools
may be discrete programs, executed separately – often from the command line or may be
parts of a single large program, called an integrated development environment (IDE). In
many cases, particularly for simpler use, simple ad hoc techniques are used instead of a tool,
such as print debugging instead of using a debugger, manual timing (of overall program or
section of code) instead of a profiler, or tracking bugs in a text file or spreadsheet instead of
a bug tracking system.

The distinction between tools and applications is murky. For example, developers use
simple databases (such as a file containing a list of important values) all the time as tools
However a full-blown database is usually thought of as an application or software in its own
right. For many years, computer-assisted software engineering (CASE) tools were sought
after. Successful tools have proven elusive. In one sense, CASE tools emphasized design
and architecture support, such as for UML. But the most successful of these tools are IDEs.

NetBeans
NetBeans - web development tool
NetBeans is an open-source IDE that allows you to develop desktop, mobile, and web
applications.
The tool is written in Java and allows you to quickly and easily create and develop
applications.
NetBeans is our top choice in the drag and drop software development tools category and
web developers love it.
Features
Tools for JavaScript, HTML5 and CSS3
Community provided plugins
Ability to write buga free code
Fast code editing
Supports multiple languages

Atom
Atom is an all around text editor and useful software development tools. It is an open-source
that can be used and customized to do anything without the added effort of modifying the
configuration file.
Based on its suitability for the development of management tools we’ve included Atom in
our software development tools category.
Features
Cross-platform editing
Smart autocompletion allows for faster coding
In-built package manager
Comes with 4 UI and 8 syntax themes
Easy to customize and style

Visual Studio Code Editor


Some of the elements developers love about GitKraken are also present in Visual Studio
Code, a code editor by Microsoft. Offering an intuitive UI with a prominent sidebar,
powerful defaults, discoverable extensions, and more, VS Code provides a simple and clean
code editing platform for student developers.
VS Code users appreciate the ability to organize files by folder or project; there is also smart
editing for built-in languages like JavaScript and Typescript, which can come in handy for
students who are constantly being introduced to new coding languages.

JetBrains

JetBrains is a set of professional software development tools for coding in Java, Kotlin, C#,
C++, Ruby, Python, PHP, JavaScript, and more languages. You can get free access to all
JetBrains IDEs if you are students or teachers. You can verify by several options: your
educational email, ISIC or ITIC card, official document, or with Github pack.

Cloud9 IDE

Cloud9 IDE is an online integrated software development environment. It supports many


programming languages like C, C++, PHP, Ruby, Perl, Python, JavaScript and Node.js.
Features
Allows to clone entire development environment
Built-In Terminal for command-line wizard
Code Completion suggestions helps software developers to code faster and avoid typos
The Debugger helps developers to set breakpoints, and inspect variables of any JS/Node.js
app
Simply drag any file or Terminal to create multiple split views
Developers can select an extensive set of default Runners to execute app, such as Ruby,
Python, PHP/Apache

Visual Studio
Visual Studio is a collection of services. It is fast and easy to plan, build and ship software
across a variety of platforms. These software development tools allow the organization to
create the perfect development environment.
Features
Track and manage all ideas on Kanban or scrum boards with agile tools
Improve code quality and catch issues early
Build, manage, secure and share software components
Automate and simplify Azure deployments
Tools for manual, performance and automated testing
It offers a centralized version control system with free private repositories.

Sublime Text
Sublime Text is a sophisticated text editor for code, markup, and prose. There’s a lot of
shortcuts that enable you to open files and jump between lines easily. Sublime Text let you
change many lines at once due to the multiple selection option. You don’t need to go
through the menus, you can just search for what you need. You can also switch between
projects easily. It works very well!

Notepad++
Notepad++ is open source code editor written in C++. It supports various programming
languages running under the Microsoft Windows environment. But is has a few drawbacks.
Here, is a curated list of top 10 alternatives which can replace Notepad++. This list includes
commercial as well as open-source code editors (IDE) with popular features and latest
download link.
jEdit,
jEdit, a code editor program which is written in Java. This open source tool supports
hundreds of plugins and macros. It offers a large collection of plugins maintained by a
worldwide developer team.
Features
Built-in macro language & extensible plugin architecture
Allows copy and paste with an unlimited number of clipboards
You can download plugins with the help of the plugin manager.
Register contents are saved across editing sessions.
Allows auto indent, and syntax highlighting over 200 languages

textMate
TextMate is a versatile plain text editor for mac with unique and innovative features. The
tool offers support for many programming languages, writing prose in structured formats
such as blogging, running SQL queries, writing screenplays, etc.
Features
Auto-Indent for Common Actions
CSS-like Selectors to find the Scope of Actions and Settings
Dynamic Outline for Working With Multiple Files
Function Pop-up for Quick Overview and Navigation
Run Shell Commands from Within a Document
Visual Bookmarks to Jump Between Places in a File

Zend Studio
Most web developers opt for Zend Studio because of its optimal speed. Writing and
debugging code in Zend Studio doesn’t demand any extra effort and time from developers.
While supporting PHP 7, it debugs PHP scripts by integrating X-ray, Debugs, and Zend
Debugger. This comprehensive PHP IDE comes with an exciting set of features and
powered to deploy applications on various servers, including servers in the cloud.
Developers can extend Zend Studio via Eclipse plugins.
Zend Studio Features
Indexing and searching PHP Code.
Faster Performance in the validation.
Zend Framework & Zend Tool Integration.
Docker Support.
Support for Eclipse Plugin.
Zend Studio Specialties
Languages supported: PHP, JavaScript, Visual Basic, C, C++, and C#.
Platforms supported: Microsoft Windows, Linux, and MacOS.
PHPDebugbar
PHPDebugbar is a PHP debugger that can run with any project and display data from a
broad range of web apps. This PHP development tool includes two parts: main bearer
object and data collectors and the render. A Standard-bearer includes a pre-configured
built- in set of collectors.
Along with PHP, you can also catch JavaScript and HTML. In addition, PHPDebugbar can
inspect CSS elements and monitor networks. By offering more features that developers
expect, it becomes a quite impressive open source solution. It can be the best option for the
profiling of data from any web application. It allows you to create your own collection for
easy integration.
PHPDebugbar Feature
Monitor network traffic.
Handles AJAX
requests.
Log & debug directly to Debugbar.
Fast & easy to use interface.
Preview config& application config.
PHPDebugbar Specialties
Languages supported: PHP, Ruby, .Net and Java.
PHP versions supported: PHP 5.5 and above.

Cloud9 IDE
Really interesting 100% online software programming tool with collaborative features for
teams to work together

CodeLobster (Win) (Free)


Free portable PHP IDE with support for Drupal, Smarty, WordPress, Joomla, JQuery,
CodeIgniter, HTML, CSS, JavaScript, CakePHP, Facebook, Symfony, Yii.
CodePen
CodePen is a playground for the front end side of the web. It’s all about inspiration,
education, and sharing. HTML, CSS, and JavaScript in an easy to share environment to try
out ideas and get ideas.

Software development methods

Waterfall Model:
If you are into software development at some point or the other, you would have bumped
into the Waterfall Model.

Considered as the traditional method of explaining the software development process in


software engineering, waterfall model happens to clarify the process into a linear flow with
a specified sequence to let the users understand that further level is made progressive on
completion of the previous one.

Moreover, this methodology also talks about the fact that going back to deal with the
changes is not possible.

Figure

Advantage
Easy to understand and functional
Simple enough to handle as model is rigid
Saves significant amount of time
Allows for easy testing and analysis
disadvantage
Only matches precise needs
Not applicable for maintenance projects
No option to know possible outcome of a project
Not excellent for long and ongoing projects

Prototype Methodology:
It is a specialized software development procedure that initiates developers towards making
only the sample of the resolution to validate its functional essence to the customers and
make essential changes before creating the authentic final solution.

In fact, the best part of this methodology is that it tends to resolve a set of diversifying
issues occurring with the waterfall method.

Figure
advantage:
Gives clear idea about the functional process of the software
Reduces the risk of failure in a software functionality
Assists well in requirement gathering and the overall analysis
Disadvantage :
Chances of extension in management cost
Excessive involvement of client can affect processing
Too many changes affect the workflow of the software

Development Methodology:
As an innovative approach, the agile software development methodology is used for
articulating a well-organized project management procedure allowing for recurrent
alterations.

Certainly, such type of a methodology is one theoretical outline for undertaking several
software engineering projects.

Another good thing about it is that it minimizes peril by creating software in short time
boxes, known as iterations, which happen to last from one week to one month.

Advantage :
Adaptive approach that responds to changes favorably
Allows for direct communication to maintain transparency
Improved quality by finding and fixing defects quickly and identifying expectation
mismatches early.
Disadvantages :
Focuses on working with software and lacks documentation efficiency
Chances of getting off-track as outcome are not clear

Spiral Model:
Being a highly sophisticated design, it is meant to reduce the early risks in the project.

As per the process going by, the developers initiate on a smaller level and explore the
included risks in it.

Further to this, the developers are intended towards crafting a plan for iterating of the spiral.
The accomplishment of any Spiral Lifecycle model is based on consistent, observant, and
conversant management of the project.

Advantage :
Risk factors are considerably reduced
Excellent for large and complex projects
Allows for additional functionality later
Suitable for highly risky projects with varied business needs
Disadvantage :
Costly model in software development
Failure in risk analysis phase may damage the whole project
Not appropriate for low-risk projects
Might get continued and never finish

Extreme Programming Methodology:


Extreme programming is identified by the fact that customer involvement in the software
development process is unbelievably high.

As an agile software engineering methodology, extreme programming methodology is


presently known as XP methodology.
It is chiefly used for crafting software within a very unbalanced atmosphere.

It enables greater tractability within the modeling procedure.

The foremost aim of this XP model is to reduce the cost of software essentialities.

It is fairly mutual in the XP model that the price of altering the requirements on future stage
in the project can be really whooping.

Advantage :
It lays focus on customer involvement
Establishes rational plans and schedules
Developers are exceptionally committed to the project
Equipped with modernistic methods for quality software
Disadvantage :
Effectiveness depends on the people involved
Requires frequent meeting for development raising total costs
Necessitates for excessive development changes
Exact possibilities and future outcomes are really unknown
Joint Application Development Methodology:
The Joint Application Development Methodology is a requirements-classification and user-
interface expansion approach that necessitates for the end-users, clients and developers
attend a powerful off-site conference to accentuate and confirm software system.

This methodology serves towards including the client in the design and expansion of an
application.

This is effortlessly proficient through a sequence of concerted workshops known as JAD


sessions.

It tends to lay emphasis on the business difficulty rather than methodical details.

Advantage :
Allows for simultaneous congregation and alliance of excessive information.
Produces huge amount of valuable information in short period
Immediate resolving of differences with suitable assistance
Provides forum to explore multiple points
Disadvantage :
Takes excessive amount of time for planning and scheduling
Requires significant investment of time and effort
Calls for highly trained experts, which is tough to find

Scrum Development Methodology


SCRUM is the most widely preferred agile software development approach.

(Likewise, KANBAN is a process that helps teams to collaborate and work effectively.)

Basically, this excellent development is suitable for those development projects that are
constantly altering or extremely developing requirements.
The Scrum Software development model initiates with an ephemeral planning, conference
and completes with a concluding review.

This growth methodology is used for prompt development of software that happens to
include a series of iterations to generate required software.

It is a perfect approach because it effortlessly brings on track the deliberate progressing


projects.

Scrum Development Methodology

Advantage :
Decision making lies in the hands of the team
Business requirement document is considered insignificant
Lightly controlled method empathizing with constant updating
Disadvantage :
The processing method suffers because of wavering costs
Not suitable for big sized projects
Requires highly expert team, which has no place for novices

Dynamic System Development Model Methodology:


Authentically formulated and derived from the rapid application development methodology,
it is an iterative and incremental approach that focuses on the involvement of the user.
The task of this methodology is to provide software development systems within the
specified time frame and the allocated budget.
The very reason why it is quite in demand in the world of software development.
Advantage
:
Users getting a grip of the software development process
Functionality deliverables are quick
Offers easy access to end users by the developers
Disadvantage
This methodology is costly to implement
Not suitable for small organizations

Feature Driven Development:


Being an iterative methodology for software development, it is aimed at serving a large
number of teams working on a project based on object-oriented technology.
This sort of model is decent for companies that are passing on from a phase-based method
to an iterative approach.
It is already known as an FDD methodology and is highly functional and creative enough to
deal with varied complexities.
Advantage
Moves bigger projects with continuous success
Easiest 5 procedures bring outcome in a better manner
Built on pre-set standards of software development, it is programmed for easy development
Projects that need continuous updates are powered by feature-driven development that
ensures all needs are taken care of.
Results in features that always outshine the inputs
Since this is based on some of the best software development practices, any developer with
relevant experience can handle and manage the project-related tasks with ease.
Disadvantage
Not suitable for smaller projects and a single developer – always a huge team is required,
which means that we cannot ever guarantee a brisk deadline.
Highly dependable on the leading developers, necessitating for the complete structure – the
process needs to be monitored through each phase as even a minute flaw can create chaos in
the system.
Highly dependable on the leading developers, necessitating for the complete structure – the
process needs to be monitored through each phase as even a minute flaw can create chaos in
the system.
2.2
The software development process selected method : - agile methods
The software development process selected tool : visual studio code

Why select Agile Web Development Process at this company

Within agile approach the steps of web development are mostly simultaneous. All team
members, from decision-makers to designers and content creators should organize meetings
during the early stages of web development. Understanding of project requirements on all
stages by all team members reduces the need for constant emails, calls and meetings
throughout the entire process. Due to agile approach work that took 4-8 months can now be
accomplished much faster.

The typical agile web development process is divided into a series of ‘sprints’. Each sprint
involves discovery, design, development and testing.

Benefits of Agile Web Development


Higher Customer Satisfaction
Customer is always involved in the process of web development. Due to high visibility, the
product owner is aware of the results of every sprint. Such engagement throughout the
project lets the customer to monitor the process and ask for any changes or improvements if
necessary.

Increased Project Control


Sprint meetings, transparency and visibility of each step of the project for both parties
results in a successful solution.

Focus on Business Value


As long as the customer determines the priorities of the project, the development team
understands what’s important to the client’s business and can deliver the solutions oriented
business value.

Regular Check-ups
In agile development, testing is integrated during the cycle. This means that there are
regular checkups to ensure that the product is working right during the process of
development.

Lower Costs
Faster development eliminates the need for overtime payment.

Higher Productivity
The opportunity to better estimate the project provides with a higher productivity.

Early and Predictable Delivery


Fixed schedule sprints of 1-4 weeks ensure the delivery of new features quickly and with
high level of predictability.

Reduced Risks
Agile methodology eliminates the chances of complete project failure. This approach
encourages open communication between the customer and web development team and is
great for those who value transparency.

Flexibility
Project requirements and workload are not fixed. Clients have a possibility to change both
these aspects if they find it necessary.

Wrap-up
Web development is much more than making websites or applications. This process
includes further support & maintenance as well as updates and checkups. Our team at
Wishdesk always recommends agile for custom web development projects. This approach
helps to deliver quick and more effective results and provides with long-term project
maintenance.

Why select visual studio code Development Process at this company

Visual Studio Code has some very unique features. They are listed as below :

Support for multiple programming languages: Itupports multiple programming languages.


So earlier, programmers needed Web-Support: a different editor for different languages, but
it has built-in multi-language support. This also means it easily detects, if there’s any fault
or cross-language reference, it’ll be able to detect it easily.
Intelli-Sense: It can detect if any snippet of code is left incomplete. Also, common variable
syntaxes and variable declarations are made automatically. Ex: If a certain variable is being
used in the program and the user has forgotten to declare, intelli-sense will declare it for the
user.
Cross-Platform Support: Traditionally, editors used to support either the Windows or Linux
or Mac Systems. But Visual Studio Code is cross-platform. So it can work on all three
platforms. Also, the code works on all three platforms, else, the open-source and proprietary
software codes used to be different.
Extensions and Support: Usually supports all the programming languages but, if the
user/programmer wants to use the programming language which is not supported then, he
can download the extension and use it. And performance-wise, the extension doesn’t slow
down the editor as it rums as a different process.
Repository: With ever-increasing demand of the code, secure and timely storage is equally
important. It is connected with Git or can be connected with any other repository for pulling
or saving the instances.
Web-Support: Comes with built-in support for Web applications. So web-applications can
be built and supported in VSC.
Hierarchy Structure: The code files are located in files and folders. Along with the required
code files, it also has some files, which may be required for other complex projects. These
files can be deleted as per convenience.
Improving Code: Some code snippets can be declared a bit differently, which might help the
user in the code. This function prompts the user wherever necessary to change it to the
suggested option.
Terminal Support: Many of the times, the user needs to start from the root of the directory to
start with a particular action, in-built terminal or console provides user support to not to
switch in-between two screens for the same.
Multi-Projects: Multiple projects containing multiple files/folders can be opened
simultaneously. These projects/folders might or might not be related to each other.
Git Support: Resources can be pulled from Git Hub Repo online and vice-versa; saving can
be done too. Resource pulling also means to clone the code which is made available on the
internet. This code can later be changed and saved.
Commenting: A common feature, but some of the languages do not support it.
Commenting the code helps the user to recall or track according to the sequence he wants.

Advantages and Why should we use Visual Studio Code


There are many advantages over any other IDE, they are as follow:

1. Cross-platform support :

Windows
Linux
Mac
2. Light-weight

3. Robust Architecture

4. Intelli-Sense

5. Freeware: Free of Cost- probably the best feature of all for all the programmers out there,
even more for the organizations.

6. Many users will use it or might have used it for desktop applications only, but it also
provides great tool support of Web Technologies like; HTML, CSS, JSON.

There are a few things, which one can find a bit odd compared with so many features. It
mainly helps the front-end developers as compared with the back-end developers. But as per
some user’s opinions, it is equally helpful. It supports most of the languages used by most
of the programmers but other languages might have to downloaded or extensions may have
to be used for them. Along with this common zoom-in, zoom-out brightness, theme
selection features too are made available.

Visual Studio Scope


The most common languages are :

 C#
 Visual Basic
 Java-Script
 R
 XML
 Python
 CSS
 GO
 PERL
Another feature which naïve-users or anyone can see instantly different from other editors is
the user-friendliness of the Visual Studio Code. The usability is very easy to handle. The file
is arranged hierarchically and has regular softwares like toolbar, status bar, and a sidebar. It
also has a floating windows explorer window, which can be fixed at one place according to
convenience, which consists of the directory structure of files. These files (code files, image
folders, etc.) can be opened or renamed from here and changes will automatically get
reflected in the storage.

Why do need Visual Studio Code?


Till recent times, there’s hardly been an IDE or code editor which has been so user-friendly,
that even the first time users can use each and every feature without any hassles. The
coding-friendly feature and code error recognition also helps users a long way into making
the code more efficient and error-less.

How this technology will help in career growth?


With new and emerging technologies, and new frameworks being used by the software’s,
this brings into play a great variety of code effectiveness. These emerging technologies are a
sure thing, that is to be added into the Visual Studio Code and its extensions. The
developers, testers, data administrators; both old and newbies can equally use it and that too
very effectively. The people who are into this industry might find it a bit tough to learn this
new technology, considering their use of more manual modes of code-logic.

With advancements in technology day-by-day, Visual Studio Code is going to play a pivotal
role in the development of software’s. With its ever-evolving features and soon-to-be-added
new settings, which will enable users to work with it from anywhere, it is certainly “THE
THING” to keep one ahead of everyone in this ever-increasing IT market.
2.3
Solution
High efficiency. Even companies operating in the same niche do business differently. Their
internal processes are usually different. The product, which is designed exclusively for
needs, doesn’t contain any unnecessary functions, and it allows to quickly achieve the
desired results.

Usability. As noted above, custom programs don’t have unnecessary functions. This speeds
up the work and allows to optimize processes. In addition, the absence of unnecessary
components accelerates training the staff responsible for working with it. Another reason
why this is convenient is the integration option. If the company used to operate with several
ready-made solutions, now, the developers can integrate them into one system without
losing data.

Flexibility and scalability. Ready-made solutions are usually targeted either at a small
companies or at large enterprises. It’s difficult to find a middle ground, especially if you
don’t know what features might need in the near future. As the business develops, bespoke
software can be adapted to changing needs. Another important point: can easily increase the
number of the system’s users without slowing down its speed.

Long-term benefit. If you use a product with a license fee for each connected user, your own
development will be especially beneficial for you. Even after several months, with
increasing staff, the savings on licensing fees can be very high.

Security. If someone hacks a user account, the information for each customer will be in
danger. Because cracking the individual system requires a targeted attack, there is less
public information about its functionality, and it becomes much more difficult to do that.
Moreover, you can reach an agreement with the developers on additional security measures
and create a higher level of protection.
Independence. The intellectual property for the product belongs to are not tied to a specific
supplier who can change his plans anytime. If you aren’t satisfied with the service level, can
change the developers and find more suitable performers, as are the product’s owner.

Competitive advantages. Since use a customized solution, this can give a number of
competitive advantages, such as increasing efficiency, increasing employee and customer
loyalty, and improving other business-relevant factors. The introduction of exclusive
innovations in the product for internal use can help to stay one step ahead of the competitors

Valuable Data Collection and Processing


Collecting data
Documentation, accounting, photographs, and inspection results the amount of data
generated by a company in the process of its operation can be great, depending on the type
of business. Moreover, if all of these operations are handled manually in an offline mode,
data collection and processing may require plenty of time and resources.

A mobile app, developed to attend to these needs, will combine several steps into a single
process to significantly speed them up, as well as automate the transfer and storage of the
data received. If necessary, it is also possible to have the app work in an offline mode
and synchronize the results with the database after being connected to the Internet.

Data on Demand
Another problem that businesses often face is the lack of required data at hand when it is
needed. This is especially true when it comes to an accounting report done manually. In this
case, data acquisition may take a lot of time.

Installed on a smartphone, a mobile app can generate an accounting report in automatic or


semi-automatic mode and instantly provide access to relevant data, successfully solving the
problem.
Launch New Products and Services on the Market
Launch New Products
Mobile app development allows for the creation of services that could not exist without
information technology. This feature helps businesses stand out in their sector and gain a
competitive advantage.

For example, by using a mobile app, airline customers can check-in for a flight and register
their luggage while standing in the queue. Using a smartphone, insurance companies’
customers can issue comprehensive insurance policies on their own.

Internal Corporate Tool


Internal CRM
There are various messengers, CRM, calculators, and many more management tools for
internal corporate purposes. Companies underestimate the benefits of such solutions for no
reason. Automating processes can save money, increase the efficiency of separate
departments, and even of improve the entire company.

An app developed for a company that provides goods delivery courier services works based
on this principle. It automates delivery order management, accounting, communication with
senders and recipients, as well as partially automates order payments and reciprocal
payments with couriers.

Information Distribution and Customer Support


Customer support application
With a tool like this, people can get help easier and faster. This increases customer loyalty.
This app will be useful for companies that must regularly communicate with customers,
answer their questions, and solve their problems.

Having carefully analyzed customer needs and their requests for technical support, it is
possible to create a convenient app to automate a large part of the tasks in this direction. It
will automatically accept applications, provide answers to frequently asked questions, and
enable additional options and services.
The main advantages of using business management software:
organizing all business information in the accessible and user-friendly manner that leads to
the work time saving and increasing productivity;
automating business processes and reducing manual efforts that leads to minimizing
mistakes in documents and errors in the business operations;
collaboration between various business software solutions that enables providing collecting,
managing and controlling the information about various aspects and processes of the
business in one central place;
speeding up the making right business decisions that lead to the company's ability to
complete the business operations much faster and with better quality results;
using accounting software obviate the necessity to have a large accounting department;
getting work done faster and more effectively enables hiring less staff and save on payroll;
storing data on computers enables saving on the cost of the outside file storage and
eliminates purchasing copies and buying typewriters, fax machines, and other office items;
electronic communications, particularly email, enables companies and their clients, vendors,
and business partners to contact and transact business;
saving business resources leads to providing customers with much more affordable products
and service;
cloud business management software enables enhancements of the business calculating;
ability to perform tasks that previously needed to be outsourced makes companies and their
staff more self-sufficient.

Agile

Agile approaches in software development are group of software development methods that
speed up the software development process. Basically, agile development-based
methodology is a different way of managing software projects as opposed to other
traditional software approaches. agile approaches constitute a set of exercises used from
software development, developed by experienced software development practitioners
Agile methods are incremental in which the increments are small, the new software product
produced using agile methods is released and made available to customers in less than three
weeks these methods involve the customer in the entire development process in order to
accommodate their changing requirements during the process. Agile methods also minimize
documentation by using internal communications as opposed to formal meetings with
written documents.

Characteristics of Agile Methodologies are:

 Modularity - this allows the development process to be broken down into specific

components referred to as activities which enables transformation of software vision into


reality
 iterative - agile processes are based on short cycles where completion of each cycle

Iterative completes a set of activities.


 Time bound - time limits can be set on each iteration and can therefore be scheduled
Activities may also be rescheduled if they cannot be completed within the time limits

 Parsimony - agile processes requires few activities that are necessary to mitigate risks
and achieve their goals. By doing so, they enable system developers to finish their
work within an aggressive schedule,

 Adaptive - risks that may be exposed during Iteration are adapted by agile processes
the cannot be adapted, the activity may be discarded
 Incremental - agile processes builds a system progressively. Each increment is
tested separately

 Convergent - this states that all the risks worth attacking are actively attacked at the
same time the system is being delivered in increments. This is done to ensure success
of the system in a rapid format

 People oriented - agile approaches are keener on people over the development
process. People are involved during the entire development process

 Collaborative - agile approaches enforces communication among the development


team members since communication is an important part of developing a software
project

Key Principles of Agile Methodologies are:


• Active user involvement is imperative

 The team must be empowered to make decisions

 Requirements evolve but the timescale is fixed

• Capture requirements at a high level: lightweight & visual

• Develop small, incremental releases and iterate

• Focus on frequent delivery of products

• Complete each feature before moving on to the next

• Apply the 80/20 rule

• . Testing is integrated throughout the project lifecycle- test early and often

• A collaborative & cooperative approach between all stakeholders is essential

Challenges faced with the implementation of agile approaches are:


• Project managers may be reluctant to accept the risk of the new agile approaches since
they don't have experience on them.

• Many big organizations have their own standards on quality that have to be met for all
the projects. These are likely to be incompatible with agile methods

• Agile approaches work best with high skilled team members. However, many
organizations have people with low skill levels which may not be effective for agile
processes.

• There may be cultural resistance to agile processes. This is particularly common in


organizations that have been using conventional systems engineering processes for
long time.

Scrum (software development)

Scrum is the type of Agile framework. It is a framework within which people can address
complex adaptive problem while productivity and creativity of delivering product is at
highest possible values. Scrum uses Iterative process.
Silent features of Scrum are:
 Scrum is light-weighted framework
 Scrum emphasizes self-organization
 Scrum is simple to understand

Scrum framework help the team to work together

Lifecycle of Scrum:
Figure 1 07-06-2019

Sprint:
A Sprint is a time-box of one month or less. A new Sprint starts immediately after the
completion of the previous Sprint.
Release:
When the product is completed then it goes to the Release stage.
Sprint Review:
If the product still have some non-achievable features then it will be checked in this stage and
then the product is passed to the Sprint Retrospective stage.
Sprint Retrospective:
In this stage quality or status of the product is checked.
Product Backlog:
According to the prioritize features the product is organized.
Sprint Backlog:
Sprint Backlog is divided into two parts Product assigned features to sprint and Sprint
planning meeting.
Extreme Programming (XP)

Extreme programming (XP) is one of the most important software development framework of
Agile models. It is used to improve software quality and responsive to customer
requirements. The extreme programming model recommends taking the best practices that
have worked well in the past in program development projects to extreme levels.

Good practices needs to practiced extreme programming: Some of the good practices that
have been recognized in the extreme programming model and suggested to maximize their
use are given below:
 Code Review: Code review detects and corrects errors efficiently. It suggests
pair programming as coding and reviewing of written code carried out by a pair of
programmers who switch their works between them every hour.
 Testing: Testing code helps to remove errors and improves its reliability. XP suggests
test-driven development (TDD) to continually write and execute test cases. In the TDD
approach test cases are written even before any code is written.
 Incremental development: Incremental development is very good because customer
feedback is gained and based on this development team come up with new increments
every few days after each iteration.
 Simplicity: Simplicity makes it easier to develop good quality code as well as to test
and debug it.
 Design: Good quality design is important to develop a good quality software. So,
everybody should design daily.
 Integration testing: It helps to identify bugs at the interfaces of different
functionalities. Extreme programming suggests that the developers should achieve
continuous integration by building and performing integration testing several times a
day.

Scrum Roles

Scrum has three roles: Product Owner, Scrum Master and Team
 Product Owner -The Product Owner should be a person with vision, authority, and
availability. The Product Owner is responsible for continuously communicating
the
vision and priorities to the development team. At the same time, Product Owners must
be available to answer questions from the team.

 Scrum Master - The Scrum Master acts as a facilitator for the Product Owner and the
team. The Scrum Master does not manage the team. The Scrum Master works to
remove any impediments that are obstructing the team from achieving its sprint goals.
This helps the team remain creative and productive while making sure its successes
are visible to the Product Owner.

 Team - According to Scrum's founder, "the team is utterly self managing." The
development team is responsible for self organizing to complete work. A Scrum
development team contains about seven fully dedicated members (officially 3-9),
ideally in one team room protected from outside distractions. For software projects, a
typical team includes a mix of software engineers, architects, programmers, analysts,
QA experts, testers, and UI designers. Each sprint, the team is responsible for
determining how it will accomplish the work to be completed. The team has
autonomy and responsibility to meet the goals of the sprint

 A key principle of scrum is its recognition that fundamentally empirical challenges


cannot be addressed successfully in a traditional "process control" manner. As such,
scrum adopts an empirical approach - accepting that the problem cannot be fully
understood or defined, focusing instead on maximizing the team's ability to respond in
an agile manner to emerging challenges.

Basic principles of Extreme programming

XP is based on the frequent iteration through which the developers implement User Stories.
User stories are simple and informal statements of the customer about the functionalities
needed. A User story is a conventional description by the user about a feature of the required
system. It does not mention finer details such as the different scenarios that can occur. On the
basis of User stories, the project team proposes Metaphors. Metaphors are a common vision
of how the system would work. The development team may decide to build a Spike for some
feature. A Spike is a very simple program that is constructed to explore the suitability of a
solution being proposed. It can be considered similar to a prototype. Some of the basic
activities that are followed during software development by using XP model are given below:
 Coding: The concept of coding which is used in XP model is slightly different from
traditional coding. Here, coding activity includes drawing diagrams (modeling) that will
be transformed into code, scripting a web-based system and choosing among several
alternative solutions.
 Testing: XP model gives high importance on testing and considers it be the primary
factor to develop a fault-free software.
 Listening: The developers needs to carefully listen to the customers if they have to
develop a good quality software. Sometimes programmers may not have the depth
knowledge of the system to be developed. So, it is desirable for the programmers to
understand properly the functionality of the system and they have to listen to the
customers.
 Designing: Without a proper design, a system implementation becomes too complex
and very difficult to understand the solution, thus it makes maintenance expensive. A
good design results elimination of complex dependencies within a system. So, effective
use of suitable design is emphasized.
 Feedback: One of the most important aspects of the XP model is to gain feedback to
understand the exact customer needs. Frequent contact with the customer makes the
development effective.
 Simplicity: The main principle of the XP model is to develop a simple system that
will work efficiently in present time, rather than trying to build something that would
take time and it may never be used. It focuses on some specific features that are
immediately needed, rather than engaging time and effort on speculations of future
requirements.

Applications of Extreme Programming (XP): Some of the projects that are suitable to
develop using XP model are given below:
 Small projects: XP model is very useful in small projects consisting of small
teams as face to face meeting is easier to achieve.
 Projects involving new technology or Research projects: This type of projects
face changing of requirements rapidly and technical problems. So XP model is used to
complete this type of projects.

Lifecycle

We have seen so far that React web apps are actually a collection of independent
components which run according to the interactions made with them. Every React
Component has a lifecycle of its own, lifecycle of a component can be defined as the series
of methods that are invoked in different stages of the component’s existence. The definition
is pretty straightforward but what do we mean by different stages? A React Component can
go through four stages of its life as follows.

 Initialization: This is the stage where the component is constructed with the given
Props and default state. This is done in the constructor of a Component Class.
 Mounting: Mounting is the stage of rendering the JSX returned by the render method
itself.
 Updating: Updating is the stage when the state of a component is updated and the
application is repainted.
 Unmounting: As the name suggests Unmounting is the final step of the component
lifecycle where the component is removed from the page.

React provides the developers a set of predefined functions that if present is invoked around
specific events in the lifetime of the component. Developers are supposed to override the
functions with desired logic to execute accordingly. We have illustrated the gist in the
following diagram.
Figure 2

Lean Development (LD) Methodology

Lean Development focuses on the creation of change-tolerant software. This methodology


embodies the notion of dynamic stability which can be thought of as similar to how Scrum
embraces controlled chaos. Bob Charette, the originator, writes that the measurable goal of
LD is to build software with one-third the human effort, one-third the development hours
and one-third the investment as compared to what SEI (Software Engineering Institute)
CMM Level 3 organization would achieve.

Principles are:

• Satisfying the customer is the highest priority.

• Always provide the best value for the money.

• Success depends on active customer participation.

• Every LD project is a team effort.


• Everything is changeable.

• Domain, not point, solutions.

• Complete, don't construct.

• An 80 percent solution today instead of 100 percent solution tomorrow

• Minimalism is essential

• . Needs determine technology

• Product growth is feature growth, not to growth

• Never push beyond its limit

Scaled Agile Frameworks (SAFe)

The Scaled Agile Framework (SAF) helps businesses address the significant challenges of
developing and delivering enterprise-class software and systems in the shortest sustainable
lead time SAFE synchronizes alignment, collaboration, and delivery for multiple Agile
teams. Scalable and configurable, SAFe allow each organization to adapt it to its own
business needs. It supports smaller scale solutions employing 50 - 125 practitioners, as well
as complex systems that require thousands of people.

SAFE principles are:


• Take an economic view

• Apply systems thinking

• Assume variability: Preserve options

• Build incrementally with fast, integrated learning cycles


• Base milestones on objective evaluation of working systems

• Visualize and limit reduce batch sizes and manage queue lengths

• Apply cadence, synchronize with cross-domain planning

• Unlock the intrinsic motivation of knowledge workers

• Decentralize decision making

Disciplined Agile Delivery (DAD)

Disciplined Agile Delivery (DAD) is a people first, learning oriented hybrid agile approach
to IT solution delivery. It has risk value delivery lifecycle is goal driven, is enterprise aware,
and is scalable
Approach
Supporting a robust set of roles
 . Being a hybrid. DAD a hybrid approach which extent Scrum with proven strategies
from Agile Modeling (AMP Extreme Programming (XP), Unified Process (UP),
Kanban Lean other method Software Development, Outside In Development (Q)
and several
 Being open Disciplined Agile (DA) a a nan proprietary, freely available framework

 Supporting several delivery Lifecyle’s DAD extend the construction focused life
cycle of Serum to address the end to end delivery recycle from project initiation all
the way to delivering the solution to its end users
 Addressing all aspects of solution delivery DAD includes advice about the techie
practices such as those from extreme Programming (XP) as well as the modeling
documentation, and governance strategies missing from both Scrum and XP.

 Providing choices, not prescription. Instead of the prescriptive approach seen in


other agile methods, including Scrum, the DAD framework takes a goal-driven
approach

Kanban

Kanban uses the stages in the software development lifecycle (SDLC) to represent the
different stages in the manufacturing process. The aim is to control and manage the flow of
features (represented by Kanban card) so that the number of features entering the process
matches those being completed
Kanban is an agile methodology that is not necessarily iterative. Processes Nike Scrum have
short iterations which mimic a project lifecycle of a small scale, having a distinct beginning
and end for each iteration, Kanban allows the software be developed in one large
development cycle. Despite this, Kanban is an example of an agile methodology because it
fulfils all twelve of the principles behind the Agile manifesto, because whilst it is not
iterative, it is incremental

Principles

• Start with what you do now Understand current processes as they are actually
practiced and respect existing roles, responsibilities and job titles

• Agree to pursue improvement through evolutionary change

• Encourage acts of leadership at every level

• Service Delivery Principles These principles


These Principles acknowledge that organizations are a collection of interdependent services,
and to place the focus on the work, not the people doing the work

Practices
The following practices are activities essential to manage a Kanban system.
Visualize - Kanban systems use mechanism such as a Kanban board to visualize work and
the process it goes through
limit work in progress When you establishments to the amount of work you have in
progress in system and use those limits to guide when to start new items you can smooth out
the flow of work and reduce lead times, Improve quality, and deliver more frequently

Manage flow. The flow of work in a service should maximize value delivery, minimize lead
times and be as predictable as possible. Teams use empirical control through transparency,
inspection and adaption in order to balance these potentially conflicting goals
Make policies explicit Explicit policies help explain a process beyond just the time of
different stages in the workflow. Policies should be sparse, simple, well-defined, visible,
always applied, and readily changeable by the people working on the service

Implement feedback loops- Feedback loops are an essential element in any system looking
to provide evolutionary change The Feedback loops used in Kanban are described in the
Lifecycle section

Improve collaboratively, evolve experimentally - Kanban starts with the process as it


currently exists and applies continuous and incremental improvement instead of trying to
reach a predefined finished goal

Strengths weaknesses
Scrum Effective and efficient Employees lack knowledge
communication among team of Scrum lacks engineering
members One of the best practices Simple to
management practices understand but difficult to
Continuous feedback from master Suitable for small
the customers Produces projects
quality product with
customer satisfaction
Measuring the growth and
productivity of the team and
individual is easier with
daily Scrum meetings and
sprint meetings
Extreme programming Quality product with Lack of documentation Poor
customer satisfaction Can architectural structure Less
easily handle unclear and focus on design Pair
changing requirements programming requires
Pair programming and mutual understanding and
continuous integration common skillset between
improves productivity two programmers
Works well with simple
and small scale projects

Lean Eliminate waste Maximize Does not cover technical


value of the product and managerial issues Lack
of details about its
implementation
Kanban Helps in managing Lack of details about its
production of a product implementation
Increase in communication
between the team and stalk
holders
Test driven development Positive impact on external Sometimes very time
quality of the system consuming due to repeated
Writes test cases and test test failures Specific
code first using the knowledge and skill set
requirements Writes Lean required
code, removes duplicates
Crystal Effective communication Only two type of crystals
among team members are defined in details
Projects can be clearly (Crystal clear and Crystal
classified using Crystal orange)
methods
Feature driven development Adaptive and incremental in Lacks system validation
nature Emphasis more on practices Needs special
quality training to write
requirement/user stories
Less responsiveness to
change Need of
experienced and trained
staff Less appropriate for
small scale projects

Waterfall Simple to understand and Working software is


use Each phase is clearly delivered very late and
defined and well understood hence it has lots of risks
Detailed documentation associated to it is difficult
to accommodate changes
using waterfall Measuring
progress is difficult Not
suitable for projects with
changing requirements
Rational Unified Process Produces quality product Needs expert team members
(RUP) Less time for integration trained in RUP Complex
Less development time development process
Development process is
difficult to manage

Spiral Requirements change is Not suitable for small


manageable Frequent projects Process is difficult
delivered of working to manage Can continue
software Lower risk of indefinitely
failure
Assessment Criteria (Students are not authorized to modify or write anything on below)

Outcomes/Criteria Page Feedback


P1Explore a business-related problem
and produce a well-defined problem
definition statement supported by a set
of user and System requirements.

P2 Determine any areas of risk related to


the successful completion of your
application.

M1 Analyze a business-related problem


using appropriate methods and produce a
well-structured Software Design Document
that defines a proposed solution. Include
relevant details on requirements, system
analysis, system design. (propose a suitable
language)

P3 Research the use of software


development tools and techniques and
identify any suitable tool or technique that
you may select for the development of this
application.

M2 Compare the differences between


various software development tools and
techniques researched. Justify your
preferred selection and preferred software
development methodology.

D1 Justify the tools and techniques chosen


to realize a custom-built website. Justify
your preferred selection of tools and
techniques in deducing an appropriate
solution to a business-related problem.
P4 Create a
formal
presentation that effectively reviews your
business application, problem definition
statement, proposed solution and the
development strategy. Use this presentation
as a part of a peer-review and document
any feedback given.

M3 Develop a functional business


application based on a specific Software
Design Document with supportive
evidence for using the preferred tools,
techniques and methodologies.

D2 Evaluate any new insights, ideas or


potential improvements to your system and
justify the reasons for including/not
including them as a part of this business
application.

M4 Review the performance of your


business application against the
Problem Definition Statement and
initial requirements.
D3 Critically evaluate the strengths and
weaknesses of your business application
and justify opportunities for improvement
and further development.

Strengths: Weaknesses:
Future Improvements & Assessor Comment:

Assessor: Signature:
Date: / /

Internal Verifier’s Comments:

Internal Verifier: Signature:


Date: / /

You might also like