Step 8 – Grow Your Organization’sPower by Creating New Technologies
If you want to create a competitive advantage, you need togo above and beyond your competition. This often involves softwareyou or a software development company creates specifically foryour organization.
A process for developing custom software is discussed inthis chapter. It is important to understand this process sinceeven if you are not building the software yourself, you want toknow enough to effectively manage others within or outside of yourorganization tasked with building the new custom software for yourorganization.
We start with discussing the most common framework – theSoftware Development Life Cycle-and then briefly examine somepopular variations of this framework.
What is the Software Development LifeCycle (SDLC)?
A is a frameworkcomposed of several clearly defined phases used by systemsdevelopers, programmers, and others to plan, design, build, test,and deliver information systems.
SDLC aims to produce high-quality software based on clientrequirements that meet or exceed their expectations. The softwaredevelopment moves through each clearly defined phase withinscheduled time frames and cost estimates. Each phase of the SDLCuses the results of the previous one.
What Are the Steps of SDLC?
The steps of the SDLC are labeled differently by differentpeople and organizations. They are:
Planning (some call it Initiation)Requirements Analysis (some call it Analysis, others callit Define Requirements)Design (and Prototyping)Development (some call it Implementation)Testing (done in parallel with Development)Deployment
Operation and Maintenance
The , also known by some as the should define the scope and purpose of the software. It
also includes defining costs, creating a timetable, and definingthe project team and leadership.
Planning can also include feedback from stakeholders.Stakeholders may include employees, managers, clients, suppliers,and anyone else affected related to or affected by the software.
Requirements Analysis Phase
The , also known as the or the , determines what
the application is supposed to do and its requirements.Requirements should be defined and documented. Requirements canbe derived from stakeholder (employees, clients, suppliers, etc.)interviews, competition research, experimentation, review oforganizational documentation including procedures, and more.
There are different types of requirements that need to bespecified when developing software. These include:
Architectural requirementsBusiness requirements – include high-level goals,objectives of an organizationUser (stakeholder) requirements – include the needs ofstakeholders that will be affected by the system. Thisincludes employees and management but can also includecontractors, vendors, clients, and othersFunctional requirements – include detailed statements ofcapabilities, behavior, and information that the solutionwill need. Examples include formatting text, calculating anumberQuality-of-service (non-functional) requirements -reliability, testability, maintainability, availability.Deployment and DIK migration requirements – discuss whatwill be needed to move from the current software to thenew one, including DIK migration, training, and more.Regulatory requirements – Requirements defined by laws(Federal, State, Municipal, or Regional)Contract requirements – include terms and conditions
Organizational policy requirements – reflect department ororganization-level policies.
The , which may or may not include prototyping,models how a software application will work. Some aspects of thedesign include:
– Defines the ways customersinteract with the software and how the software respondsto input. Also known as Graphical User Interface Design,or GUI Design.
– define the way the DIK will bestored. If the database is relational, this includes thetables, fields within tables (columns), and more.
– define the detailed processesto be automated. Draw business process diagrams
– Specifies programming language, overalldesign, and use of any templates
– Defines how to secure the software and DIK
Prototyping can be a part of the design phase. A prototypecan demonstrate some aspects of the software’s look and feel. This“hands-on” design is presented to stakeholders, and feedback isused to modify the other design aspects if needed.
The development phase, also known as the implementationphase, software development phase, systems development phase, isthe actual writing of the program.
A small project might be written by a single developer(also known as a programmer). In contrast, a large project mightbe broken up and worked by multiple developers or teams ofdevelopers.
Documentation is also often created during the developmentphase. This can consist of any of the following:
Guided tour of the software’s basic features that displayon the first launchVideo tutorials for complex tasksWritten user guidesTroubleshooting guidesFAQ’s for users
Testing Phase (Conducted in Parallelwith Development)
It’s critical to test the software before making itavailable to users. There are many types of testing, but assoftware components, modules, pages are being developed, theyshould be tested. This ensures that work is done according toplans and minimizes the chance for unpleasant surprises at theend.
Once the software is built, it should be tested to ensureall the software components work correctly together.
The testing phase helps make sure users get what was agreedupon and reduces the number of bugs encountered. This leads tohigher user satisfaction, increased usage rate, increased chancesof successful deployment and adaption of the software by theorganization.
In the deployment phase, the software is made available tousers, often via the web. Activities include:
Users of the software are trained in the use of thesoftware. DIK from an existing system is copied to the new system.It may be cleaned and re-formatted in the processUser names and passwords are created and provided to usersof the software
Deployment can be complex. Moving an organization’smultiple software applications and databases to a newly-developedERP is one example.
Operation and Maintenance Phase
At this point, the software is deployed and being used bythe organization’s employees. In this , usersdiscover bugs that weren’t found during testing. These errorsneed to be resolved.
In addition to bug fixes, the development of additionalfeatures for the next release of the software can be started. Foreach new release, a new SDLC can be launched.
SDLC Methodologies Explained
There are different variations of SDLC. Various softwaredevelopment methodologies follow the SDLC phases, but the methodvaries between methodologies.
The more popular methodologies include:
They are described in some detail next.
The SDLC is the original method of softwaredevelopment. When a phase completes, the project moves to the nextphase. One advantage of the Waterfall model is each phase can beevaluated for continuity and feasibility before moving on. It’slimited in speed, however, since one phase must finish beforeanother can begin.
It focuses on complete and correct planning to guide largeprojects to successful and predictable results.
The approach produces ongoing release cycles of thesoftware. Each release features small, incremental changes fromthe previous release. At each iteration, the software is tested.The Agile model helps software development teams identify andaddress small issues before they evolve into more significantproblems and engage various stakeholders (such as future softwareusers) to get their feedback throughout the development process.
An example of an Agile methodology is in which asoftware development team works in “sprints”. These sprintslast two to four weeks, during which the team must complete theassigned tasks. Daily Scrum meetings help the team monitorprogress throughout the project. And a “ScrumMaster” isresponsible for keeping the team focused on its goal.
Instead of starting with fully known requirements for thesoftware, the team implements a limited set of softwarerequirements, then tests, evaluates, and defines additionalrequirements. A new version of the software is produced with eachiteration until the software is ready.
RUP is an example of an iterative methodology. It dividesthe development process into four phases:
, during which the idea for a project isspecified
, during which the project is further defined, during which the project is developed and
completed, during which the product is released.
Each phase of the project involves: