Showing posts with label Software engineering demographics. Show all posts
Showing posts with label Software engineering demographics. Show all posts

Friday, December 3

Software development

Software development (also known as Application Development; Software Design, Designing Software, Software Engineering, Software Application Development, Enterprise Application Development, Platform Development) is the development of a software product in a planned and structured process. This software could be produced for a variety of purposes - the three most common purposes are to meet specific needs of a specific client/business, to meet a perceived need of some set of potential users (the case with commercial and open source software), or for personal use (e.g. a scientist may write software to automate a mundane task).
The term software development is often used to refer to the activity of computer programming, which is the process of writing and maintaining the source code, whereas the broader sense of the term includes all that is involved between the conception of the desired software through to the final manifestation of the software. Therefore, software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.For larger software systems, usually developed by a team of people, some form of process is typically followed to guide the stages of production of the software.
Especially the first phase in the software development process may involve many departments, including marketing, engineering, research and development and general management.


Overview

There are several different approaches to software development, much like the various views of political parties toward governing a country. Some take a more structured, engineering-based approach to developing business solutions, whereas others may take a more incremental approach, where software evolves as it is developed piece-by-piece. Most methodologies share some combination of the following stages of software development:
Market research
Gathering requirements for the proposed business solution
Analyzing the problem
Devising a plan or design for the software-based solution
Implementation (coding) of the software
Testing the software
Deployment
Maintenance and bug fixing
These stages are often referred to collectively as the software development lifecycle, or SDLC. Different approaches to software development may carry out these stages in different orders, or devote more or less time to different stages. The level of detail of the documentation produced at each stage of software development may also vary. These stages may also be carried out in turn (a “waterfall” based approach), or they may be repeated over various cycles or iterations (a more "extreme" approach). The more extreme approach usually involves less time spent on planning and documentation, and more time spent on coding and development of automated tests. More “extreme” approaches also promote continuous testing throughout the development lifecycle, as well as having a working (or bug-free) product at all times. More structured or “waterfall” based approaches attempt to assess the majority of risks and develop a detailed plan for the software before implementation (coding) begins, and avoid significant design changes and re-coding in later stages of the software development lifecycle.
There are significant advantages and disadvantages to the various methodologies, and the best approach to solving a problem using software will often depend on the type of problem. If the problem is well understood and a solution can be effectively planned out ahead of time, the more "waterfall" based approach may work the best. If, on the other hand, the problem is unique (at least to the development team) and the structure of the software solution cannot be easily envisioned, then a more "extreme" incremental approach may work best. A software development process is a structure imposed on the development of a software product. Synonyms include software life cycle and software process. There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process.

Software development topic

Marketing
The sources of ideas for software products are legion. These ideas can come from market research including the demographics of potential new customers, existing customers, sales prospects who rejected the product, other internal software development staff, or a creative third party. Ideas for software products are usually first evaluated by marketing personnel for economic feasibility, for fit with existing channels distribution, for possible effects on existing product lines, required features, and for fit with the company's marketing objectives. In a marketing evaluation phase, the cost and time assumptions become evaluated. A decision is reached early in the first phase as to whether, based on the more detailed information generated by the marketing and development staff, the project should be pursued further.
In the book "Great Software Debates", Alan M. Davis states in the chapter "Requirements", subchapter "The Missing Piece of Software Development":
“ Students of engineering learn engineering and are rarely exposed to finance or marketing. Students of marketing learn marketing and are rarely exposed to finance or engineering. Most of us become specialists in just one area. To complicate matters, few of us meet interdisciplinary people in the workforce, so there are few roles to mimic. Yet, software product planning is critical to the development success and absolutely requires knowledge of multiple disciplines. ”
Because software development may involve compromising or going beyond what is required by the client, a software development project may stray into less technical concerns such as human resources, risk management, intellectual property, budgeting, crisis management, etc. These processes may also cause the role of business development to overlap with software development.

Software development methodology
A software development methodology is a framework that is used to structure, plan, and control the process of developing information systems. A wide variety of such frameworks have evolved over the years, each with its own recognized strengths and weaknesses. One system development methodology is not necessarily suitable for use by all projects. Each of the available methodologies is best suited to specific kinds of projects, based on various technical, organizational, project and team considerations.

Recent trends in the sector

The end of the 1990 provided W3C standards which enabled ontologies to unite four modelling functions in one knowledge model: the knowledge representation (in RDF(S) and OWL), the knowledge generation through inferences, the conceptual model through ontologies and the physical model through triple stores. The latest developments allow to generate applications straight from the knowledge systems (ontologies). This approach finds its justification in the use of semantic technologies with substitution of www data with verified production data. One business case for this development method is available at the finance ontology website.


(source:wikipedia)

Software engineering demographics

There are many software engineers. Canada, the European Union, Japan, and Australia will probably find corresponding numbers of SE practitioners.

European Union 

India

There has been a healthy growth in the number of India's IT professionals over the past few years. From a base of 6,800 knowledge workers in 1985-86, the number increased to 522,000 software and services professionals by the end of 2001-02. It is estimated that out of these 522,000 knowledge workers, almost 170,000 are working in the IT software and services export industry; nearly 106,000 are working in the IT enabled services and over 220,000 in user organizations.

Japan


United States

About 1 out of every 200 workers is a software engineer. There are 55% to 60% as many software engineers as all traditional engineers. In 2002, software engineering had 612,000 practitioners; 264,790 managers, 16,495 educators, and 457,320 programmers.

Summary

This article is outdated. Please update this article to reflect recent events or newly available information. Please see the talk page for more information. (November 2010)
Based on data from the U.S. Bureau of Labor Statistics from 2002, about 612,000 software engineers work in the U.S. The size of all software engineering is about 60% the size of all traditional engineering. This comparison holds whether one compares the number of practitioners, managers, educators, or technicians/programmers.
Role # SE Title # TE Title Ratio of SE to TE
Practitioners 611,900 Software Engineers 1,157,020 Traditional Engineers 53%
Managers 264,790 Computer and Information Systems Managers 413,750 Engineering Managers + Construction Managers 64%
Educators 16,495 Computer Science (practical) 29,310 Engineering Teachers 56%
Technicians 457,320 Computer Programmers 516,170 Engineering Technicians 88%


Software Engineers Versus Traditional Engineers
The following two tables compare the number of software engineers (611,900), versus the number of traditional engineers (1,157,020). The ratio is 53%.
There are another 1,500,000 people in system analysis, system administration, and computer support, many of whom might be called software engineers. Many systems analysts manage software development teams and analysis is an important software engineering role, so many of them might be considered software engineers in the near future. This means that the number of software engineers may actually be much higher.
Note also that the number of software engineers declined by 5% to 10% from 2000 to 2002.
15-1031 Computer Software Engineers, Applications 356,760 $34.09 $35.48 $73,800 0.7 %
15-1032 Computer Software Engineers, Systems Software 255,040 $35.60 $36.46 $75,840 0.6 %
17-2011 Aerospace Engineers 74,210 $34.97 $35.63 $74,110 1.1 %
17-2021 Agricultural Engineers 2,500 $24.38 $26.79 $55,730 2.9 %
17-2031 Biomedical Engineers 7,130 $29.04 $30.97 $64,420 1.7 %
17-2041 Chemical Engineers 32,110 $34.85 $36.06 $75,010 1.0 %
17-2051 Civil Engineers 207,480 $28.88 $30.29 $63,010 0.4 %
17-2061 Computer Hardware Engineers 67,180 $34.69 $36.61 $76,150 1.1 %
17-2071 Electrical Engineers 146,180 $32.78 $33.88 $70,480 0.4 %
17-2072 Electronics Engineers, Except Computer 126,020 $33.62 $34.43 $71,600 0.6 %
17-2081 Environmental Engineers 45,720 $29.52 $30.50 $63,440 0.7 %
17-2111 Health and Safety Engineers, Except Mining Safety Engineers and Inspectors 34,160 $27.89 $28.77 $59,830 0.7 %
17-2112 Industrial Engineers 151,760 $29.88 $30.57 $63,590 0.3 %
17-2121 Marine Engineers and Naval Architects 4,810 $32.04 $32.83 $68,280 2.2 %
17-2131 Materials Engineers 22,780 $30.09 $30.92 $64,310 1.0 %
17-2141 Mechanical Engineers 203,620 $30.23 $31.33 $65,170 0.4 %
17-2151 Mining and Geological Engineers, Including Mining Safety Engineers 5,050 $29.70 $31.14 $64,770 2.4 %
17-2161 Nuclear Engineers 15,180 $39.11 $39.57 $82,300 1.3 %
17-2171 Petroleum Engineers 11,130 $40.08 $41.13 $85,540 1.4 %


Programmers versus Technicians
Computer programmers (457,320) are considered to have less education, skill, or experience than software engineers. Engineering technicians (526,170) are considered to have less education, skill, or experience than engineers. There are 88% as many programmers as technicians.
15-1021 Computer Programmers 457,320 $28.98 $30.62 $63,690 0.6 %
17-3021 Aerospace Engineering and Operations Technicians 14,700 $24.83 $25.48 $52,990 1.1 %
17-3022 Civil Engineering Technicians 88,380 $18.13 $18.71 $38,910 0.6 %
17-3023 Electrical and Electronic Engineering Technicians 194,960 $20.65 $21.26 $44,210 0.4 %
17-3024 Electro-Mechanical Technicians 30,360 $18.33 $19.20 $39,930 0.7 %
17-3025 Environmental Engineering Technicians 18,770 $17.72 $18.93 $39,380 1.0 %
17-3026 Industrial Engineering Technicians 59,700 $20.15 $21.79 $45,310 0.9 %
17-3027 Mechanical Engineering Technicians 53,630 $19.85 $20.60 $42,850 0.5 %
17-3031 Surveying and Mapping Technicians 55,670 $14.05 $15.27 $31,760 0.7
[edit]Computer Managers Versus Construction and Engineering Managers
Computer and information system managers (264,790) manage software projects, as well as computer operations. Similarly, Construction and engineering managers (413,750) oversea engineering projects, manufacturing plants, and construction sites. Computer management is 64% the size of construction and engineering management.
11-3021 Computer and Information Systems Managers 264,790 $40.98 $43.48 $90,440 0.3 %
11-9021 Construction Managers 208,360 $30.53 $34.24 $71,210 0.7 %
11-9041 Engineering Managers 205,390 $43.71 $46.03 $95,750 0.3 %


Software Engineering Educators Versus Engineering Educators
Until now, computer science has been the main degree to get, whether one wanted to make software systems (software engineering) or study the theoretical and mathematical facets of software systems (computer science). The data shows that the number of chemistry and physics educators (29,610) nearly equals the number of engineering educators (29,310). I estimate that similarly, ½ of computer science educators emphasize the practical (software engineering) (16,495) and ½ of computer science educators emphasize the theoretical (computer science) (16,495). This means that software engineering education is 56% the size of traditional engineering education. Computer science is larger than all engineering, and larger than all physics and chemistry.
25-1021 Computer Science Teachers, Postsecondary 32,990 (4) (4) $55,330 1.1 %
25-1032 Engineering Teachers, Postsecondary 29,310 (4) (4) $73,100 1.3 %
25-1052 Chemistry Teachers, Postsecondary 17,670 (4) (4) $60,800 1.3 %
25-1054 Physics Teachers, Postsecondary 11,940 (4) (4) $66,960 1.0


Other Software and Engineering Roles
15-1051 Computer Systems Analysts 467,750 $30.24 $31.20 $64,890 0.5 %
15-1041 Computer Support Specialists 478,560 $18.80 $20.35 $42,320 0.5 %
15-1061 Database Administrators 102,090 $26.68 $28.41 $59,080 0.5 %
15-1071 Network and Computer Systems Administrators 232,560 $26.35 $27.70 $57,620 0.4 %
15-1081 Network Systems and Data Communications Analysts 133,460 $28.09 $29.51 $61,390 0.6 %
17-3011 Architectural and Civil Drafters 101,190 $17.95 $18.78 $39,060 0.6 %
17-3012 Electrical and Electronics Drafters 35,470 $19.76 $21.16 $44,020 0.8 %
17-3013 Mechanical Drafters 68,280 $19.58 $20.71 $43,080 0.9 %


Relation to IT demographics

Software engineers are part of the much larger software, hardware, application, and operations community. In 2000 in the U.S., there were about 680,000 software engineers and about 10,000,000 IT workers.
There are no numbers on testers in the BLS data.



(source:wikipedia)

Software engineer

A software engineer is a person who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.

Overview

Prior to the mid-1990s, software practitioners called themselves programmers or developers, regardless of their actual jobs. Many people prefer to call themselves software developer and programmer, because most widely agree what these terms mean, while software engineer is still being debated. A prominent computing scientist, E. W. Dijkstra, wrote in a paper that the coining of the term software engineer was not a useful term since it was an inappropriate analogy, "The existence of the mere term has been the base of a number of extremely shallow --and false-- analogies, which just confuse the issue...Computers are such exceptional gadgets that there is good reason to assume that most analogies with other disciplines are too shallow to be of any positive value, are even so shallow that they are only confusing."
The term programmer has often been used as a pejorative term to refer to those without the tools, skills, education, or ethics to write good quality software. In response, many practitioners called themselves software engineers to escape the stigma attached to the word programmer. In many companies, the titles programmer and software developer were changed to software engineer, for many categories of programmers.
These terms cause confusion, because some denied any differences (arguing that everyone does essentially the same thing with software) while others use the terms to create a difference (because the terms mean completely different jobs).


A state of the art
In 2004, Keith Chapple U. S. Bureau of Labor Statistics counted 760,840 software engineers holding jobs in the U.S.; in the same period there were some 1.4 million practitioners employed in the U.S. in all other engineering disciplines combined. The label software engineer is used very liberally in the corporate world. Very few of the practicing software engineers actually hold Engineering degrees from accredited universities. In fact, according to the Association for Computing Machinery, "most people who now function in the U.S. as serious software engineers have degrees in computer science, not in software engineering". See also Debates within software engineering and Controversies over the term Engineer.


Regulatory classification
The U.S. Bureau of Labor Statistics classifies computer software engineers as a subcategory of "computer specialists", along with occupations such as computer scientist, programmer, and network administrator. The BLS classifies all other engineering disciplines, including computer hardware engineers, as "engineers".
The U.K. has seen the alignment of the Information Technology Professional and the Engineering Professionals.
Software engineering in Canada has seen some contests in the courts over the use of the title "Software Engineer". The Canadian Council of Professional Engineers (C.C.P.E. or "Engineers Canada") will not grant a "Professional Engineer" status/license to anyone who has not completed a recognized academic engineering program. Engineers qualified outside Canada are similarly unable to obtain a "Professional Engineer" license. Since 2001, the Canadian Engineering Accreditation Board has accredited several university programs in software engineering, allowing graduates to apply for a professional engineering licence once the other prerequisites are obtained, although this does nothing to help IT professionals using the title with degrees in other fields (such as computer science).
Some of the United States of America regulate the use of terms such as "computer engineer" and even "software engineer". These states include at least Texas and Florida.


Education


The examples and perspective in this article may not represent a worldwide view of the subject. Please improve this article and discuss the issue on the talk page. (November 2010)
About half of all practitioners today have computer science degrees. A small, but growing, number of practitioners have software engineering degrees. In 1987 Imperial College London introduced the first three-year software engineering Bachelor's degree in the UK and the world; in the following year the University of Sheffield established a similar programme. In 1996, Rochester Institute of Technology established the first software engineering Bachelor's degree program in the United States, however, it did not obtain ABET until 2003, the same time as Clarkson University, Milwaukee School of Engineering and Mississippi State University obtained theirs. In 1997 PSG College of Technology in Coimbatore, India was the first to start a five-year integrated Master of Science degree in Software Engineering.
Since then, software engineering undergraduate degrees have been established at many universities. A standard international curriculum for undergraduate software engineering degrees was recently defined by the CCSE. As of 2004, in the U.S., about 50 universities offer software engineering degrees, which teach both computer science and engineering principles and practices. The first software engineering Master's degree was established at Seattle University in 1979. Since then graduate software engineering degrees have been made available from many more universities. Likewise in Canada, the Canadian Engineering Accreditation Board (CEAB) of the Canadian Council of Professional Engineers has recognized several software engineering programs.
In 1998, the US Naval Postgraduate School (NPS) established the first doctorate program in Software Engineering in the world.[citation needed] Additionally, many online advanced degrees in Software Engineering have appeared such as the Master of Science in Software Engineering (MSE) degree offered through the Computer Science and Engineering Department at California State University, Fullerton. Steve McConnell opines that because most universities teach computer science rather than software engineering, there is a shortage of true software engineers. ETS University and UQAM were mandated by IEEE to develop the SoftWare Engineering BOdy of Knowledge SWEBOK, which has become an ISO standard describing the body of knowledge covered by a software engineer.


Other degrees
In business, some software engineering practitioners have MIS degrees. In embedded systems, some have electrical or computer engineering degrees, because embedded software often requires a detailed understanding of hardware. In medical software, practitioners may have medical informatics, general medical, or biology degrees.
Some practitioners have mathematics, science, engineering, or technology degrees. Some have philosophy (logic in particular) or other non-technical degrees. And, others have no degrees. For instance, Barry Boehm earned degrees in mathematics.


Profession

Employment
Most software engineers work as employees or contractors. Software engineers work with businesses, government agencies (civilian or military), and non-profit organizations. Some software engineers work for themselves as freelancers. Some organizations have specialists to perform each of the tasks in the software development process. Other organizations required software engineers to do many or all of them. In large projects, people may specialize in only one role. In small projects, people may fill several or all roles at the same time. Specializations include: in industry (analysts, architects, developers, testers, technical support, managers) and in academia (educators, researchers).
There is considerable debate over the future employment prospects for Software Engineers and other IT Professionals. For example, an online futures market called the Future of IT Jobs in America attempts to answer whether there will be more IT jobs, including software engineers, in 2012 than there were in 2002.

Certification
Professional certification of software engineers is a contentious issue. Some see it as a tool to improve professional practice.
Most successful certification programs in the software industry are oriented toward specific technologies, and are managed by the vendors of these technologies. These certification programs are tailored to the institutions that would employ people who use these technologies.
The ACM had a professional certification program in the early 1980s, which was discontinued due to lack of interest. As of 2006, the IEEE had certified over 575 software professionals. In Canada the Canadian Information Processing Society has developed a legally recognized professional certification called Information Systems Professional (ISP).
Impact of globalization
Many students in the developed world have avoided degrees related to software engineering because of the fear of offshore outsourcing (importing software products or services from other countries) and of being displaced by foreign visa workers.Although government statistics do not currently show a threat to software engineering itself; a related career, computer programming does appear to have been affected. Often one is expected to start out as a computer programmer before being promoted to software engineer. Thus, the career path to software engineering may be rough, especially during recessions.
Some career counselors suggest a student also focus on "people skills" and business skills rather than purely technical skills because such "soft skills" are allegedly more difficult to offshore. It is the quasi-management aspects of software engineering that appear to be what has kept it from being impacted by globalization.

Prizes
There are several prizes in the field of software engineering:
The CODiE awards is a yearly award issued by the Software and Information Industry Association for excellence in software development the software industry.
Jolt Awards are awards in the software industry.
Stevens Award is a software engineering award given in memory of Wayne Stevens.

Debates within software engineering

Controversies over the term Engineer
Some people believe that software engineering implies a certain level of academic training, professional discipline, and adherence to formal processes that often are not applied in cases of software development. A common analogy is that working in construction does not make one a civil engineer, and so writing code does not make one a software engineer. It is disputed by some - in particular by the Canadian Professional Engineers Ontario (PEO) body, that the field is mature enough to warrant the title "engineering". The PEO's position was that "software engineering" was not an appropriate name for the field since those who practiced in the field and called themselves "software engineers" were not properly licensed professional engineers, and that they should therefore not be allowed to use the name.

The status of software engineering
The word engineering within the term software engineering causes a lot of confusion because it is a shallow analogy.
The wrangling over the status of software engineering (between traditional engineers and computer scientists) can be interpreted as a fight over control of the word "engineering".
Traditional engineers (especially civil engineers and the NSPE) claim that they have special rights over the term engineering, and for anyone else to use it requires their approval. In the mid-1990s, the NSPE sued to prevent anyone from using the job title software engineering. The NSPE won their lawsuit in 48 states.However, SE practitioners, educators, and researchers ignored the lawsuits and called themselves software engineers anyway. The U.S. Bureau of Labor Statistics uses the term software engineer, too. The term engineering is much older than any regulatory body, so many believe that traditional engineers have few rights to control the term. As things stand at 2007, however, even the NSPE appears to have softened its stance towards software engineering and following the heels of several overseas precedents, is investigating a possibility of licensing software engineers in consultation with IEEE, NCEES and other groups "for the protection of the public health safety and welfare".
In Canada, the use of the words 'engineer' and 'engineering' are controlled in each province by self-regulating professional engineering organizations, often aligned with geologists and geophysicists, and tasked with enforcement of the governing legislation. The intent is that any individual holding themselves out as an engineer (or geologist or geophysicist) has been verified to have been educated to a certain accredited level, and their professional practice is subject to a code of ethics and peer scrutiny.
In New Zealand, IPENZ, the professional engineering organization entrusted by the New Zealand government with legal power to license and regulate chartered engineers (CPEng), recognizes software engineering as a legitimate branch of professional engineering and accepts application of software engineers to obtain chartered status provided he or she has a tertiary degree of approved subjects. Software Engineering is included but Computer Science is normally not.


(source:wikipedia)