CT610 Software Engineering: Roles, History, and Current Trends NUI

Verified

Added on  2023/04/08

|9
|1821
|347
Report
AI Summary
This report provides a comprehensive analysis of the roles of software engineers and programmers, highlighting their differences in education, job responsibilities, and involvement in the software development lifecycle. It discusses the evolution of software engineering from its origins in the 1940s to the present day, including the "software crisis" and the search for a "silver bullet." The report also examines current trends in software engineering, such as the impact of the internet, artificial intelligence, and virtual reality. Furthermore, it outlines the roles of software architects, analysts, developers, and testers, and how these roles have evolved over time. The assignment concludes that software engineering is rapidly evolving, requiring continuous education and adaptation to new technologies, with Desklib offering resources for students to stay updated.
Document Page
CT610-Alan Burke Wk1
Diploma in Software Engineering
Student Name: Alan Burke
NUI Galway ID Number: 04417461
Course: CT610- Software Engineering
Workshop No: Week 01
Assignments: Question 1&2
Date of Submission: 20.01.19
1
tabler-icon-diamond-filled.svg

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
CT610-Alan Burke Wk1
Question 1
A software engineer is responsible for the full life cycle of a software product from the design,
research, training, support and implementation. The main tasks performed by a software engineer
include:
Research, designing, developing and testing OS level of software
Modify existing software’s to repair errors or to improve performance
Designing standards for a system to follow whilst preparing and developing solutions
Analyses user needs and their software requirements to match this
Consulting with the customer regarding system maintenance and design
Designing the software that best suits the feedback from the customer
Supervising the work of programmers, other engineers, technicians and team members
Software engineers and developers are often interchangeable titles in the IT industry, sometimes
giving the title of engineer to a person with the duties of a developer. (Gupta, 2017)
A software programmer often referred to as developer also receives specifications from an engineer
and turns the program design into written instruction codes. This code is designed for a computer to
be able to follow. The programmer must be an expert in coding languages such as C++, Java and
Python. They need to be able to debug, expand, edit and upgrade existing code of a project and be
able to identify and rectify errors. The programmer uses code libraries to simplify writing and is
more often working with engineers nowadays with certain duties intertwined. These include
program design and user need requirements (Raphael, 2016). The programmer cannot be defined as
a developer also as the developer may have coding as just a specific part of their responsibilities. The
developer may have other roles such as documenting features and conceptual analysis (Kim, 2018).
Differences between software engineers and programmers
Education:
Software programmers and engineers can have similar levels of education. They will often both earn
degrees in computer science, software engineering and programming. As part of this they will learn
programming languages such as C++, Java and python. Both professions will share a lot of
similarities. Sometimes the differences can lie in the extent of their education. The programming
does not always need to possess a third level qualification but the engineer will be required to have
2
Document Page
CT610-Alan Burke Wk1
this. The programmer may be exclusively educated in writing code and not the other parts of the
software development cycle. However the engineer will need to understand the process of software
engineering and how to apply it on a developmental project. (Gupta, 2017)
Job responsibilities:
In terms of a project the software engineer is involved In the whole process of development. Unlike
the programmer the engineer will be applying the principles of engineering to the software
development. Along with the coding the programmer completes there is a requirement to complete
a process of software and analysis. (Gupta,2017) The programmer may build the project from the
ground up whereas the engineer will keep in touch with the client and all else that’s included in the
planning of the process. (Gupta, 2017)
The diagram below illustrates the differences in the two roles and how they both fit in the overall
project:
Source: https://www.kttpro.com/2017/02/07/difference-between-a-software-engineer-an-
application-developer-and-a-computer-programmer/
3
Document Page
CT610-Alan Burke Wk1
In conclusion the difference between programmers and engineers are that the engineer oversees
the project and the programmer is mainly working on the creating of a functional program. Both
often work alongside each other throughout the stages of a software project.
4
tabler-icon-diamond-filled.svg

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
CT610-Alan Burke Wk1
References Question 1
Kim, M (2018) Programmer Vs Developer Vs Engineer Available:
https://medium.com/shakuro/programmer-vs-developer-vs-engineer-91ef374e5033 [accessed
20.1.19]
Gupta,K (2017) What is the difference between a software engineer and a software developer
Available: https://www.freelancinggig.com/blog/2017/05/02/difference-software-engineer-
software-developer/ [accessed 20.1.19]
Raphael, M (2016) Software engineer vs computer programmer: what’s the difference? Available:
https://www.electronicproducts.com/Education/Career/
Software_engineer_vs_computer_programmer_what_s_the_difference.aspx [accessed 20.1.19]
https://www.computersciencedegreehub.com/faq/what-is-the-difference-between-software-
engineering-and-software/ [accessed 19.1.19]
https://www.kttpro.com/2017/02/07/difference-between-a-software-engineer-an-application-
developer-and-a-computer-programmer/ [accessed 20.1.19]
5
Document Page
CT610-Alan Burke Wk1
Question 2
Software engineering is defined by Somerville (2016,p.21) as “an engineering discipline that is
concerned with all the aspects of software production from the early stages of system specification
through to maintaining the system after it has gone into use”.
History of software engineering
Software engineering has gradually evolved from its founding in the 1940’s to the present day.
Applications have evolved continuously. The ongoing goal of software engineers is to improve
technology/practices and productivity. By doing so the quality of application for users has been seen
to be improved. From 1945- 1960 we had the origins of software engineering. The term itself first
came about somewhere around the late 1950’s. ( https://www.lingq.com/lesson/the-history-of-
software-engineering-10892/)
The NATO Science Committee funded two conferences on software engineering in 1968 and 1969
which gave the area an initial boost. Some believe this was the start of the profession. From these
conferences the term software crisis was coined. Software engineering was driven on by this
software crisis which identified many problems in software development. During the period of 1968-
1985 many software projects ran over deadlines and budgets. Some projects caused property
damage and loss of life. When originally coined, the crisis was about productivity but this evolved
into a crisis of quality also. (https://www.lingq.com/lesson/the-history-of-software-engineering-
10892/)
An example of the property damage that was caused by a software defect could be seen when the
expensive European Ariane rocket exploded. Software defects can also kill for example when
radiotherapy machines worth embedded systems administered lethal doses of radiation to patients.
It is unrealistic to think that we could remain in a crisis as it has to be accepted that engineers can
only work to solve and prevent problems. https://www.lingq.com/lesson/the-history-of-software-
engineering-10892/
The Silver Bullet philosophy was touted by researchers from the 1970’s to the 1990’s. New
technologies in this era were being trumpeted as a solution to the software crisis. Lots of tools
(structure programming, object orientated programming, Ada, standards, documentation) were
suggested to be silver bullets. Some argued the crisis was as a result of lack of discipline by
programmers. Attempts were made to improve professionalism by working on codes of ethics and
licences for programmers. Eventually most accepted that no silver bullet would ever be found,
6
Document Page
CT610-Alan Burke Wk1
however this theories still pop up nowadays. Over time it has been recognised that new
technologies and practices have made improvements to professionalism, productivity and quality of
software engineering. (https://www.lingq.com/lesson/the-history-of-software-engineering-10892/)
In other developments the cost of hardware has changed substantially over the years. In the past
software projects and mainframes in particular were extremely expensive and required large
numbers of support staff. Nowadays powerful PC’s are economical and therefore making software
projects cheaper. (https://www.lingq.com/lesson/the-history-of-software-engineering-10892/)
Other changes have happened which will be discussed by looking at the current state of software
engineering.
Current State
Some current trends in software engineering currently include:
Internet in Software Engineering:
Since 2000 the Web has evolved which meant browsers have continually developed functionality.
This had led to the development of many products that deliver innovative services over the internet.
Because of the web software is now highly distributed. Web based systems are continually growing
so software engineering techniques are having to evolve also. (Sommerville, 2016)
Artificial Intelligence:
AI promises to change how organisations will conduct their business and make applications. It is
transforming software design and testing. For example the Artificial Intelligence Design Assistant)
AIDA is a website building platform using AI. It can make a selection from multiple combinations and
design a website in under two minutes. AI when trained right can be used to test software and
ensure that it is error free (Dsouza, 2018)
Virtual Reality:
VR enable software engineers to be surrounded by a 3D workspace rather than the limitations of a
2D work screen. VR also stimulates interaction that offers much more freedom than the generic
keyboard and mouse. The interactions of VR take more advantage of the human body that has
shown to increase creativity, lower learning curves and increase user satisfaction (Elliot, 2015)
Roles in Software Engineering and how they have evolved
7
tabler-icon-diamond-filled.svg

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
CT610-Alan Burke Wk1
Software Architect: This person is someone who makes high level decisions and dictates the
technical standards of a project. They may decide on the coding standards, tools and platforms being
used. The architect needs to have a broad technical knowledge with strong analytical skills. This
person will often manage a project. It is probably one role that is not always very clearly defined in
the profession (Ashanin, 2017).
Analysts: This person is responsible for checking computer programs to ensure they meet the
demands of the user. They act like a quality control specialist on the development team. An analyst
goes through everything to ensure it meets the correct standards before a project is completed. The
analyst needs to possess knowledge of programming languages, computer systems and hardware.
This person often acts as a link between the IT and business side of a company.
(http://www.businessresearchguide.com/faq/what-is-a-software-analyst/)
Developers: A software developer oversees everything involved in making a piece of software
functional. There are two types, system software developers and application software developers. A
system developer creates the software that makes a device or computer run. An application
developer designs software or programs such as spreadsheets, databases, word processors and
games. It is one of the fastest growing roles in the software engineering industry. (McKay, 2019)
Testers: A software tester plays an influential role in application development. They are the quality
assurance specialist who ensures an application has no bugs, performance issue, errors etc before
the project is completed. Testers are often brought in at the planning and design stage as their role
in the ensuring its a quality product is so important to creating a successful application. Nowadays a
lot of software is put through development and operations (DevOps) teams. For these teams
development, testing and delivery are all completed concurrently. The software tester is the link
between the development team and the customer as they ensure the product being received by the
customer is looking good and working well. (Tittel et al, 2018)
In conclusion it can be seen that software engineering is evolving at a rapid rate and much changes
have had to be made to keep up with this. Education is key to the development of the industry going
forward as technology moves forward at an accelerated rate.
8
Document Page
CT610-Alan Burke Wk1
References
Question 2
Ashinan, N (2017) The Path to Becoming a Software Architect available:
https://medium.com/@nvashanin/the-path-to-becoming-a-software-architect-
de53f1cb310a [accessed 19.1.19]
Dsouza, M ( 2018) 5 ways artificial intelligence is upgrading software engineering available:
https://hub.packtpub.com/5-ways-artificial-intelligence-is-upgrading-software-engineering/
[accessed 19.1.19]
Elliot, A (2015) Using Virtual Reality to Create Software : A Likely Future available:
https://medium.com/@anthonyE_vr/using-virtual-reality-to-create-software-a-likely-future-
9c4472108289 [accessed 18.1.19]
McKay, D (2019) The role of a software developer available:
https://www.thebalancecareers.com/software-developer-526192
Sommerville, I (2016) Software Engineering (10th ed.) Harlow: Pearson Education
Tittel, E and Lindros, K (2018) How to become a software tester available:
https://www.businessnewsdaily.com/10761-how-to-become-a-software-tester.html [accessed
19.1.19]
http://www.businessresearchguide.com/faq/what-is-a-software-analyst/ [accessed 19.1.19]
https://www.lingq.com/lesson/the-history-of-software-engineering-10892/ [accessed 18.1.19]
9
chevron_up_icon
1 out of 9
circle_padding
hide_on_mobile
zoom_out_icon
[object Object]