Software Engineering Notes by softsys

Search   Chat 


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.