A Software Engineer
Abbasqulu Allahverdili
What is Engineering?
• Engineering is the creative application of mathematical methods,
science and empirical evidence to the innovation, design and
construction of the materials facilitating the people’s lives
Who is an Engineer?
• Individuals who combine knowledge of science, mathematics and economics to solve
technical problems that confront society.
• Engineer ‐ Applies knowledge of math and the physical sciences to the efficient design
and construction of usable devices, structures and processes.
The reasons to become an Engineer
• Engineers are in demand:
You will be welcomed with open arms. Engineers and technicians are the most in-demand
jobs in the world.
• Engineers are paid well:
It is not often you can earn a great wage for doing a job that you really love.
• Engineers make a difference
Do something you are passionate about whilst travelling the world, improving people’s
lives, helping to solve some of the world’s big problems and working with some of the
most interesting people on the planet.
What is Software Engineering?
• Software engineering is the application of engineering to the development of software in a systematic
method.
Software Engineering: History
• The term 'software engineering' was suggested to discuss at conferences organized by NATO in 1968
and 1969 to discuss the 'software crisis'. The software crisis was the name given to the difficulties
encountered in developing large, complex systems in the 1960s.
The principles of Software Engineering
• Separation of Concerns
• Modularity
• Abstraction
• Anticipation of Change
• Generality
• Incremental Development
• Consistency
Who is a Software Engineer?
• A software engineer is a person who applies the principles of
software engineering to design, development, maintenance,
testing, and evaluation of computer software.
The reasons to become Software Engineer
1. They are inspired by how technology is changing the world, disrupting
industries and igniting social change.
2. They enjoy creating things and the process of building software applications lets
them express themselves creatively.
3. They enjoy working with other bright, motivated engineers who share their
passion.
4. They like a solid career path with good earning potential and a solid career
ladder.
Requirements of being Software Engineer
• The bachelor degree is mandatory. Those, working with applications, typically major in
software engineering, computer science, or mathematics.
The Areas of Software Engineers
• A software engineer applies mathematical analysis and the principles of computer
science to design and develop computer software. There are many types of software
that a software engineer can develop, such as operating systems, middleware or
business applications. Changes in technology and new areas of specialization keeps
this profession evolving at a rapid pace.
The working areas of Software Engineers
• Software engineers can work in computer system design firms or electronic product
manufacturing companies. Some are employed by software publishers or in
applications development offices, such as insurance carriers and corporate institutions.
Some software engineers are self-employed and contract their expertise to short-term
employers.
The working areas of Software Engineers
• Software engineers can work for government agencies, non-profit organizations, and
businesses, either as employees or as contractors. They typically work in comfortable
settings, but it is sometimes a stressful job that involves long hours and tight
deadlines.
Difference between Computer Science and Software Engineering
• Computer Science (CS)
Computer Science (CS) focuses on understanding, designing,
and developing programs and computers. At its core, Computer
Science concentrates on data, data transformation, and
algorithms. Advanced courses present specialized programming
techniques and specific application domains. The CS program is
less structured than the CE and SE programs, giving students
more flexibility to build depth or breadth in a variety of application
domains or in the fundamentals of Computer Science.
• Software Engineering (SE)
Software Engineering (SE) deals with building and maintaining
software systems. It is more software-oriented and has a greater
emphasis on large software applications than Computer
Engineering. It is more applied than Computer Science, placing
greater emphasis on the entire software development process,
from idea to final product. It is also more disciplined than
Computer Science, applying more systematic practices to help
ensure that products are reliable and safe.
Pros and Cons of being Software Engineer
• Pros:
1. Your skills are always highly in demand anywhere in
the world.
2. Huge opportunity to start your own startup as you are
at the forefront of the technical skills needed to build
new ideas into viable products.
3. The pay is typically pretty great, especially after your
first couple of years of experience.
• Cons:
1. Unhealthy lifestyle
2. Hard brain work. Sometimes, the work you do will be
very challenging and require thinking through
complicated problems and investigating their solutions.
The work can get stressful. Moreover, the potential for
small human error on your part, completely derailing a
system, means that you own a lot of responsibility for
the overall quality of your work.
A Software Engineer Responsibilities:
• Developing and directing software system validation and testing methods.
• Overseeing the development of documentation.
• Working closely with clients to communicate project statuses and proposals.
• Analyzing data to effectively coordinate the installation of new systems or the modification of existing
systems.
• Monitoring system performance.
• Communicating key project data to team members and building cohesion among teams.
• Developing and executing project plans.
• Testing new software and fixing bugs.
The Most Popular Software Development Methodologies
• Waterfall development methodology
• Rapid application development methodology
• Agile development methodology
• DevOps deployment methodology
Waterfall Development Methodology
• The waterfall method is considered the traditional software development method. It is a rigid linear model that
consists of sequential phases in which distinct goals are accomplished. Each phase must be 100% complete before
the next phase can start, and traditionally there is no process for going back to modify the project or direction.
• Pros: The linear nature of this method makes it easy to understand and manage. Projects with clear objectives and
stable requirements can best use the waterfall method. Less experienced project managers, project teams, and
teams whose composition changes frequently can benefit the most from using the waterfall development
methodology.
• Cons: It is often slow and costly due to the rigid structure and tight controls. These drawbacks led waterfall method
users to explore other software development methodologies.
Rapid Application Development Methodology
• Rapid application development (RAD) is a condensed development process that produces a high-quality system with
low investment costs. Scott Stiner, CEO and president of UM Technologies, said, “This RAD process allows our
developers to quickly adjust to shifting requirements in a fast-paced and constantly changing market.” The ability to
quickly adjust allows such a low investment cost.
• Pros: RAD is most effective for projects with a well-defined business objective and a clearly defined user group, but
which are not computationally complex. It is especially useful if the project is of small to medium size and time
sensitive.
• Cons: It requires a stable team composition with highly skilled developers and users who are deeply knowledgeable
about the application area.
Agile Sevelopment Methodology
• There are many different forms of the agile development method, including scrum, crystal, extreme programming
(XP), and feature-driven development (FDD).
• Pros: Agile method attempt to minimize risk (such as bugs, cost overruns, and changing requirements) when adding
new functionality by developing the software in iterations that are mini-increments of the new functionality. The
benefit of multiple iterations is that it improves efficiency by finding and fixing defects and expectation mismatches
early on.
• Cons: Agile methods rely on real-time communication, which fails to provide new users with documentation to get up-
to-speed. They require a huge time commitment from users and are labour-intensive, because developers must fully
complete each feature within each iteration for user approval. Users realize software benefits early on owing to the
incremental addition of the iterations.
DevOps Deployment Methodology
• DevOps deployment is centered on organizational change that enhances the collaboration between the departments
responsible for different segments of the development life cycle, such as development, quality assurance, and
operations.
• Pros: DevOps is focused on improving time to market, lowering the failure rate of new releases, shortening the lead
time between fixes, and prioritizing minimal disruption and maximum reliability. To achieve this, DevOps aims to
automate continuous deployment to ensure everything happens smoothly and reliably. Companies that use DevOps
have benefited by significantly reducing the time to market and improving customer satisfaction, product quality, and
employee productivity and efficiency.
• Cons:
1. Some customers don’t want continuous updates to their systems.
2. Some industries have regulations that require extensive testing before a project can move to the operations phase.
3. Different environments used in the different departments can allow undetected issues to slip into production.
4. Some quality attributes require human interaction, which slows down the delivery pipeline.
Version control
• Version control is a system that records changes to a file
or set of files over time so that you can recall specific
versions later. For example, you will use the software
source code as the files being version controlled, though,
in reality, you can do this with nearly any type of file on a
computer.
Centralized Version Control
• Centralized version control systems are based on the idea that there is a single “central” copy of your project
somewhere on a server, and programmers will “commit” their changes to this central copy.
• “Committing” a change simply means recording the change in the central system. Other programmers can then see
this change. They can also pull down the change, and the version control tool will automatically update the contents
of any files that were changed.
• Programmers no longer have to keep many copies of files on their hard drives manually, because the version control
tool can talk to the central copy and retrieve any version they need on the fly.
• Some of the most common centralized version control systems are CVS, Subversion (or SVN) and Perforce.
A Software Engineer

A Software Engineer

  • 1.
  • 2.
    What is Engineering? •Engineering is the creative application of mathematical methods, science and empirical evidence to the innovation, design and construction of the materials facilitating the people’s lives
  • 3.
    Who is anEngineer? • Individuals who combine knowledge of science, mathematics and economics to solve technical problems that confront society. • Engineer ‐ Applies knowledge of math and the physical sciences to the efficient design and construction of usable devices, structures and processes.
  • 4.
    The reasons tobecome an Engineer • Engineers are in demand: You will be welcomed with open arms. Engineers and technicians are the most in-demand jobs in the world. • Engineers are paid well: It is not often you can earn a great wage for doing a job that you really love. • Engineers make a difference Do something you are passionate about whilst travelling the world, improving people’s lives, helping to solve some of the world’s big problems and working with some of the most interesting people on the planet.
  • 5.
    What is SoftwareEngineering? • Software engineering is the application of engineering to the development of software in a systematic method. Software Engineering: History • The term 'software engineering' was suggested to discuss at conferences organized by NATO in 1968 and 1969 to discuss the 'software crisis'. The software crisis was the name given to the difficulties encountered in developing large, complex systems in the 1960s.
  • 6.
    The principles ofSoftware Engineering • Separation of Concerns • Modularity • Abstraction • Anticipation of Change • Generality • Incremental Development • Consistency
  • 7.
    Who is aSoftware Engineer? • A software engineer is a person who applies the principles of software engineering to design, development, maintenance, testing, and evaluation of computer software.
  • 8.
    The reasons tobecome Software Engineer 1. They are inspired by how technology is changing the world, disrupting industries and igniting social change. 2. They enjoy creating things and the process of building software applications lets them express themselves creatively. 3. They enjoy working with other bright, motivated engineers who share their passion. 4. They like a solid career path with good earning potential and a solid career ladder.
  • 9.
    Requirements of beingSoftware Engineer • The bachelor degree is mandatory. Those, working with applications, typically major in software engineering, computer science, or mathematics.
  • 10.
    The Areas ofSoftware Engineers • A software engineer applies mathematical analysis and the principles of computer science to design and develop computer software. There are many types of software that a software engineer can develop, such as operating systems, middleware or business applications. Changes in technology and new areas of specialization keeps this profession evolving at a rapid pace.
  • 11.
    The working areasof Software Engineers • Software engineers can work in computer system design firms or electronic product manufacturing companies. Some are employed by software publishers or in applications development offices, such as insurance carriers and corporate institutions. Some software engineers are self-employed and contract their expertise to short-term employers.
  • 12.
    The working areasof Software Engineers • Software engineers can work for government agencies, non-profit organizations, and businesses, either as employees or as contractors. They typically work in comfortable settings, but it is sometimes a stressful job that involves long hours and tight deadlines.
  • 13.
    Difference between ComputerScience and Software Engineering • Computer Science (CS) Computer Science (CS) focuses on understanding, designing, and developing programs and computers. At its core, Computer Science concentrates on data, data transformation, and algorithms. Advanced courses present specialized programming techniques and specific application domains. The CS program is less structured than the CE and SE programs, giving students more flexibility to build depth or breadth in a variety of application domains or in the fundamentals of Computer Science. • Software Engineering (SE) Software Engineering (SE) deals with building and maintaining software systems. It is more software-oriented and has a greater emphasis on large software applications than Computer Engineering. It is more applied than Computer Science, placing greater emphasis on the entire software development process, from idea to final product. It is also more disciplined than Computer Science, applying more systematic practices to help ensure that products are reliable and safe.
  • 14.
    Pros and Consof being Software Engineer • Pros: 1. Your skills are always highly in demand anywhere in the world. 2. Huge opportunity to start your own startup as you are at the forefront of the technical skills needed to build new ideas into viable products. 3. The pay is typically pretty great, especially after your first couple of years of experience. • Cons: 1. Unhealthy lifestyle 2. Hard brain work. Sometimes, the work you do will be very challenging and require thinking through complicated problems and investigating their solutions. The work can get stressful. Moreover, the potential for small human error on your part, completely derailing a system, means that you own a lot of responsibility for the overall quality of your work.
  • 15.
    A Software EngineerResponsibilities: • Developing and directing software system validation and testing methods. • Overseeing the development of documentation. • Working closely with clients to communicate project statuses and proposals. • Analyzing data to effectively coordinate the installation of new systems or the modification of existing systems. • Monitoring system performance. • Communicating key project data to team members and building cohesion among teams. • Developing and executing project plans. • Testing new software and fixing bugs.
  • 16.
    The Most PopularSoftware Development Methodologies • Waterfall development methodology • Rapid application development methodology • Agile development methodology • DevOps deployment methodology
  • 17.
    Waterfall Development Methodology •The waterfall method is considered the traditional software development method. It is a rigid linear model that consists of sequential phases in which distinct goals are accomplished. Each phase must be 100% complete before the next phase can start, and traditionally there is no process for going back to modify the project or direction. • Pros: The linear nature of this method makes it easy to understand and manage. Projects with clear objectives and stable requirements can best use the waterfall method. Less experienced project managers, project teams, and teams whose composition changes frequently can benefit the most from using the waterfall development methodology. • Cons: It is often slow and costly due to the rigid structure and tight controls. These drawbacks led waterfall method users to explore other software development methodologies.
  • 18.
    Rapid Application DevelopmentMethodology • Rapid application development (RAD) is a condensed development process that produces a high-quality system with low investment costs. Scott Stiner, CEO and president of UM Technologies, said, “This RAD process allows our developers to quickly adjust to shifting requirements in a fast-paced and constantly changing market.” The ability to quickly adjust allows such a low investment cost. • Pros: RAD is most effective for projects with a well-defined business objective and a clearly defined user group, but which are not computationally complex. It is especially useful if the project is of small to medium size and time sensitive. • Cons: It requires a stable team composition with highly skilled developers and users who are deeply knowledgeable about the application area.
  • 19.
    Agile Sevelopment Methodology •There are many different forms of the agile development method, including scrum, crystal, extreme programming (XP), and feature-driven development (FDD). • Pros: Agile method attempt to minimize risk (such as bugs, cost overruns, and changing requirements) when adding new functionality by developing the software in iterations that are mini-increments of the new functionality. The benefit of multiple iterations is that it improves efficiency by finding and fixing defects and expectation mismatches early on. • Cons: Agile methods rely on real-time communication, which fails to provide new users with documentation to get up- to-speed. They require a huge time commitment from users and are labour-intensive, because developers must fully complete each feature within each iteration for user approval. Users realize software benefits early on owing to the incremental addition of the iterations.
  • 20.
    DevOps Deployment Methodology •DevOps deployment is centered on organizational change that enhances the collaboration between the departments responsible for different segments of the development life cycle, such as development, quality assurance, and operations. • Pros: DevOps is focused on improving time to market, lowering the failure rate of new releases, shortening the lead time between fixes, and prioritizing minimal disruption and maximum reliability. To achieve this, DevOps aims to automate continuous deployment to ensure everything happens smoothly and reliably. Companies that use DevOps have benefited by significantly reducing the time to market and improving customer satisfaction, product quality, and employee productivity and efficiency. • Cons: 1. Some customers don’t want continuous updates to their systems. 2. Some industries have regulations that require extensive testing before a project can move to the operations phase. 3. Different environments used in the different departments can allow undetected issues to slip into production. 4. Some quality attributes require human interaction, which slows down the delivery pipeline.
  • 21.
    Version control • Versioncontrol is a system that records changes to a file or set of files over time so that you can recall specific versions later. For example, you will use the software source code as the files being version controlled, though, in reality, you can do this with nearly any type of file on a computer.
  • 22.
    Centralized Version Control •Centralized version control systems are based on the idea that there is a single “central” copy of your project somewhere on a server, and programmers will “commit” their changes to this central copy. • “Committing” a change simply means recording the change in the central system. Other programmers can then see this change. They can also pull down the change, and the version control tool will automatically update the contents of any files that were changed. • Programmers no longer have to keep many copies of files on their hard drives manually, because the version control tool can talk to the central copy and retrieve any version they need on the fly. • Some of the most common centralized version control systems are CVS, Subversion (or SVN) and Perforce.