Professional Documents
Culture Documents
A paradigm is the model of a process. It defines the flow of activities that occur as the process
progresses from start to end. It is a category of entities that share a common characteristic.
In the aspect of software engineering, software paradigms refer to the methods and steps, which
are taken while designing the software. There are many methods proposed and are in work today, but we
need to see where in the software engineering these paradigms stand. These can be combined into
various categories, though each of them is contained in one another:
o Requirement gathering – This step onwards the software development team works to
carry on the project. The team holds discussions with various stakeholders from problem
domain and tries to bring out as much information as possible on their requirements.
o Software design – The software design paradigm is a subset of software development
paradigm.
o Programming – The programming paradigm is also a subset of software development
paradigm
2. Software Design Paradigm
This paradigm is a part of software development paradigm and includes
o Design – After gathering the requirements needed, the developer will start designing the
software product. In comes in two forms; the logical design and the physical design.
o Maintenance – The software is maintained timely by updating the code according to the
changes taking place in user end environment or technology.
o Programming – The programming paradigm is a subset of software design paradigm.
3. Programming Paradigm
This paradigm is related closely to programming aspect of software development. This
includes
o Coding – The implementation of software design starts in terms of writing program code in
the suitable programming language and developing error-free executable programs efficiently.
o Testing – Software testing is done while coding by the developers and thorough testing is
conducted by testing experts at various levels of code such as module testing, program testing,
product testing, in-house testing, and testing the product at user’s end.
o Integration – Software may need to be integrated with the libraries, databases, and other
program(s).
Need of Software Engineering
The need of software engineering arises because of higher rate of change in user
requirements and environment on which the software is working.
o Large software - It is easier to build a wall than to a house or building, likewise, as the size of
software become large engineering has to step to give it a scientific process.
o Scalability- If the software process were not based on scientific and engineering concepts, it
would be easier to re-create new software than to scale an existing one.
o Cost- As hardware industry has shown its skills and huge manufacturing has lower down the price
of computer and electronic hardware. But the cost of software remains high if proper process is not
adapted.
o Dynamic Nature- The always growing and adapting nature of software hugely depends upon the
environment in which user works. If the nature of software is always changing, new enhancements
need to be done in the existing one. This is where software engineering plays a good role.
o Quality Management- Better process of software development provides better and quality
software product.
o
Software Engineering Systems Analysis and Design Methodologies
System Design -The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying
hardware and system requirements and helps in defining the overall system
architecture.
Implementation or Coding - With inputs from the system design, the system is first
developed in small programs called units, which are integrated in the next phase. Each
unit is developed and tested for its functionality, which is referred to as Unit Testing.
Integration and Testi4ng - All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
Deployment of system - Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
Maintenance - There are some issues which come up in the client environment. To fix
those issues, patches are released. Also, to enhance the product some better versions
are released. Maintenance is done to deliver these changes in the customer
environment.
The advantages of waterfall development are that it allows for departmentalization and
control. A schedule can be set with deadlines for each stage of development and a product can
proceed through the development process model phases one by one.
The disadvantage of waterfall development is that it does not allow much reflection or
revision. Once an application is in the testing stage, it is very difficult to go back and change
something that was not well-documented or thought upon in the concept stage.
The term “fourth generation techniques” (4GT) encompasses a broad array of software tools that
have one thing in common. Each enables the software engineer to specify some characteristic of
software at a high level, the tool then automatically generates source code based on the
developer’s specification.
The 4GT paradigm for software engineering focuses on the ability to specify software
using specialized language forms or a graphic notation that describes the problem to be solved in
terms that the customer can understand.
Design Strategy - The gathered data is translated into set of presentation that
describes data structures, architectures, algorithmic procedures and interphase
characteristic.
Implementation using 4GL - This is the third 4GT wherein the design presentation is
translated to an artificial language that result in instruction that could be
executed by the computer. The gathered requirements and design are put
into a machine executable form. The developers would implement using 4GL which
enables them to represent desired output in a manner that results to automatic
generation of code to generate the output. Data structure with relevant information
must exist and be ready accessible by the 4GL.
Planning - Requirements are gathered during the planning phase. Requirements like
‘BRS’ that is ‘Business Requirement Specifications’ and ‘SRS’ that is ‘System
Requirement specifications’.
Engineering -In this phase software is developed, along with testing at the end of the
phase. Hence in this phase the development and testing is done.
Customer Evaluation - This phase allows the customer to evaluate the output of the
project to date before the project continues to the next spiral.
The advantages of spiral method are when costs and risk evaluation is important, it is for
medium to high-risk projects, it is for Long-term project commitment unwise because of potential
changes to economic priorities, if users are unsure of their needs, if the requirements are complex
and it is significant changes are expected (research and exploration).
The disadvantages of spiral methods are it can be a costly model to use, risk analysis requires
highly specific expertise, its project’s success is highly dependent on the risk analysis phase and it
doesn’t work well for smaller projects.
4. Prototyping Model
The Software Prototyping refers to building software application prototypes which displays
the functionality of the product under development, but may not actually hold the exact logic of the
original software.
Prototyping is used to allow the users evaluate developer proposals and try them out
before implementation. It also helps understand the requirements which are user specific and may
not have been considered by the developer during product design
Requirements Gathering and refinement- A prototyping model begins with
requirements analysis, and the requirements of the system are defined in detail. The
user is interviewed in order to know the requirements of the system.
Quick Design - When requirements are known, a preliminary design or quick design for
the system is created, it is not a detailed design, however, and includes the important
aspects of the system, which gives an idea of the system to the user.
Customer Evaluation Prototype - the proposed system is presented to the user for
consideration as part of the development process.
Refining Prototype - Once the user evaluates the prototype, it is refined according to
the requirements. When the user is satisfied with the developed prototype, a final
system is developed based on the final prototype.
Engineer Product - The final system is thoroughly evaluated and tested followed by
routine maintenance on a continuing basis to prevent large-scale failures and to
minimize downtime.
The advantages of prototyping model are it provides a working model to the user early in
the process, enabling early assessment and increasing user confidence, the developer gains
experience and insight by developing a prototype, thereby resulting in better implementation of
requirements, it Helps in reducing risks associated with the project and There is a great
involvement of users in software development.
The disadvantages of prototyping model are if the user is not satisfied with the developed
prototype, then a new prototype is developed. This process goes on until a perfect prototype
evolves. Thus, this model is time consuming and expensive, if the developer loses focus of the real
purpose of prototype and compromises on the quality of the product and Prototyping can lead to
false expectations. It often creates a situation where the user believes that the development of the
system is finished when it is not.
Rapid application development (RAD) is both a general term used to refer to alternatives to the
conventional waterfall model of software development as well as the name for James Martin's
approach to rapid development. In general, RAD approaches to software development put less
emphasis on planning and more emphasis on process. In contrast to the waterfall model, which
calls for rigorously defined specification to be established prior to entering the development phase,
RAD approaches emphasize adaptability and the necessity of adjusting requirements in response
to knowledge gained as the project progresses. Prototypes are often used in addition to or
sometimes even in place of design specifications.
The techniques used by RAD models push developers to generate as much high‐quality
code as possible as quickly as possible. One of the driving forces behind RAD is the idea that
things always change. As Heraclitus said, “The only thing that is constant is change.”. RAD
methods take iterative ideas to the extreme. Instead of using iterations lasting a year or two, their
iterations last a month, a week, or even less. Some RAD techniques also apply iteration to
everything, not just to programming. They apply iteration to requirement gathering, requirement
validation, and design.
Small teams (approximately one‐half a dozen people or fewer). That leads to projects of
limited scope. (Six people probably can’t write a million‐line application in a year.)
Requirement gathering through focus groups, workshops, facilitated meetings, prototyping,
and brainstorming.
Requirement validation through iterated prototypes, use cases, and constant customer testing
of designs.
Repeated customer testing of designs as they evolve.
Constant integration and testing of new code into the application.
Informal reviews and communication among team members.
Short iterations lasting between a few months and as little as a week.
Deferring complicated features for later releases. Doing just enough work to get the job done.
Timeboxing, which is RADspeak for setting a tight delivery schedule for producing something,
usually the next iteration of the application. The scope can change (for example, you might
defer a feature to the next iteration), but the completion date for the iteration cannot.
James Martin’s original RAD model uses the following four phases:
User design - The users and team members work together to convert the requirements
into a workable design. They use techniques such as focus groups, workshops, prototyping, and
brainstorming to come up with a workable design. The RAD groups or subgroups typically use a
combination of Joint Application Development (JAD) techniques and CASE tools to translate user
needs into working models. User Design is a continuous interactive process that allows users to
understand, modify, and eventually approve a working model of the system that meets their needs.
Construction - The developers go to work building the application. The users continue to
review the pieces of the application as the developers build them to make corrections and
suggestions for improvements.
Cutover - Resembles the final tasks in the SDLC implementation phase, including data
conversion, testing, changeover to the new system, and user training. The developers deliver the
finished application to the users. (You can use the usual cutover strategies such as staged
delivery, gradual cutover, or incremental deployment.)
The user design and construction phases overlap with the users constantly providing
adjustments to the developers in a sort of continuous feedback loop. The project iterates the user
design and construction phases as needed. When the application has met all the requirements, it is
delivered to the users.
JAD allows for a faster development process and minimizes errors at the same time. JAD
also improves the quality of the final product by focusing on the up-front portion of the development
lifecycle, thus reducing the likelihood of errors that are expensive to correct later on.
In general, the following steps are required in order to have an effective JAD:
Identify project objectives and limitations
Identify critical success factors
Define project deliverables
Define the schedule of JAD workshop activities
Select the participants
Prepare the workshop material
Organize workshop activities and exercises
Prepare, inform, educate the workshop participants
Coordinate workshop logistics. As well as having the right JAD participants (i.e. decision
makers and knowledge holders) it is important to nominate a facilitator for the JAD. The
role of the facilitator is to keep the JAD on target for the JADs objectives. The facilitator
should be independent that is not a designer or a systems requirements provider. Often a
JAD can be bogged down with arguments about alternatives etc. and a strong independent
facilitator is required to keep the session moving towards its goals.