Home - Category: Uncategorized

Category: Uncategorized

The Challenges of a Software Engineer

Posted on October 10, 2017 in Uncategorized

While it’s true that the engineer is also a programmer, and there are some design duties included in the core job functions, there are also some very fundamental, critical differences in the manner in which software engineers, programmers, and designers complete their work. Many engineers would also argue that there is a marked difference in the quality and performance of the products they produce as well.

Software engineer jobs take a more formal approach to the process of programming software. The manner in which engineers complete their work is much more similar to traditional engineering processes than it is to software programming or designing methods.

Software engineers are often involved in the most complex of design or programming activities. Though every day, run of the mill programs can be designed by less skilled folks, many programs can’t be trusted to just any old programmer.

For example, programs that control important processes – especially in circumstances where human lives may be lost if an error occurs in a program – are primarily the realm of highly skilled software engineers. After all, you don’t want the software that runs a key piece of medical equipment or that which drives the operating system of a nuclear submarine to fail.

This is perhaps the most challenging aspect of design engineer jobs with which incumbents must constantly contend. They are tasked with ensuring the smooth and efficient operations of incredibly complex and sometimes frightening processes with computer enhanced systems.

Design engineers are tasked not only with creating a software program that will serve the basic needs of a business, organization, or other client, but they must also foresee the potential pitfalls associated with the program as well. They must be able to grasp the technological concepts of the methods or practices with which the program is intended to interface and design the software appropriately for the highly technical, and often potentially dangerous, environment in which it will be used.

Although the average programmer or designer may be able to afford a few minor glitches, for those working in design engineer jobs, there is often no such thing as a minor glitch. Of the software fails, the consequences can be great. The pressure that design engineers face on a daily basis is tremendous for this very reason.

Software engineers also face some other unique challenges in the IT world. They must often complete a lot more paperwork than most IT professionals. Once again remaining true to the engineering trade, software engineers will draft designs, test them for quality, integrity and performance, and will frequently redesign them several times before moving from paper or prototypes to the real deal. In fact, many of those who work in software engineer jobs will spend as much as 70 – 80% of their time dealing with paperwork and only 20 – 30% actually writing code for the software itself.

Dagstuhl Seminar End – User Software Engineering

Posted on October 8, 2017 in Uncategorized

I have been reading this abstracts paper from the Dagstuhl Seminar End-User Software Engineering and it has lots of interesting points to make.

In the Dagstuhl Seminar report (Burnett et al) it is stated that “The number of end users creating software is far larger than the number of professional programmers. These end users are using various languages and programming systems to create software in forms such as spreadsheets, dynamic web applications, and scientific simulations. This software needs to be sufficiently dependable, but substantial evidence suggests that it is not.” This point relates to that of (Ko) (Carnegie Mellon University) who explains that the goals of end-users may be unrelated to production of code, but instead they are interested in their domain problem, this means they perceive programming barriers as distractions. Ko explains that end-user programmers must be allowed to focus on their goals, and an important part of the solution is to visualise the whole program execution not just the output. A further problem outlined by Ko is that of programs which were intended to be temporary and owned by a particular person becoming central to a company, this often happens with spreadsheets.

(Henry Lieberman) of MIT Media Laboratory asks “Why is it so much harder to program a computer than simply to use a computer application? I can’t think of any good reason why this is so; we just happen to have a tradition of arcane programming languages and mystically complex software development techniques. We can do much better.” He argues that researchers should use program transformation, and visualisation to make the end-user programming process as automatic as possible. In order that people can become End-User Software Engineers without their even realizing it. This needs to involve interdisciplinary research to combine different research approaches. (Blackwell) also argues the need for interdisciplinary research on the end-user programming problem to identify techniques within software engineering that can assist with this problem.

(Coutaz) explains how Model Driven Engineering and Service Oriented Architecture can be combined. Coutaz also explains that “An interactive system is a graph of models related by mappings and transformations.” This would fit in well with the structure of RDF (Resource Description Framework) a Semantic Web standard, which is also a graph structure. Alexander Repenning of University of Lugano explains the need for enhancements to UML (Unified Modeling Language) to aid end-user programming. (Engels) of University of Paderborn also explains that UML should be extended to allow development of user interfaces in order to assist end-users to program. (Repenning) also argues that “Visual programming languages using drag and drop mechanisms as programming approach make it virtually impossible to create syntactic errors.” So “With the syntactic challenge being – more or less – out of the way we can focus on the semantic level of end-user programming.” (Rosson) of Pennsylvania State University also explains about creation of a web based drag and drop interface. Abraham and (Erwig) of Oregon State University integrate spreadsheet modelling into the UML modelling process. (Gerhard Fischer) of University of Colorado explains the concept of meta-design as aimed at creating infrastructures for collaborative design assuming future uses and problems cannot be completely anticipated during development of a system. (Dittrich) of University of Copenhagen argues that more research is needed into the software lifecycle and methods and tools needed for end-user developers, especially when they are collaborating. These end-users often need to adjust old software for new purposes. (Costabile and Piccinno) also explain that new methodologies and environments are required for supporting end-user collaborative development

(De Souza) argues that the goal of human-computer interaction (HCI) will evolve from making systems easy to use to making systems that are easy to develop. Lieberman also argues that HCI experts have concentrated on ease of use and should examine ease of programming. (Begel) of Microsoft Research explains that if programming is left only to programmers rather than allowing domain experts to be involved the program becomes a black box and the domain expert cannot trust or verify the results. He explains that text based computer languages are often too obscure for end-user programmers. Begel also explains that end-users may lack an engineering mindset to form mental models of how to make the computer do what they want. Segal of the Open University argues that professional engineers have a history of programming so can be distinguished from other end-user programmers as having less problems with coding. (Fischer) explains that it is the mismatches between end-users needs and software support that enables new understandings. Fischer also argues that software development can never be completely delegated to software professionals because domain experts are the only people that fully understand the domain specific tasks that must be performed. He also argues for an approach to enabling end-user programming that makes it interesting to end-users. He explains that often the problem is that end-users find programming boring rather than that they find it hard. (Spahn et al) explains that end-users of ERP (Enterprise Resource Planning) systems are domain experts not IT professionals, and this is forcing them to communicate their needs to IT developers. Spahn et al argue for the empowerment of users to customise software by providing an abstraction layer to hide technical details and allow for concentrating on business needs.

(Clarke) of Microsoft examines the characteristics of end-user developers in order to assist with meeting their needs. (Fischer) hypothesises that this emphasis on end-user development also changes the emphasis on testing “Software testing is conducted differently. Because domain expert developers themselves are the primary users, complete testing is not as important as in the case when the developers are not the users.”

References

End-User Software Engineering – Dagstuhl Seminar – Summary – http://www.dagstuhl.de/en/program/calendar/semhp/?semnr=2007081 – PDF Abstracts and links to papers – http://eusesconsortium.org/docs/dagstuhl_2007.pdf – Margaret M. Burnett, Gregor Engels, Brad A. Myers and Gregg Rothermel – From 18.01.07 to 23.02.07, the Dagstuhl Seminar 07081 End-User Software Engineering was held in the International Conference and Research Center (IBFI), Schloss Dagstuhl. During the seminar, several participants presented their current research, and ongoing work and open problems were discussed.

Abraham, R., Erwig, M., 2007. Exploiting Domain-Specific Structures For End-User Programming Support Tools. In: End-User Software Engineering Dagstuhl Seminar.

Begel, A., 2007. End User Programming for Scientists: Modeling Complex Systems. In: End-User Software Engineering Dagstuhl Seminar.

Blackwell, A., 2007. Interdisciplinary Design Research for End-User Software Engineering. In: End-User Software Engineering Dagstuhl Seminar.

Burnett, M. M., Engels, G, Myers, B. A., Rothermel, G., 2007. End-User Software Engineering Dagstuhl Seminar.

Clarke, S., 2007. What is an End User Software Engineer?. In: End-User Software Engineering Dagstuhl Seminar.

Costabile, M. F., Piccinno, A., 2007. Software environments for supporting End-User Development. In: End-User Software Engineering Dagstuhl Seminar.

Coutaz, J., 2007. Meta-User Interfaces for Ambient Spaces: Can Model-Driven-Engineering Help?. In: End-User Software Engineering Dagstuhl Seminar.

De Souza, C., 2007. Designers Need End-User Software Engineering. In: End-User Software Engineering Dagstuhl Seminar.

Dittrich, Y., 2007. Rethinking the Software Life Cycle: About the Interlace of Different Design and Development Activities. In: End-User Software Engineering Dagstuhl Seminar.

Engels, G., 2007. Model-Driven Development for End-Users, too!? In: End-User Software Engineering Dagstuhl Seminar.

Fischer, G., 2007. Meta-Design: A Conceptual Framework for End-User Software Engineering. In: End-User Software Engineering Dagstuhl Seminar.

Gross, M. D., 2007. Designers Need End-User Software Engineering. In: End-User Software Engineering Dagstuhl Seminar.

Ko, A. J., 2007. Barriers to Successful End-User Programming. In: End-User Software Engineering Dagstuhl Seminar.

Lieberman, H., 2007. End-User Software Engineering Position Paper. In: End-User Software Engineering Dagstuhl Seminar.

Repenning, A., 2007. End-User Design. In: End-User Software Engineering Dagstuhl Seminar.

Rosson, M. B., 2007. Position paper for EUSE 2007 at Dagstuhl. In: End-User Software Engineering Dagstuhl Seminar.

Segal, J., 2007. End-User Software Engineering and Professional End-User Developers. In: End-User Software Engineering Dagstuhl Seminar.

Spahn, M., Scheidl, S., Stoitsev, T., 2007. End-User Development Techniques for Enterprise Resource Planning Software Systems. In: End-User Software Engineering Dagstuhl Seminar.

Software Engineering and the Intelligence Community – Setting Real Time Standards

Posted on October 7, 2017 in Uncategorized

Software engineering is an essential discipline when designing and implementing high performance data enterprises. Although software engineers are not certified or sanctioned by any standards body, use of software engineers with experience in the Intelligence Community increases chances of success.

Software Engineering Defined

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software. (Source Wikipedia)

Knowledge of programming is the main pre-requisite to becoming a software engineer, but it is not sufficient. Many software engineers have degrees in Computer Science or mathematics and physics due to the lack of software engineering programs in higher education. An organized mind and an interest in problem solving are also prerequisites.

However, as data networks become more complex and indispensable in large organizations higher education has started to change with the introduction of new software engineering degrees, especially in post-graduate education.

Software Engineering as a Discipline

Software engineering contains a number of separate yet interrelated disciplines.

* Software requirements

* Software design

* Software development

* Software testing

* Software maintenance

* Software configuration management

* Software engineering management, see also project management

* Software development process

* Software engineering tools and Computer Aided Software Engineering

* Software quality

* Social Software Engineering

Each sub discipline has its own performance requirements and processes for success.

Jobs in Software Engineering – A Strong Market

Because the field of software engineering is broad and growing more complex because of the introduction of new technologies and applications, the potential for job growth is significant even in a down economy.

According to the Federal Government studies, the demand for qualified software engineers is significant and will continue to grow,

  • Computer software engineers are one of the occupations projected to grow the fastest and add the most new jobs over the 2006-16 decade.
  • Excellent job prospects are expected for applicants with at least bachelor’s degree in computer engineering or computer science and with practical work experience.
  • Computer software engineers must continually strive to acquire new skills in conjunction with the rapid changes that occur in computer technology.

Because computer networks and computing hardware and software are growing in power and complexity, the demand for qualified Software engineers is high. As the United States continues to be an information driven society new, high paying jobs with quality benefit packages are available in the economy.

This is particularly true as the economy emerges from its depressed state.

Employment of computer software engineers is projected to increase by 38 percent over the 2006 to 2016 period, which is much faster than the average for all occupations. This occupation will generate about 324,000 new jobs, over the projections decade, one of the largest employment increases of any occupation.

Significant drivers of growth in the demand for software engineers include adoption of new technologies for information efficiency in a competitive environment. This is particularly true as information networks grow in sophistication and interconnect.

In addition, information security concerns and cyber threats have given rise to new software requirements.

Concerns over “cyber security” will result in businesses and government continuing to invest heavily in software that protects their networks and vital electronic infrastructure from attack. Cyber Security has become a major area of concern for the U,S, Department of Defense and the Intelligence Community.

Very few organizations are willing to trust the security of their networks to low cost, offshore software engineering firms.

Finally, in economic and competitive terms low cost offshore outsourcing is not a real threat because software engineering requires innovation and intense research and development expenditures. (Source: Bureau of Labor Statistics)

One area with a tremendous appetite for software engineers is the Federal Government. The Federal Government continues to grow and, with the present trend in Government spending, greater demand for IT and Cyber Security engineering specialists will also generate job demand..

Ensuring Quality Standards – A Problem

While there is tremendous demand for engineering professionals, the systems and networks designed and implemented by software engineers are often the heart of any large business of government enterprise. Quality and efficiency cannot be sacrificed by substandard performance.

Many who call themselves “Software Engineer” are not fully qualified and often produce low quality work output.

Many professions enforce quality standards through professional certification boards but professional certification of software engineers is confusing and, while many view it as a tool to improve professional practice, others consider it as an unnecessary encumbrance.

In the United States, most certification programs in the IT industry are oriented toward specific technologies, and are managed by the vendors of these technologies.

No matter which way the debate goes, full accreditation will not serve as a quality standard backstop for software engineers in the foreseeable future so other, on the job standards, must be used to ensure engineering quality.

Documented past performance that is favorable or a history of software development in a demanding industry has now become a major factor to determine future success.

Software Engineering and the Intelligence Community – Real Time Certification

With the absence of any standard certification programs, employers and government service contractors must exercise great care when utilizing software engineers.to design or restore critical network or enterprise software.

Because networks and the software that run them are becoming more critical to business operations and more complex, the chances of an inexperienced or unqualified software engineer irrevocably damaging all or part of the network has increased.

One major error by an unqualified engineer could ruin an entire networking enterprise and bring down an organization. This is particularly true for large government.agencies tasked with the collection and processing of sensitive data.

Of all Federal Government agencies, a case can be made that the Intelligence Community [http://www.intelligence.gov/1-members.shtml] is the most demanding and discriminating when it comes to software engineering. This level of excellence requirement is because of the size of the data networks involved and the mission requirements to ensure national security.

In addition to the mission critical demands of each agency and its clients for real time data, continuous, massive amounts of sensitive data are collected on a 24×7 basis.

This data must be processed, analyzed, protected and disseminated in an efficient way that protects national security interests. Data protection and cyber security are new challenges to the software engineer and place additional performance demands..

A design flaw in the architecture of a network could be fatal for the entire collection system and and the introduction of a virus or other cyber breach could crash the entire system.

Because of the classified/sensitive nature of the data collected in the Intelligence Community high level security clearances are also required and this places further burdens on the integrity of the individual.

Servicing the needs of the Intelligence Community is a demanding task but the experience will test the skills, work ethic and judgment of even the most seasoned software engineer. Thus engineers with IC experience command a premium wage and benefits based upon proving themselves capable,

When a formal certification is not available, broad and extensive software engineering experience in the Intelligence Community on a job candidate’s resume is often a valuable real time substitute.

Top