Software Engineering :-
       Basics of software engineering routes back to flow-charting where in with symbols
algorithm is constructed.  This construction transformed into statements of programming
languages becomes program also called source code. Program in execution becomes 
software.
      BASIC is the language known to most of us.  Generally the problem to be solved is given in the form of expresions, saky generating Armstrong no., Fibonacci series, Checking for Prime of a given number.  FORTRAN is used for complex expressions like solving Gaussian Equations which are very popular in the theory of white-noise in Communication Engineering.  This expressions can also be called 'Systems of Equations' ensuring completeness in the requirement.  Systems of equation can be linear or non-linear.   Earlier DOS(DISK OPERATING SYSTEM) was packed BASIC language.  In which 'music notes' can be composed through programming.  The class of software which are application oriented are called 'PACKAGES'.  'FOXPRO' is one of the known database package which came from DBase.  Technology in those days were this.  File servers from NOVELL netware was used in the  LAN.  'Security' the concern for software was ensured in this system by individual login in the file server. Cracking of the system was treated punishable.
   Data oriented programming starts with COBOL.  'Rewrite' like 'UPDATE' in SQL and the column centric programming was the features of the languages.  DBase users and COBOL users solving the problem for Hospital Management differs.  DBase is good in database withouit rich set of procedural constructs and COBOL is good in programming without database theories(Relational
Algebra) Few notable applications are Tamil-language fonts, Calculator, Modem-Programming, Fractals, Parallel Programming i.e., For-loop implementation in FORTRAN, Web-Programming (Hyperlinks), 3D Studio Morphing (team-work) with technology background demonstrated stage performance.  Automation of students registration, middleware programming , Time-table automation.  Mutual trust in software discipline is required to ensure optimum solution. Here the optimum solution is best but simple.    Software consists of two categories (a) application programming (b) systems programming. Application programming are designing a good graphics to easily usable (Win GUI).  Systems programming are writing software for emerging systems.  BIOS, compiler, OS etc., Software development bifurcates on categories mentioned above.  Systems programming also can be taken has software/hardware co-design.   
       Software communication is significant in software control.  Debugging code 'placed in MARS' ensures to recover the fault-software.  This softwares are used in mission-critical applications.  Understanding the systems without any black-box treatment is important in systems programming.        Software is an configurable entity in a system.  Qualities generaly expected Aesthetics (human comforts/hospitality), Dimensioning of parts, Placement, Ommissions, Reliability (endurance) 99.999%.    Input and output design normally employed in manual system like colour of forms in the Bank, Examination , name of the form, Details to be collected with instructions for filling as well as datasheet in the case of indexes are used, language of the form, sequence of fields, size of the form and its elements(Passport size, Stamp size), optional and mandatory indication, choices to choose by tick-mark, signature on left or right.      Methodology of software development starts with unique way of solving problem known to be tactics.  Say for-loop usage instead of while-loop.  Standard in variables naming, and other user-defined items like constants, function-names all together constitutes style of coding.  Core of algorithm in software is known to be logic.  Logic is the way to solution for a particular problem.  Minimizing the cost of production, finding the shortest route between two places.     Uncontrolled mind is an animal similarly the software which is unmaintainable becomes obsolete.  Memory and concnentration on the work-in-hand is the essential quality required for programmer.  Software development often leads to ambiguity so careful and sincere efforts are needed while coding.         Some algorithms are highly complex because of nature of coding.  This type of coding is essential for system which are to be difficult to crack down.  Software is an abstract entity, Higher the abstraction complex the software to hack the code.  Economy is the higher entity money is the medium upon which trade commences this can be cash, cheuqes, drafts, bank-savings and  Insurance premium are different forms of money.  In a educational institute students are the buyers of first-hand information for which teachers are sellers.  In this paradigm accounting without students participation - 'painting without wall'.
       Software practices begins with paper-work which are typed into computer becomes source code which when compiled and executed becomes the software.  Best practices in software development suggests trade-off between time and space. i.e., Algorithm which are faster and consumes less memory are optimal.  Complexity of algorithm is expressed in Best-case, Average-case, Worst-case performance.  For example Linear search is good when the number of inputs are less than 50.
        Best example for abstraction is single line of code where in single object declared forms entire application .  The remaining objects are placed inside constructor of one-another and fission of object instantiation takes places.
        Data-Structures are representation of real-world objects or entities.  Say, stack is used for representing and evaluating posix expressions.  The basic logic in which our calculators are constructed. Tree can be constructed from stack.  For example
                            Tree ::=   Products { Hamam { 75, 100 }, Cinthol { Spice 75, Lime { 75,100 } } }
 is a tree inside a stack.
       Non-procedural coding forms the class of programs for which no algorithm exists to solve.  Finger print analysis, Image recognition, Speech recognition, Character (Hand-written) recognition are the some of the problems best-suited for this methods.
       Through flow-charting complexity is mesured by analysing the structure of flow-chart.Also the logic for program can be
specified using BNF (Bachus Normal Form). For example the logic for recognising curly parathesis is
     G = < ( S, A, B), ({,}), P, S >
     P = ( 
              S -> AB, 
              A -> A{B/{,
              B -> A}B/}
            ) 
          Techniques are there to talk to third-party hardwares says Honey-well , Siemens PLC. State-based driver is the model for communication software to these hardwares.  Double-buffering is the technique is used to fasten the graphics display.  Dynamic-memory management to build in-memory database to fasten disk-access.  The well-known use of redirection for treating any devices just like files and using file system calls for accessing files. These are the sound software engineering principles used by programmers.
        
       Path to software has project-oriented development and product-oriented development.   In project based software design will be carried out by some company, coding will be carried  out by some company.  The end-users are verticals in different sectors like retailing, banking, insurance, healthcare, education etc., Client supplies requirement document,  Changes to the requirement will be tracked , user acceptance the software has to pass through with strict deadlines.  Early phases of software development will be unclear to the new developer, so developer has to put efforts incessantly with team to understand what is his role in the team. Quality auditing will be done internally and also once in a year externally also to access the quality of software delievered.   Simulated environment will be created and the developers are trained on this background.  In real-Projects two environments will be
given
    (i) Development environment
    (ii) Target Environment or Production environment
        Development is carried out in development environment (debugging enables).  Once passes the tests moved to the production system whre the software will be finally used.  Latest terminology installation of software in the client place.  To improve productivity of the work frameworks based coding will be used.  Frame works are like uniforms for software.  Templates are synonomous to the frameworks.
     In a production basd software he requirement specification is taken after market survey and customers feedback which is treated as demanded feaure.  Incorporating this features new releases are made or upgradation patches are issued. Software product undergoes alpha testing internal to the development environment, beta testing done by external to design and coding team.  Technological challenges are more in the product development life cycle.

     Dedication , understanding one another strengths, working in team are keky aspects of softwrae projects to meet deadlines.  User-manual preparation, for delivery are also needed.  Technology transfer is the method by means of which information exchange takes place. Co-operation and co-ordination is carried out software culture is the securing the traditions and suiting for modernity.
     Through testing for all possible cases to find the error before deployment is necessary.
     Literature survey to ensre the reliability of technology.  Say windows     restarts after 40 days of continous running. Trial and errors only opens up this defencts most of the time adhoc way of working gives short term results systematic solution lasts long which is more general solution but takes time to reach the solution which is      rationale and generic.  Adhoc way of building software systematic way of building software.  Adhoc softwares are difficult to re-engineer.  Performance of the software cannot be measurable. Estimating worst-case, average-case and best-case in this type of development is difficult.
      Build prototype in a given time frame which once functions enhance it further.  System engineering is done to build system knowledge in a software.  Software should reflect the system under study.  Say operator display panel this should provide plant details when queried in a meaningful way always.

Requirement Analysis:-
       
       When the user need to test the software to simulate and provide all possible test cases is the solution.  When the user need to overcome technolgy obsolescence re-engineer to the current technology (user requirement for the current system). Say software in DBase where in text oriented UI, no network of files, shifting to Visual Basic is the suggestion.  WHen the requirement is of changing hardware platform bringing back the software configuration for the new hardware.  When the requirements to make paper-less operation solution is to 'electronic passwords' are signatures for manual signature.

        Process of software development emerges from machine language i.e., programming with binary, machine language becomes assembly language which becomes high-level languages, which in turn  becomes 4GL.  Command oriented interfaces becomes Graphical oriented interfaces. Introduction of virtual machine is the milestone in software process.  Simulation of all the activities whether it is war-training, nuclear reactor operator training, weather prediction, Protein-study  every thing brings virtual reality.
      Software process are becoming more and more rocks up i.e., matures .  Tools makes the process simpler.  Like that softwre tools are come out for analysis, design to testing.  In the analysis the domain expert is asked togive electronic copy of the requirement.  When the expert prepares electronic copy of the requirement and programmer prepares the same defines
the Project management.
      Software is not an isolated entity it should co-exist with other softwae uniformity is the user-interface i.e., mouse buttons usage, function-keys usages all should be handled properly.  Software should talk the standard protocol for communication to ensure completeness i.e., flow control, error control all these should be handled.
      Software should be robust that is it should handle all the error cases.  Software should have diagnosis routine to ensure healthiness of its operation in the system   Behaviour of software should be well deterministic in all circumstances i.e., software is a flexible entity it should not give rigidness able to adoptable to the environment of operations.
       Traditionaly the development in software all are based on hardware methodology. If we go further the hardware is based on phenomenons discovered by Science.  Designing software for microprocessor and DSp are different.  Also the computing takes solutions from communications and vice versa.  Say the use of bit stuffing in HDLC protocol to avoid control to mingle with data also found the application in C-language printf function to use double-quotes in a string.  
        Hope the inventions in the Quantum physics will bring new light in binary arithmetic and hence in the techniques, methods, principles, models, process of Software Enginering
  ------------------------------------------###############################-----------------------------------