Wednesday, March 23, 2016

Software Engineering



A Component is a tested, special purpose software unit which is reusable, adaptable, portable and interoperable. In software terms, components are also called componentware (CM).
Framework is the combination of components that can be plugged into an application.

A Software interface is the program that makes it possible for components to interact and interoperate with each other. Eg. JAVA BEANS
( DCOM is abbreviated as Distributed Component Object Model. )
Software Entities are the processes, requirements, products and resources of a software engineering landscape.

An Engineering approach to software engineering is to produce system on time and within budget.
Software Development problems are :
1)      Conceptual problem.
2)      Representation problem.

Vanilla Framework helps to bridge gap between a high level solution, to a problem and its implementation in software.
Software Requirement Specification (SRS) : This is a blueprint for the complete design of a software product.
Quality Factors : correctness, reliability, maintainability, testability, efficiency, integrity, usability, portability, interoperability, reusability.

Reusability Criterion :
Self Descriptive : this is with natural language.
Modularity : means change in one component has minimal impact on other.
Portability : means transfer of software from one system to other.
Platform Independence means it can execute on any type of platform.

Incremental Approach to software development has been formulated by watts Humphrey.
Clean Room Engineering is used to control the quality of incrementally developed software product and to certify the fitness of software products for usage at time of delivery.

CAPABILITY MATURITY MODEL (CMM) :
CMM describes software process management maturity relative to five levels
ie., Initial, Repeatable, Defined, Managed, Optimizing
In the Initial level there is a lack of planning and the development of a clear-cut guide that software development teams can follow. Few details of a software process have been defined at this level. Good results are considered miraculous.

KPA ---- Key Process Areas

In the Second level ie., the CMM Repeatable Process is characterized by a commitment to discipline in carrying out a software development project. And is achieved by : Requirements management, software project planning, software project tracking and oversight, software subcontract management, software quality assurance, software configuration management.
In the Third level ie., the CMM Defined Process is to guide the structuring and evaluation of a software project. And is achieved by : Organisational process focus and definition, training program, software product engineering, intergroup coordination, peer reviews.
In the Fourth level ie., the CMM Managed Process is for data gathering and analysis and managing software quality. And is achieved by : Quantitative process management, Software quality management.
In the Fifth level ie., the CMM Optimizing Process is associated with defect prevention, automation of the software process wherever possible, and methods for improving software quality and team productivity and shortening development time.

Validation occurs whenever a system component is evaluated to ensure that it satisfies system requirements.
Verification consists in checking whether the product of a particular phase satisfies the conditions imposed at that phase.

Software Evolution : This is characterized by genotypes and phenotypes.
A genotype provides information about a member of a population.
A phenotype characterizes the behavior of a population member.
Evolution pattern = where || why || what || when || how || by-whom.

Software Life-Cycle : This is the period of time beginning with a concept for a software product and ending whenever the software is no longer available for use.
            The Software life-cycle typically includes the following: Requirements, Analysis, Design, construction, testing (Validation), installation, operation, maintenance, and retirement.
Several models (spiral, waterfall etc.) have been proposed to describe this process.

Software Life-Cycle Model represents the activities, their inputs and outputs and their interactions during the life-cycle.
Software Life-Cycle Models :


What is Software Engineering ?
            The application of a systematic, disciplined, quantifiable approach to development, operation, and maintenance of software; that is, the application of engineering to software.
The specification, development, management, and evolution of software systems.
A discipline whose aim is the production of quality software, delivered on time, within budget, and satisfying users' needs.
Designing and developing high-quality software. Application of computer science techniques to a variety of problems.

What is a CASE tool ?
CASE stands for Computer Aided Software Engineering; it can be used to mean any computer-based tool for software planning, development, and evolution.
What is a Function Point ?
Function points and feature points are methods of estimating the "amount of functionality" required for a program, and are thus used to estimate project completion time. The basic idea involves counting inputs, outputs, and other features of a description of functionality.


What is a Spiral Model ?
Basically, the idea is evolutionary development, using the waterfall model for each step; it's intended to help manage risks. Don't define in detail the entire system at first.
The developers should only define the highest priority features. Define and implement those, then get feedback from users/customers (such feedback distinguishes "evolutionary" from "incremental" development).
With this knowledge, they should then go back to define and implement more features in smaller chunks.

What is a Spec Mark?
SPEC mark refers to the results of the first suite

What is Hungarian Notation?
A naming convention for C code.

What is SEI Maturity Model?
            First step in improving the existing situation is to get management buy-in and management action to clean up the software management processes.
Second step (Integration) is to get everyone working together as a team.
Third step (Measurements) is to establish objective ways of understanding status and predict where things are going in your process.
Continuous improvement: Understand that this is building a foundation for continually getting better.

What is a BUG?
          A Fault, Failure, Mistake.

What is a Clean Room?
            'Cleanroom' is a software process based on mathematical verification of components and statistical system-level testing.

What is Personal Software Process?
            A discipline for monitoring, testing, and improving your own Software Engineering works.

What are the two major types of testing?
The following are the two major groups of testing
                        i) Black Box testing                ii) Glass box testing.

Black Box testing: Functional or black box testing is an approach to testing where the tests are dirived from the program or component specification.The system is a black box whose behavior can only be determined by studying its inputs and the related outputs.another name for this is the functional testing because the tester is only concentrated with the functionality and not the implementation of the software.
Black Box testing focusses  on the functional requirements of the software i.e, Black Box testing enables the software engineer to derive sets of input conditions that will fully exercise all functiol requirements for a program.
            The challenge in the black box testing is to cause failures in the module by designing test causes that,with an appropriate input and controlled externally  conditions,can produce an output that will clearly indicate a module failure

Which Test Cases to Automate?
Tests that need to be run for every build of the application.
Tests that use multiple data values for the same actions (data driven tests).
Tests that require detailed information from application internals.

If Performed Manual Testing:
            Time Consuming, Low Reliability, Human Resources, Inconsistent.

If Performed Automated Testing:
            Speed, Repeatability, Reusability, Reliability, Programming Capabilities.

What are CheckPoints ?
  • Checkpoints enable you to compare the current behavior of your application to its expected behavior.
  • GUI checkpoints check information about GUI objects. For example, you can check that a button is enabled or see which item is selected in a list.
  • Database checkpoints  check the data content in a database.
  • Text checkpoints   read text in GUI objects and in bitmaps, and enable you to check their contents.
  • Bitmap checkpoints  compare a "snapshot" of a window or an area in your application to an image captured in an earlier version.


Software Production Process :-
The process of building ,delivering  and evolving the software system  from the inception of an idea all the way to the delivery and final retirement of the system is called a software production process.
The software production process may follow different methods of software development .
  • Water Fall Model
  • Prototyping Process
  • Rad Model
  • Incremental Model
  • Spiral Model





Conception:-

SDLC starts with the conception phase.This phase is triggered by a competitor ,a problem or an opportunity 
The problem perceived
The goal to be achieved
The benefits from the solution
The scope of the project

 

Initiation:-

The Software engineers work with users to carry out a macro level study of the users requirements.The software engineers define the various alternatives possible and the cost-benefit justification  of these alternatives.

 

Analysis :-

The software Engineers carry our a detailed study of the users requirement .They then arrive at the proposed system to be built .The model of this system is to be used to freeze all requirements before the next phase begins.

 

Design :-

In this phase the functional specifications are used for translating the model into a design of the desired system  like data flow diagrams ,decisions tables,databases  etc.

 

Construction:-

This phases produces the actual code that will be delivered to the customer as the running system .Individual modules developed in  this phase are tested before being delivered to the next phase

 

Testing :-

All the modules that have been developed before are integrated or put together in this phase, and tested as a complete system. A system is tested for online response ,volume of transactions, stress, recovery from failure, and usability.

 

Implementation:-

Implementation means converting a new system design into operation .This involves creating computer compatible files, training the operating staff, installing hardware and any other requirements.



Prototyping Process :-
The basic idea of prototyping model is instead of fixing requirements before design and coding can begin ,a prototype is built  to understand the requirements .the prototype is built with the know requirements  by this the user can be know how the system works 


Rad Model :-
Rapid Application development is high speed adaption of the linear sequential model in which rapid development is achieved by using component based construction ,business model and data modeling etc.

Incremental Model : -
Incremental model  delivers software in small but usable pieces called increments .In general each increment builds on those that have already been delivered. In this analysis, design, coding and testing are done for every model.

How can u measure the quality of your project
Some sdlc models
Explain Waterfall model and say what is the output in each phase?
Types of testing

Levels of testing

 

Unit testing :-

Generally the code which is generated  are compiled. The unit test is white box oriented and the steps can be conducted in parallel for multiple components.
1.The module Interface  is tested to ensure that information properly flows into and out of the program unit under test.
2.The local data structure is examined to ensure that data stored temporarily maintains its intergrity during all steps in an algorithm’s execution.
3.Boundary conditions are tested to ensure that the module operates properly at boundaries established to limit and restrict processing
4.All the statements are executed at least once  and error handling paths are tested

Integration testing:-

Integration testing is a systematic technique for constructing the program structure .In integration test you have like
Top down :-
Top down integration testing with the main routine and one or two immediate subordinate routines in the system structure it is good to have modules are integrated as they are developed, top level interfaces are tested first
Bottom up :-
Bottom up  integration testing is the traditional strategy used to integrate the components of a software system into a functioning whole
Regressive testing :-
Retesting the already test modules and adding new modules .Regressive testing is an important strategy for reducing  side effects. 

System Level Testing

Performance testing:- Performance testing is designed  to test the run time performance of software or hardware 
Recovery testing :- is a system test forces the software to fail in a variety of ways and verifies that recovery is properly performed .if recovery is automatic, re initialization , check pointing ,data recovery and restart are evaluated for correctness.
Security Testing :- Security testing attempts to verify that protection mechanisms built into a system will in fact ,protect it from improper penetration.
Acceptance testing:-
when customer software is built for one customer ,a series of acceptance tests are conducted to enable the customer to validate all requirements.conducted by the end user rather than software engineers, an acceptance test can range from an informal test drive to a planned and systematically executed series of tests.
if software is developed as a product to be used by many customers ,it is impractical to perform acceptance tests with each one.Most software product builders use a process called alpha and beta testing to uncover errors that only the end user seems able to find


Test Case Design
A product can be tested in one of two ways
Knowing the specified function that a product has been designed to perform, tests can be conducted that demonstrate each function is fully operational. This is know as black box testing.
Knowing the internal workings of a product , tests can be conducted to ensure that the internal operation of the product performs according to specification and all internal components have been exercised. This is know as white box testing 

White box testing:-

Using white box  testing methods,the software engineer can derive test cases that do the following:-
Guarantee that all independent paths with in a module have been executive once at least.
Exercise all logical decisions on their true and false sides
Exercise all loops ,data flow,conditional testing  are working          

Black box testing:-

Black box testing methods focus on the functional requirements of the software. It enables the software engineer to derive sets of input conditions that will fully exercise all functional requirements for a program .Black box testing is not an alternative to white box testing techniques .Rather it is a complementary approach that is likely to uncover a different class of errors than white box methods.  

3 comments: