Software engineering:
The term software engineering first appeared in the 1968 NATO software engineering conference, furthermore was meant toward provoke the thought regarding the perceived “software crisis” at the time. “Software engineering is the discipline regarding designing, writing , maintaining , testing furthermore implementing software.”
“Software engineering is also a profession, practiced by software engineers.”
“Software engineering is the discipline regarding providing methods furthermore tools beneficial to the construction regarding quality software with the limited budget furthermore given deadline.”
According toward IEEE definition:
“The application regarding systematic, disciplined, quantifiable approach toward the development, operation furthermore maintenance regarding software.”
Importance regarding software engineering:
Software Engineering is the set regarding processes furthermore tools toward develop software. Software Engineering is the combination regarding all the tools, techniques, furthermore processes that used in software production. Therefore Software Engineering encompasses all those things that are used in software production like:
- Programming Language
- Programming Language Design
- Software Design Techniques
- Tools
- Testing
- Maintenance
- Development
So all those thing that are related toward software are also related toward software engineering. Some regarding you might have thought that how programming language design could be related toward software engineering. If you look more closely at the software engineering definitions described above then you will definitely see that software engineering is related toward all those things that are helpful in software development. So is the case with programming language design. Programming language design is one regarding the major successes in last fifty years. The design regarding Ada language was considered as the considerable effort in software engineering.
These days object-oriented programming is widely being used. If programming languages will not support object-orientation then it will be very difficult toward implement object-oriented design using object-oriented principles. All these efforts made the basis regarding software engineering.
Software engineering has changed the world’s culture, particularly in countries whose people use computers. Email, the world-wide web furthermore instant messaging enable people toward interact in a new ways. Software lowers the cost regarding many important social goods furthermore services, such as health-care furthermore fire departments. In most systems, including telecommunication system, software is overriding component in terms regarding cost furthermore complexity. Good software engineering practices furthermore tools can therefore make a substantial difference, even toward the extent that may be the driving force regarding the project success.
In the USA, software drove 1/4 regarding all increase in GDP during the 1990s (about $90 billion per year), furthermore 1/6 regarding all productivity growth (efficiency within GDP) during the late 1990s (about $33 billion per year). Without software engineering computer would have no functionality. Although hardware is just as important, no software mean no computer.
Role regarding software engineering in different fields:
Undoubtedly software is playing a vital role in all the fields regarding life these days. We can see many software applications being operated around us in our daily routine. Some regarding the major areas in which software has played an important role are identified as under:
Business decision-making: Software systems have played a major role in businesses where you have toward analyse your data furthermore at the basis regarding that analysis you have toward make business decisions. This process regarding data analysis furthermore decision-making has become very accurate furthermore easy by the use regarding software.
Modern scientific investigation furthermore engineering problem solving: Scientific investigations furthermore engineering problem solving require an intensive amount regarding calculations furthermore data analysis. The accuracy regarding these analyses is also very important in scientific applications. This process has become very easy furthermore accurate by the use regarding software. For example software systems are becoming more involved in bioinformatics furthermore the process regarding DNA decoding is only possible by the use regarding software systems. Similarly many astronomical observations are being recorded furthermore analysed by the software systems these days.
Games: We see many computer games these days that interests people regarding all ages. All these games are drive through software systems.
Embedded systems: We see many kinds regarding gadgets being employed in our daily used things, like small micro controllers used in our cars, televisions, microwave ovens etc.
All these systems are controlled through the software.Similarly in many other fields like education, office automation, Internet applications etc.,Software is being used. Due toward its central importance furthermore massive use in many fields it is
contributing a lot in terms regarding economic activity started by the software products. Billions furthermore trillions regarding dollars are being invested in this field throughout the world every year.
Interlink regarding software engineering with CS/IT:
Software engineering is the specific department regarding CS which you get specialization in software development but in IT it’s offer as special course beneficial to those students they are interested in IT.The science concerned with putting scientific knowledge toward practical use. There are many engineering fields like electrical, mechanical furthermore civil engineering. All these branches regarding engineering are based at physics. Physics itself is not engineering but the use regarding physics in making buildings, electronic devices furthermore machines is engineering. When we use physics in constructing buildings then it is called civil engineering. When we use physics in making machines like engines or cars then it is called mechanical
engineering. And when we apply the knowledge regarding physics in developing electronic devices then the process is called electrical engineering. The relation regarding computer science with software engineering is similar as the relation regarding physics with the electrical, mechanical or civil engineering or beneficial to that matter the relation regarding any basic science with any engineering field. So in this context we can define software engineering as:
”This is the process regarding utilizing our knowledge regarding computer science in effective
production regarding software systems.”
Comparing Related Fields:
The relationship between the software engineering furthermore the related fields regarding programming, computer science furthermore traditional engineering has been debated from many decades. Many regarding the similarities furthermore differences are discussed here.
Comparing programming:
Programmers emphasize the task regarding writing code. Software engineers work at all sizes regarding applications: small furthermore large. Programming emphasizes coding toward produce working software applications, independent regarding budget furthermore schedule. Software engineering tries toward encompass software projects more completely, including budget furthermore schedule. Software engineering recognizes that software development fits in a large business context with relationships toward marketing, sales, production, installation, training, support furthermore operations. Software engineering emphasizes methods toward construct large applications that individual programmers cannot write alone. Software engineering tries toward come up with methods toward write programs in a consistent way.
Comparing computer science:
Many believe that (metaphorically) software engineering is toward computer science furthermore information science as traditional engineering is toward physics furthermore chemistry. While 40% regarding software engineers earn computer science degrees, they do not practice computer science every day, which is different than practicing software engineering every day.
Comparing traditional engineering:
Some practitioners believe that they apply concepts regarding traditional engineering toward software design furthermore implementation . They believe this provides a structured, logical approach furthermore subsequently, a stable final product. Other practitioners are inspired by traditional engineering, but believe that software problems need particular solutions. They believe that traditional engineering concepts may not apply , since software is fundamentally different than bridges furthermore roads. For example, traditional engineers do not use compilers or linker toward build roads. Software engineers aspire toward build low-cost, reliable, safe software, which is much like what traditional engineers do. Software engineers borrow many metaphors furthermore techniques from traditional engineering disciplines: requirements analysis, quality control furthermore project management techniques. Traditional engineers now use software tools toward design furthermore analyse systems, such as bridges furthermore buildings. These new kinds regarding design furthermore analysis resemble programming in many respects, since the work exists as electronic documents furthermore goes through analysis, design, implementation furthermore testing phases just like software. The term engineering causes a lot regarding confusion. Some believe that it means that practitioners must be engineers. Others believe that software engineering is a metaphor. Engineers may work with a leading agency, be it a profit-seeking corporation (a business), a government (civilian or military), or non-profit agency such as school.
In the U.S., there are 10 times as many software engineers as computer engineers, furthermore the software engineering community is about 60% as large as the traditional engineering community.
Some claim that software engineering is already as predictable furthermore reliable as many fields regarding engineering, such as space or biological engineering. Although large, reliable software systems can be furthermore have been constructed, software projects that fail during construction or in service are still too common. However, failures in large traditional engineering systems, such as those preceding the disasters in three miles island, Chernobyl, Bhopal disaster, space shuttles challenger furthermore Columbia are also too common. . Others argue that unlike in traditional engineering where practitioners analyse failures, find precise causes, furthermore set up guidelines toward avoid them in the future software engineers routinely fail toward pinpoint causes regarding failure or delay precisely enough toward avoid repeats in the future.
Future trends in software engineering:
The world is changing furthermore so are the demands at software engineering discipline. In this talk software engineering highlight some regarding the recent trends, namely the rise regarding empirical software engineering, regarding multi-core software engineering, regarding web service engineering, regarding secure, dependable furthermore energy conscientious engineering.
BIO: Wolfram Schulte is a principal researcher furthermore the founding manager regarding Microsoft’s Research in Software Engineering (RISE) team in Redmond, WA., USA. His team focuses at improving software productivity by providing better analytic s, languages furthermore tools beneficial to describing, analyzing, testing furthermore executing software. Before joining Microsoft Research in 1999, he worked at the University regarding Ulm (1993-1999), at sd&m, a German software company (1992-1993), furthermore at the Technical University Berlin (1987-1992).
Model-driven architecture (MDA)
- Not old-style computer-aided software engineering (CASE), i.e. discredited round-trip engineering
- Capture different levels regarding abstraction; elaborating lower-levels, constrained by higher-levels
Software factories
- Component-based libraries furthermore frameworks
- Meta-object facility (MOF) beneficial to store furthermore registry regarding component meta-data. Dependency-injection, e.g. Spring factory
- Mocks objects toward complement, not replace, unit furthermore integration testing using fixtures
Service-oriented architecture (SOA)
- Continuing growth furthermore refinement regarding ontology-based software engineering
- Return toward not-quite components, i.e. facade beneficial to service interfaces that are Explicit growth regarding resource description framework (RDF), web ontology language (OWL) - semantic-description languages furthermore extensions (hard problem!)
- Realisation that C++, Java, C#, perl, python, yacc/bison (of course) incorporate support beneficial to domain-specific languages (DSLs) by extension, genericity furthermore composition
- Convergence regarding object-oriented analysis furthermore design with design furthermore enterprise patterns
- Combine patterns furthermore domain ontology toward give DSL independent regarding technology furthermore platforms - "form follows function"
Non-trivial systems
- software furthermore systems engineering merge into concrete discipline
- integration architecture, distributed furthermore real-time computing are increasingly seen as facets regarding same problem
- enterprise security, single sign on, unified data views, portals - service furthermore system mash ups at user furthermore data levels
- two-level development:
1) service furthermore business levels based at business/logical processes furthermore composite services;
2) implementations that conform toward service furthermore interface contracts can be in any technology, i.e. custom software, commercial-off-the-shelf (COTS) or free furthermore open source software (FOSS)
- well-defined registry interface - "think global over enterprise, act local" every system furthermore application adheres toward enterprise guidelines
- configurable furthermore adaptable - constrained flexibility due toward absolute need toward confidently test known configurations
Cross discipline
- computer science furthermore software engineering, psychology, management
- unified analysis, richer toolkit regarding analytic s furthermore heuristics
- mature processes, peer review furthermore accreditation.