Software engineering (SE) is the profession concerned with specifying, designing, developing and maintaining software applications by applying technologies and practices from computer science, project management, and other fields.
SE applications are used in a wide range of activities, from industry to entertainment. Software applications improve user productivity and quality of life. Application software examples: office suites, video games, and the world wide web. System software examples: embedded systems and operating systems.
SE technologies and practices improve the productivity of developers and the quality of the applications they create. Software engineering examples: databases, languages, libraries, patterns, and tools. Computer science examples: algorithms and data structures. Project management examples: processes.
Origins
The term software engineering was used occasionally in the late 1950s and early 1960s. Software engineering was popularized by the 1968 NATO Software Engineering Conference held in Garmisch, Germany and has been in widespread use since.
Meanings
As of 2004, in common parlance the term software engineering is used with at least three distinct meanings:
• As the usual contemporary term for the broad range of activities that was formerly called programming or systems analysis;
• As the broad term for the technical analysis of all aspects of the practice, as opposed to the theory of computer programming;
• As the term embodying the advocacy of a specific approach to computer programming, one that urges that it be treated as an engineering profession rather than an art or a craft, and advocates the codification of recommended practices in the form of software engineering methodologies.
Levels
There are currently no widely accepted criteria for distinguishing someone who is a software engineer from someone who is not a software engineer. In addition, the industry is in the midst of a complex debate on the licensing of practicing software engineers. For the localities that do not license software engineers, some hiring classifications are made based on education and experience. Classification levels may include: entry-level, mid-level, and senior.
Typical entry-level software engineers have a bachelor's degree and zero to five years of experienc...
... middle of paper ...
...ep toward the management of disease was replacement of demon theories and humours theories by the germ theory. That very step, the beginning of hope, in itself dashed all hopes of magical solutions. It told workers that progress would be made stepwise, at great effort, and that a persistent, unremitting care would have to be paid to a discipline of cleanliness. So it is with software engineering today. (Fred Brooks in No Silver Bullet)
• [SE advocates] have climbed a social ladder for a few decades and are now fighting against a tide of open source software that seems to be bringing bazaar anarchy and taking the well-deserved control out of their hands. Part of this is their utopia of "software engineering" by some magic cathedral approach which has never worked and whose failure the authors of these utopias tend to blame on the lack of control that copyright offers them over their projects. The strange thing here is that they have had the chance to put all these things into practice in their university haven. But, strangely enough, the more successful university projects are carried out in a bazaar-like open-source manner. -- Hartmut Pilch
In programming, computer engineers instruct computers how, to do their jobs or desired functions line by line. There are many forms of computer software engineers. There are computer applications software engineers who analyse user needs and designs and then build, maintain, or perfect specialized utility systems or applications already within the system. Computer applications engineers have a multitude of computer programming languages they have to use on a daily basis. Generally the favorite languages used are C, C++, and Java. The less popular languages that are used are Fortran and COBOL. Software engineers may also also develop packaged systems, systems software, or even create personalized applications. Computer systems software engineers are responsible for designing the maintenance and construction of a company's computer systems, while also planning the systems future growth. Computer systems software engineers analyse the needs of each specific department while working with a company and advise the company on which technical direction to follow. Computer systems software engineers often help set up the technical systems of the company within the departments. The computer systems software engineers will also sometimes set up the companies intranets systems. Specifically the ones that link the company's computer systems with the organization and make communications between departments run faster and smoother. Computer
Software engineering is the application of engineering to the design, development, implementation, testing and maintenance of software in a systematic method. Knowledge of computer programming is a prerequisite for becoming a software engineer many software engineers enter the
Computer systems software engineers coordinate the construction and maintenance of a company¡¦s computer systems and plan their future growth. Working with a company, they coordinate each department¡¦s computer needs¡Xordering, inventory, billing, and payroll record keeping, for example¡Xand make suggestions about its technical direction. They also might set up the company¡¦s intranets¡Xnetworks that link computers within the organization and ease communication among the various departments. (3)
Insightfully mapping out the technological advancements in software development from its beginnings somewhere in the late 1940’s to the current modern age. There is more than enough compelling evidence that software technology has laid a strong impact on all economic and social aspects of our modern day living. Thus, a systematic approach towards high quality software development is required due to an increasingly quality oriented market and competitive business world.
My interest in Software Engineering, as a practical approach to develop software, arose while studying it in my fourth semester. I became aware of the different software development methodologies and the various stages in developing a software. This interest blossomed further through studying software project management & software testing. I came to understand the need of the various managemen...
Software engineering has been around since the 1960’s by its fairly new nature in respect to other engineering fields it is quite difficult to find what area within history this profession lies. The term programming was first coined which referred to the tasking of a coding a computer to run various tasks. During a NATO sponsored conference held in 1968, the term software engineer began to emerge. Software engineer refers to a highly disciplined and systematic approach to software development and maintenance. This was the start of the revolution in the field of programming. During this time, there were many issues involved with the process of software development. This conference was designed to address many issues that which plagued software
Brook’s paper “No Silver Bullet: Essence and Accidents of Software Engineering” presents how complex the development of a software is and its inherent difficulties. He brings out the accidental and essential difficulties we encounter in the process of software development. He identifies complexity, conformity, changeability and invisibility as inherent properties of any software whereas accidental difficulties are experienced during the development cycle/process. He suggests that being able to develop reusable software cuts down the costs and time as well as gives room for a wide variety of applications/functionalities across different platforms/ environments. Being able to balance and to bring best out of the resources that are available in terms of processing powers, hardware/software capabilities, personnel, budget etc., is very crucial for the success of software in the market. It is quite interesting and very relatable how the creative process of developing software in stages helps and (rather than just writing the code) motivates the software developers and design managers in coming up with new ideas during the iterations. Brook’s also mentions how high level programming languages, time-sharing and different development environments have affects on the complexity of software development process to remove accidental difficulties thus resulting in high efficiencies. According to him, fields like Graphical programming, Expert systems, Artificial intelligence though provide powerful insights, they have little to do with actual software development process to define its requirements or functionalities. He identifies how user can benefit from adapting an existing system to sol...
As technology advances, employers ask for new skills. Computer software engineers must continue to learn such skills if they hope to remain in this field. To help them keep up with the technology changes, continuing education and professional development seminars are offered by employers and software vendors, colleges and universities, private training institutions, and professional computing societies.
Programming is a systematic approach in Software Engineering which includes Analysis, Design, implementation and maintenance
A software development methodology is a standard proven process which helps programmers, architects, system analysts and others to make a well controlled and an efficient progress in the high quality software development.
Society advocates that programming can be a form of art due to the aesthetic aspects when developing software. The argument exists here, where many argue that creative freedom isn’t a factor when dealing with science. On one hand, Software development has aspects of being a form of art for a variety of reasons. First, the problem is never defined in a concrete precise definition, which allows software designers to be flexible when dealing with the problem. Secondly, software is built with the notion of being user-friendly, which requires teams to build a type of interface which meets any unique needs of the user. Software development is also a type of science, where mathematical computation and data-oriented theories are necessary for development. Thus, Software Engineering is both an art and a form of science. However, we should also focus on the belief that Software Development is a form of Engineering. Today many consider “Software Engineering” to be a buzzword, confusing yet again as seen in the previous paper, to be only a type of Computer Science. Though, this isn’t the case at all. Software Engineers are tasked with using core practices to develop software products that have the quality assurance necessary for consumers. By treating Software Development as a form of engineering allows the development process to be clearer and with more defined goals. This allows developers to strike a balance when determining what are the “right” and “wrong” methods when designing products. Here, instead of focusing on the actual question of what to define Software Engineering to be, we instead should be focusing how to train individuals the correct methods and core concepts necessary for
Software engineering encompasses various principles from both the computer science field and the computer engineering field to develop practical uses of software within hardware we use on a daily basis. With the passage of time, technology dependent on software has become increasingly prevalent. As a result, there will be a high demand for software engineers to sustain the eventual abundance of new and more complex computers.
... things that software engineers need to learn, if you do not learn these things you will be at a disadvantage and be limited to what you are capable of. The rapid growth will open new jobs for the upcoming generations of software engineering. Software engineering is a hard but rewarding career, but in the end it helps others accomplish things that would not be possible 50 years ago.
Software engineering was suggested at a NATO conference in 1968 to talk about the software crisis. “Software crisis” was the name give to problems encountered in the development of large and complex systems . In the early 1970s, notions of structured programming started coming up. In the late 1970s, early