Software engineering is a
layered technology to provide maximum quality. Following things are to be taken
into consideration
1. Process :- It defines framework for a set of key process areas i.e. application
of technical methods, work products, milestones are established, quality is ensured
and change is properly managed.
2. Methods :- It provide the technical "How to's" for building software.
It includes requirement analysis, design, program construction, testing and maintenance.
3. Tools :- It provides automated or semi-automated support for the process and
the methods.
Four different types of
changes encountered during the maintenance phase.
Corrective :- It changes the software to correct defects
Adaptive :- It results in modification to the software to accommodate changes
to its external environment.
Enhancement (Perfective) :- It extends the software beyond its original functional
requirements
Preventive :- It makes changes to computer programs so that they can more easily
corrected, adapted and enhanced.
Software Development Approaches
Linear sequential Model
- Classic life cycle - Waterfall model
The linear sequential model encompasses following activities such as analysis,
design, coding, testing and maintenance. Modeled after the conventional engineering
cycle. (Refer diagram)
1. System / information engineering and modeling :- System engineering and analysis
encompasses requirements gathering at the system level with a small amount of
top-level analysis and design. Information engineering encompasses requirements
gathering at the strategic business level and at the business area level.
2. Software requirement analysis :- Understanding and deciding the information
domain for the software , as well as required function, behavior performance,
and interfacing. Requirements for both the system and the software are documented
and reviewed with the customer.
3. Design :- Software design is actually a multistep process that focuses on
four distinct attributes of a program: data structures, software architecture,
interface representations, and procedural detail. The design process translates
requirements into a representation of the software that can be assessed for
quality before code generation begins.
4. Code generation
5. Testing :- The testing process focuses on the logical internals of the software,
assuring that all statements have been tested, and on the functional externals
- that is, conducting tests to uncover errors and ensure that defined input
will produce the actual results that agree with required results.
6. Maintenance :- Software will undoubtedly undergo change after it is delivered
to the customer. Change will occur because errors have been encountered, because
the software must be adapted to accommodate changes in its external environment
or because the customer requires functional or performance enhancements. Software
maintenance reapplies each of the preceding phases to an existing program rather
that a new one.
Problems with linear approach
1. Real projects rarely follow sequential flow that the model proposes. Although
the linear model can accommodate iteration, it does so indirectly. As a result,
changes can cause confusion as the project team proceeds.
2. It is often difficult for the customer to state all requirements explicitly.
3. The customer must have patience. A working version of the program(s) will
not be available until late in the project time-span.
4. Linear approach leads to blocking states in which some project team members
must wait for the other members of the team to complete dependent tasks.
The Prototyping Model
Often a customer defines a set of general objectives for software but does not
identify detailed input, processing, or output requirements. In other cases,
the developer may be unsure of the efficiency of a algorithm, the adaptability
of an operating system, or the form that human-machine interaction should take.
In these and many other situations, a prototyping paradigm may offer the best
approach. (Refer diagram - Old Pressman)
Types of prototypes
Built-in prototype Throw-away prototype
Steps
Requirement gathering Quick design Built prototype
Customer evaluation Refine prototype Engineer the product
Problems with Prototyping
approach
1. The working model does not cover overall software quality or long-term maintainability.
2. The developer often makes implementation compromises in order to get a prototype
working quickly.
The RAD Model
Rapid application development (RAD) is a linear sequential software development
process model that emphasizes on extremely short development cycle. The RAD
model is a high speed adaptation of the linear sequential model in which rapid
development is achieved by using a component-based construction approach. (Refer
diagram - Pressman - page 36)
RAD Phases
Business Modeling : The information flow among business functions is modeled
in a way that answers the following questions : What information drives the
business process? What information is generated? Who generated it? Where does
the information go? Who processes it?
Data Modeling : The information flow defined as part of the business modeling
phase is refined into a set of data objects that are needed to support the business.
The characteristics of each object ar identified and the relationships between
these objects are defined.
Process modeling : The data objects defined in the data modeling phase are transformed
to achieve the information flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting or retrieving
a data object.
Application generation : RAD assumes the use of fourth generation techniques
rather than creating software using conventional third generation programming
languages, the RAD process works to reuse existing program components or create
reusable components. In all cases, automated tools are used to facilitate construction
of the software.
Testing and turnover : Since the RAD process emphasizes reuse, many of the program
components have already been testing. This reduces over all testing time. However,
new components must be tested and all interfaces must be fully exercised.
Problems with RAD
1. For large, but scalable projects, RAD requires sufficient human resources
to create the right number of RAD teams
2. RAD requires developers and customers who are committed to the rapid-fire
activities necessary to complete a system in a much abbreviated time frame.
3. Not all types of application are appropriate for RAD. If a system can not
be properly modularized, building the components necessary for RAD will be problematic.
The spiral Model
The spiral model, is an evolutionary software process model that couples the
iterative nature of prototyping with the controlled and systematic aspects of
the linear sequential model. In spiral model software is developed in a series
of incremental release might be a paper model or prototype. During later iterations,
increasingly more complete versions of the engineered system are produced. (Refer
diagram - Old Pressman)
Phases
1. Customer communication - tasks required to establish effective communication
between developer and customer.
2. Planning - tasks required to define resources, timelines, and other project
related information
3. Risk analysis - tasks required to assess both technical and management risks
4. Engineering - tasks required to build one or more representations or the
application
5. Construction & release - tasks required to construct, test install and
provide user support (documentation and training)
6. Customer evaluation - tasks required to obtain customer feedback based on
evaluation of the software representation created during the engineering stage
and implemented during the installation stage.
The spiral model has no
significant drawbacks
Additional Input MCM - I
Theory
- What is information
- What is computer
- Advantages & Drawbacks
of computer
- Components of computer
- Hardware & software
- Block diagram of computer
:- Input Process Output Devices
- Types of software
- Generations of computer
- Types of computer :-
Micro Mini Mainframes
- Working of computer (BIOS)
- RAM ROM FAT IRQ ASCII
- Operating systems 4 basic
functions - EIT 6th chapter
- Introduction to DOS,
Unix, windows 95, windows NT
- DOS commands - internal
& external
- Types of information
system - TPS, MIS, DSS, Ex. system
- Computer virus
- Computer crime
- Internet Concepts
- Why Internet
- General Networking concepts
Client server & Pear to pear technology
Basic Internet services (FTP, WWW,E-mail, NEWS, Telnet)
Extended services (Archie, Gopher, Veronica, Online databases)
How does Internet work
Search engines
Lab Demos
- Windows 95
- Microsoft office - 2000.
(Word / Excel / PowerPoint / Access)
Object Oriented Programming
Object oriented programming recognizes that essentially, most activities and
many modules that go into software projects are repetitive in nature. However
due to the lack of adequate tools, we build these up from scratch every time
we execute a project. It is not an exaggeration to assert that almost every
software project reinvents many wheels.
Object oriented programming provides a philosophy and a working framework
that alleviates this problem. It provides a programming paradigm, mechanisms
and tools to make software reusability practically possible.
OOPs Concepts
An object is a combination of code and data that can be treated as a unit.
An object can be a piece of an application like control or a form. The entire
application can be an object.
A class defines each object. A class is usually described as the template
from which an instance i.e. an object can be created. Class is used to define
the characteristics of an object for instance, its size shape color etc. When
we create an object from the class, we have infact created an instance of
the class. e.g. An individual form is an instance of the Forms Class.
Visual basic objects support properties, methods, and events. In vb setting
the attributes of an object are referred to as properties, while the various
procedures that can operate on the object are called its methods. An event
is an action recognized by an object such as click, mousemove, keypress etc.
Properties of object
orientation
Encapsulation : It is the property by virtue of which reusable code hides data
and functionality from client code. Hiding data and functionality form client
code to make client code less complex and eliminating the chances of introducing
the bugs. It treats reusable code as black box with well defined functionality
and interface. Encapsulation encourages modularity, which is component-based
programming.
Polymorphism : Class specific response to events and operations. + operator
doing something when it used with numeric values (Addition operator) and doing
something when used with strings (Concatenation operator)
Inheritance :
Reverse Engineering
The term reverse engineering has its origins in the hardware world. A Company
disassembles a competitive hardware product in an effort to understand its competitor's
design and manufacturing secrets. These secrets could be easily understood if
the competitor's design and manufacturing specifications were obtained. But
these documents are proprietary and are not available.
Reverse engineering for software is quite similar. In most cases however the
program to be reverse engineered is not a competitor's. Rather it is the company's
own work often done many years earlier. The secrets to be understood are obscure
because no specification was ever developed. Therefore reverse engineering of
software is the process of analyzing a program in an effort to create a representation
of the program at a higher level of abstraction than source code. Reverse engineering
is the process of design recovery. Reverse engineering tools extract data, architectural,
and procedural design information from an existing program.
Online / Batch / Real time
processing systems
Keys
System Audit
It means to validate reports and outputs.
Auditing procedure should have following abilities
Trace the transaction with intermediate values.
Keep account of both transaction and results.
Keep constant balance when system involves financial matters.
Sufficient control on inputs.
Keep detailed journal.