Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

SYSTEM INTEGRATION AND ARCHITECTURE 2 MODULE 1

What is Software Engineering?

The term software engineering is the product of two words, software, and
engineering.

The software is a collection of integrated programs.

Software subsists of carefully-organized instructions and code written by


developers on any of various particular computer languages.

Computer programs and related documentation such as requirements, design


models and user manuals.

Engineering is the application of scientific and practical knowledge to invent,


design, build, maintain, and improve frameworks, processes, etc.

Software engineering is a systematic set of best practices and strategies for


program development. Research breakthroughs have resulted in effective
program development methodologies. Years of programming expertise have
taught programmers valuable things. It is a method for software development
that is both systematic and cost-effective. These strategies aid in the
engineering development of software.

Types of Software in Software Engineering

Types of Software:

1. System Software: It is a collection of programs written to service other


programs. Some system software (example- compilers, editors and file
management utilities). Some other system applications (operating system
components, drivers, networking software, telecommunications processors). In
either case, the system software area is characterized by heavy interaction
with computer hardware, heavy usage by multiple users, scheduling, resource
sharing, process management, complex data structure.

2. Application Software: It consists of standalone programs that solve a


specific business need. Applications in this area process business or technical
data in a way that facilitates business operations or management/technical
decision-making. Application software is mainly used to control business
functions in real-time.

3. Engineering/Scientific Software: Formerly characterized by “number


crunching” algorithms, engineering and scientific software applications range
from as tronomy to volacanology.

However, modern applications within the engineering/scientific area are


moving away from conventional numerical algorithm Computer-Aided Design
(CAD), System simulation has begun to take on real-time.

4. Embedded Software: Embedded Software resides within a product or


system and it is used to implement and control features and functions for the
end-user and for the system itself. Embedded Software can perform limited
and esoteric functions. It also provides significant function and control
capability (Example- Digital Function, Dashboard displays, cracking system,
etc).

5. Product-line Software: Designed to provide a specific Capability for use by


many different customers, product-line. The software can focus on a limited
and esoteric marketplace (Example- inventory control products) or address
mass consumer markets (Example – Word Processing, Spreadsheet, Computer
Graphics, Multimedia, entertainment, database management, personal and
business applications).
6. Web-Applications: “WebApps“, span a wide array of applications. In their
simplest form, WebApps can be little more than a set of linked hypertext files
that present information using text and limited graphics, such as- E-commerce
and B2B Applications. WebApps are evolving into sophisticated computing
functions and also are integrated with Corporate databases and business
applications.

7. Artificial Intelligence Software: AI software makes use of non-numerical


algorithms to solve complex problems that are not amenable to computations
or straight-forward analysis. These applications within this area include
robotics, expert systems, pattern recognition (image and voice), artificial
neural networks and game playing.

Software Engineering Layers

Software Engineering is a layered technology. It is the application of principles


used in the field of engineering, which usually deals with physical systems, to
the design, development, testing, deployment and management of systems.

The main objective of software engineering layers is to help software


developers obtain high-quality software. There are four types of layers in
Software Engineering such as – Tools, methods, process, and quality focus.

i. A quality focus: It is a culture that ultimately leads to the development


of software engineering. The bedrock that supports software
engineering, it says A quality focus.
ii. Process: According to Ivar Jacobson, A process defines who is doing
what, when and how to reach a certain goal. The software process
forms the basis for management control of software projects. It
establishes the context in which technical methods are applied for work
products are produced. Example: Models, Documents, Data, Reports,
Forms, etc.
iii. Methods: Software Engineering methods provide the technical “how
to’s for building software“. Methods encompass a broad array of tasks
that include communication, requirements analysis, design modelling,
program construction, testing and support.
iv. Tools: Software Engineering tools provide automated or semi-
automated support for the process and the methods. When tools are
integrated so that information created by one tool can be used by
another, a system for the support of software development is called
Computer-Aided Software Engineering.

Umbrella Activities

Umbrella activities are a set of steps or procedures that the software


engineering team follows to maintain the progress, quality, change and risks
of the overall software development process. The framework described in the
generic view of Software Engineering is complemented by several umbrella
activities.

i. Software Project tracking and control: It allows the software team to


assess progress against the project plan and take necessary action to
maintain the schedule.
ii. Formal Technical Reviews: It assesses software engineering work
products to uncover and remove errors before they are propagated to
the next action or activity.
iii. Software Quality Assurance: It defines and conducts the activities
required to ensure software quality. It is a methodology of checking
that software development process with a predefined set of standards.
iv. Software Configure Management: It is the task of tracking and
controlling changes in the software development part. It manages the
effects of change throughout the software process.
v. Documentation: At first, all the project planning and other activities
should be hard-copy document and then the production get started
here.
vi. Re-usability Management: It defines criteria for work product reuse
and establishes mechanisms to achieve reusable components.
vii. Measurement: It defines process, project and product measures that
assist the team in delivering software that meets customers needs, it
can be used in conjunction with all other frameworks.
viii. Risk Management: It assesses risks that may affect the outcome of the
project or the quality of the product.

Software Development Issues and Challenges

Developing software isn’t easy when technologies and industry standards are
constantly evolving.

Between the rapid pace of change, mounting pressure to accelerate digital


transformation, and the uncertain economic, social, and political climate as
well as finding and paying for skilled development talent, organizations have
their work cut out for them.

Below, we’ll take a look at the biggest challenges for software developers in
2021 and what they can do to overcome them.

1. Keeping Pace with Innovation

We’ve been talking about digital transformation for years at this point, but
many companies are still struggling to bring their systems and processes into
the 21st century.

Dealing with outdated technology is a huge concern: legacy systems are a


prime target for bad actors, end-users can’t locate information (and if they
can, it’s often inaccurate), organizations lose time and money to manual
processes and poor decisions. On-premise hosting is at odds with remote
work. And, of course, there’s all the missed opportunities hiding out in poorly-
managed datasets.

Research from McKinsey found that 45% of digital transformation projects


deliver lower returns than anticipated. There is a 45% chance that the average
digital transformation project will deliver less profit than expected.

• According to the firm, successful transformation initiatives require the


following:
• Clear priorities with a direct link to measurable business goals
• Mature Agile development practices
• Investments in the right talent—think data science, analytics, cloud,
AI/ML, etc.
• In a recent interview, Gartner’s Kristin Moyer brings up a critical point.

She says that “digital business is about using technology to create new
products, to create new business models, new operating models. And we
distinguish between optimization and transformation. Optimization is where
you’re using technology to improve customer engagement or sell more of
your existing product. It’s about doing old things in new ways.”

Optimization, of course, is critical, but it shouldn’t be confused with


transformation.

Transformation, Moyer says, is about doing “new things in new ways.” It’s
about using technology to create new business models, revenue streams, and
products that change things in your industry.
By treating the two as interchangeable terms, you may end up aiming too low
to achieve true transformation.

Beyond the initial transformation, you’ll also need to make sure you’re always
thinking several years ahead—preparing for, say, how you’ll eventually
incorporate quantum computing into your strategy, embrace blockchain,
whatever.

2. Cultural Change

Tiempo’s Rodolfo Carmona says the biggest change he’s seen in the software
development space has nothing to do with technology—which, by nature, is
always changing.

Rather, the biggest change is how teams work.

Today’s development teams rely on processes and organizational structures


that allow them to quickly adapt to constant change and shift the focus away
from plain innovation and instead zoom in on enhancing the user experience
and responding to customer needs.

He says, “one of the best practices companies are currently following is


making sure that every person on the team understands the software
development world is moving way too fast. That means that they need to
adapt to the culture quickly and learn to be more creative.”

Essentially, the dialog becomes more about working together to solve a high-
stakes problem.

While it may sound simple, changing internal processes and eliminating silos
is one of the biggest challenges for software developers—and organizations
in general. It’s also one of the most important: in order to maximize the value
of new tech initiatives, organizational culture needs to align with its strategy.
Without that alignment, it becomes impossible to develop organization-wide
data literacy, become truly customer-centric, or successfully use Agile and
DevOps practices to build new products.

The challenge with cultural change is that it has to come from the top and
everyone needs to buy in, or else it falls apart. CIOs/CTOs should start by
working with HR to determine what technology investments and structural
change needs to happen to support cultural change.

Then, focus on developing a communication plan that makes the case to


other stakeholders—likely department heads who can help champion new
initiatives and help their teams overcome resistance.

You might also try recruiting a small team to run a pilot project that
demonstrates value of cultural change through quick wins with a measurable
impact on business processes/performance.

3. Customer Experience

Tiempo’s Eddy Vidal Nunez says it’s critical that companies “develop a deep
understanding of the market and the importance of CI/CD and its role in the
customer experience.”

According to McKinsey, the future of CX hinges on… you guessed it,


developing a data-driven strategy. While the firm predicts that this process
will become easier thanks to the rise of user-friendly predictive analytics tools,
organizations still need to understand what they’re looking for and develop a
big data ecosystem for storing, securing, and surfacing insights to the right
person at the right time.
A few questions you’ll need to address to get started:

• What information do you need to collect?


• Do you currently own that information or will you need to invest in
additional tech to gain access to that info?
• If you do own the necessary data, is it integrated into a centralized
location?
• Can you verify its accuracy?
• What channels will you need to gather data from?
• How will you route that information back to the development team?
• How will insights be used to improve the experience?
• How will you know if your efforts were a success?

4. Data Privacy

Organizations need to factor data privacy laws into the development process
rather than treating it as an afterthought.

While this has always been important, the regulatory landscape is becoming
more complex. At the same time, customers are starting to pay close
attention to how companies use their information—and profit from it.

Part of the challenge is the ever-changing regulations that come with strict
non-compliance penalties.

Europe’s GDPR and California’s CCPA have been in place for a few years, and
California just passed stricter regulations for how consumer data is used,
extending the protections outlined in the CCPA. Virginia recently passed their
own legislation, and more states have bills making their way through the
pipeline.

Any business with customers in Europe, CA, VA, etc., must comply regardless
of the rules in place in their home state or country. Knowing this,
organizations must make sure their applications are easy to adapt as rules
change, and more requirements enter the fold.

As Tiempo’s Javier Trevino points out, managing your data privacy strategy
should start with understanding all rules and regulations as they relate to
your industry. He says, “industry verticals will define how PII should be
secured. In healthcare, there’s HIPAA; for payments, there’s PCI DSS.”

You’ll want to address those needs first. Otherwise, you could end up relying
on workarounds that don’t meet regulatory requirements.

Once you’ve landed on a solution, you can start focusing on meeting the
general requirements. From there, you can develop a plan that ensures
complete transparency, tightly-controlled data flows, and includes data
protections, like encryption, VPNs, and more.

5. Cybersecurity

As more organizations embrace the IoT, data streaming, cloud-native apps,


and remote work, the number of cyberattacks have risen sharply. Worse,
cybercriminals are becoming more sophisticated, gaining access to sensitive
information like HR records, IP, and consumer data.

And things could soon get worse.

Per a recent Forrester report, it’s only a matter of time before AI-powered
hacking goes completely mainstream—though the tools are already widely
available through open-source AI projects.

Big data—along with widespread cloud adoption and a growing embrace of


IoT solutions—has made it impossible to detect unsecured endpoints,
vulnerabilities without the use of AI-enabled monitoring tools. The impending
arrival of 5G/WiFi 6 could soon exacerbate the challenge—as the expected
rise in data streaming will likely generate a massive influx of data.
Organizations already face significant challenges managing and securing their
data and need to make sure they’re prepared for the big wave of big data
when it hits.

Javier Trevino says, “static analysis tools should be executed against code
bases to identify any security vulnerabilities using standards outlined by The
Open Web Application Security Project (OWASP).”

This gives you a starting point for mapping out your threat surface and
identifying vulnerable areas. And from there, you can start tackling challenges
one by one.

6. AI and Automation

AI-embedded software has become the default pretty much across the
board—from sales and marketing tech to logistics and supply chain
management and automated production lines.

Implementing AI and automation presents challenges for software developers


on multiple fronts, including:

• Determining when to automate a process.


• How to effectively “power human augmentation.”
• Navigating the many challenges of test automation.
• Handling UI changes, multiple error handling, script execution, etc.

To get around these issues, organizations will need to first develop a strategy
for getting started.

It’s also important to understand that successfully automating processes


demands skilled resources—you’re not replacing human talent with robots.
Instead, the focus should be on applying automation in areas that waste
workers’ time or are particularly vulnerable to human error.
Further, ensure you choose the right tool for the job. That means, rather than
focusing on automation as a broad, multi-process effort, you’ll want to take it
one goal at a time by identifying the tools that best address hyper-specific
needs.

7. Data Literacy

Just a few years ago, companies needed to hire data scientists with advanced
skills in SQL, R, Python, big data analysis, data extraction, and normalization to
help them analyze and act on big data insights.

In 2021, AI, ML, NLP, etc. technologies have made their way to the masses.
They’re more affordable, accessible, and relatively user-friendly—embedded
into the business tools we use each day.

Wile it doesn’t take a data scientist to run a report these days, many
organizations still aren’t quite sure how to properly implement these tools
and put AI-driven insights to work. According to a Harvard Business Review
study, participants struggled not because of a lack of technical know-how but
because of poor problem-solving skills.

• Researchers found that participants struggled to:


• Ask the right questions
• Understand what information is relevant
• How to validate the integrity of the data
• Test hypotheses

Development teams and stakeholders need to work together to develop


solutions that enable end-users to become more data-driven and self-
sufficient.
Think self-serve business intelligence tools, access to AI-driven insights and
intuitive reports that help end-users quickly answer specific questions relevant
to their role.

Solutions that provide visualizations and make it easy to turn data points into
a story make it easier to understand the big-picture. However, you’ll also want
to make sure that problem-solving tactics and tools are part of an
organization-wide continuous training initiative.

8. Cross-Platform Functionality

Today, there’s the expectation that companies need to offer a unified—or


rather “seamless”—experience across all platforms, channels, and devices.

One of the biggest challenges facing software development teams is the


pressure to maintain consistency—in tone, messaging, and aesthetic across all
touchpoints and be ready to provide on-demand support wherever customers
decide to make contact.

Tiempo’s Abel Gonzalez Garcia shared an example from a project he worked


on. He says, “in one recent case, the application that we were testing was
designed to work on different OTT platforms like Roku, Apple TV, Fire TV,
Android TV, and Xbox. This is a significant challenge, as we need to have the
same functionalities on all the platforms, however, sometimes the platform’s
architecture didn’t allow us to implement certain things, and we needed to
figure out a workaround.”

9. Budgeting

Many companies are working with a smaller budget than they anticipated due
to COVID shutdowns and lost business. Now, they’re forced to figure out how
to do “more” with far less.
Even organizations that have fared relatively well should rethink their budget,
making sure that spending aligns with current priorities.

According to Gartner, top-performing organizations are directing more


resources toward new business priorities post-COVID. Analysts recommend
that CIOs respond by re-evaluating business cases to make better use of
investments and reallocate internal resources to prioritize digital innovation.

For instance, if you’re no longer renting office space, you might use the
money you’ve saved to make strategic hires, launch a new product, partner
with an outsourcing company, etc.

10. Talent

Organizations face major staffing challenges, too.

There’s the infamous IT skills shortage where you’ve got small and mid-size
businesses competing with multi-billion dollar enterprises like Amazon,
Google, and Facebook for in-demand, highly-specialized skills. This, of course,
means attracting top US talent requires smaller businesses to match the kind
of salaries and perks those giants can offer.

Companies need to make sure they understand what they’re looking for,
whether they’re hiring in-house or outsourced talent.

According to IBM, many companies are still focused entirely on addressing


skills gaps related to hard skills like data science, AI/ML, cybersecurity, etc.,
when they really should focus on developing a new set of skills.

They need people who:

Understand how data ecosystems work—how information flows between


applications, devices, and infrastructure, what metrics to use to track
performance or identify vulnerabilities.
Know how to create policies and governance that maintain data integrity,
security, and support knowledge sharing.

Have strong soft skills such as empathy, active listening, communication,


problem-solving, creative thinking, and adaptability.

Organizations also face the challenge of upskilling existing developers and


engineers to ensure a “future-proof” workforce. That means you’ll need to
rethink the entire training and onboarding process, as well as establishing a
long-term strategy for making sure your team is up to speed on the latest
tools and tactics.

Note that “hard skills” are incredibly essential as well. That said, you can use
outsourcing to fill gaps and provide ongoing training opportunities to ensure
that in-house talent keeps “leveling up” the skills that align with your big-
picture plan.

Software Development Team Roles and Responsibilities

• PROJECT MANAGER Works on a higher level of abstraction and is


responsible for a budget, risk, schedule and contract management. It’s
highly possible that project managers don’t well-know the product
which they are creating. They use different methodologies and are
focused mainly on controlling the project. A PM will ensure that there
will be no changes incompatible with specifications.
• PRODUCT OWNER Such a person is close to that of an analyst and
concentrates on a product and its features. Their primary role is to take
care of business value maximisation (suitability of the product to use).
Product owners are focused on constant changes because they are
using agile methodology.
• TEAM LEAD Typically, such a role is given to one of the developers,
not necessarily the best or most experienced. This person should have
leadership qualities which allow for maintaining communication
between remote development teams and for example – clients. Team
leads ensure that the team has sufficient performance levels and is also
responsible for conflict prevention and resolution.
• TECH LEAD Some time ago we would use the term ‘architect’ instead
of tech lead. Nowadays, ‘analyst’ fits better. But who is this? It is, in fact,
the ‘lead example’ when it comes to technical knowledge of team
members. Tech leads can solve problems not linked with the
development process itself, i.e. issues connected with the integration
with external providers, or those regarding hardware.
• FULL-STACK DEVELOPER It’s a programmer not specialised in one
specific area. Because of this, a full stack developer may appear less-
advanced than a front-end or back-end developer. However, thanks to
a broad range of knowledge and skills, they can implement a solution
on every architectural layer of the system (view, business logic,
database). In less complex, demanding projects where costs play a
huge role, a full stack developer is indispensable.
• FRONT-END DEVELOPER Front-end developers are the point of
contact between the end client (user) and the delivered business
solution (a system undergoing implementation). Such a person must,
on the one hand, provide the best possible application reception by the
user (interface responsiveness, content clarity). On the other hand,
they’re responsible for proper communication with the business logic
layer.
• BACK-END DEVELOPER It’s a programmer focused mainly on
developing business logic and data layers. And because elements are
crucial to system functioning; its correctness depends on the quality of
back-end developer’s work. What’s more, in a case of larger, more
complex systems, such developer’s capabilities of building data queries
(i.e. SQL) and its optimisation are of enormous value.
• QA LEAD Quality Assurance Lead is responsible for building the QA
team and its management. One of their most crucial responsibilities is
to ensure a proper relationship level between persons accountable for
areas of the system under construction. In the end, it’s a QA manager
who is primarily responsible for end users’ reactions to the brand-new
system. QA Lead, similarly, to a Team Lead, is a person accountable for
proper relations between QA team members, mitigation of conflicts,
praising good work, and motivating to further self-development.
• QA ENGINEER It’s a person responsible for preparing tools that allow
for automating processes which verify software quality. Such a form of
software testing makes it possible to check if regression errors occur. In
other words, to check if work on new features didn’t cause errors in
already existing and functioning system areas. It’s a huge benefit as it
lowers staff costs (duplicative testing performed by testers) and
shortens stability verification time.
• TESTER Testers fulfil an otherwise necessary role in the QA team. They
are responsible mainly for conducting manual tests, that is system
verification by using it analogically, as opposed to how end users will
operate it. Apart from a most-likely standard approach to using
particular features, a tester must propose alternative paths, boundary
conditions, and exceptions which will help to eliminate as many existing
errors as possible.
• UI DESIGNER The primary duty of the UI designer is to prepare, or
design, the user interface. This means transferring content, style,
graphics connected with a client or product to a system presentation
layer. Thanks to prototyping tools, such a person can – together with a
client – prepare a template of the application’s user interface. Later,
together with a UX designer and front-end developer, this member will
work on providing a solution to continue per expectations and
requirements.
• UX DESIGNER Contrary to the UI designer, it’s a function characterised
by a less ‘digital’ approach to a user interface. The UX designer –
whereby UX means User Experience – must make sure that end users
will have the best possible experience while using an application. Such
person-based work not only consists of analysing user behaviour. It
also takes into consideration what the competition is doing, and
continuously changing human-computer interaction methods.

You might also like