The Future Of Software Engineering

Print   

02 Nov 2017

Disclaimer:
This essay has been written and submitted by students and is not an example of our work. Please click this link to view samples of our professional work witten by our professional essay writers. Any opinions, findings, conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of EssayCompany.

Laptop technology background Stock Photo - 14786696

Introduction:

Performance is one of the most important factors that can affect the software quality. It can be affected by hardware, communication network, middleware, and operating system, and as such; software engineering encompasses efforts to improve, and describes performance with two important approaches: a Late-cycle measurement-based approach, and an early-cycle predictive model approach. Software performance represents a problem to many organizations, and it’s often below the expectations. The future is very promising in creating the tools for measuring and modeling; that will help improving software engineering processes (Woodside, n.d.).

The theoretical education of software engineering fundamentals is not sufficient to provide the skills and the knowledge required for the future of the software engineering; that can meet the expectations of the future employers. It’s found that the teaching of software engineering is lacking the environment, the time, and the resources that prepare the software engineers to the future expectations (Bayrak, n.d.).    

The future of programming environments foster the integration of reusable, extensible, and automated tools that can help software engineers to promote the right quality of software.

This paper will discuss the future of software engineering through the improvement of software performance, improving the tools used in the software development, and also the future of the software environment that fostering the integrated tools that can promote software scalability, and reusability.

Software Performance Engineering

The software performance engineering represents the core of the software design, and it can be affected by every aspect of the software development elements, such as the code, the design, and the execution environment. Any issues with software performance can create different problems for many projects, such as delaying such projects, failure to deploy the application, and cost overruns. That said; a highly disciplined approach known as Software Performance Engineering (SPE) is necessary to improve system’s performance, and also evaluate such performance. Such discipline represents a collection of software engineering activities, and its related analysis used that can be used throughout the software development lifecycle, where it can be directed toward achieving the performance requirements (Woodside, n.d.).

 Woodside and Franks (2007) explained that there are two important approaches under the umbrella of the SPE:

Measurement-based (Late-Cycle measurement) - Where the diagnosis, testing and tuning are done late in the development lifecycle once the system can run, and can be measured.

Model-based approach (Early-Cycle measurement) – Where the performance models are early created in the development lifecycle, and uses the quantitative results of such models to adjust the design, and the architecture to meet the performance requirements.

The SPE process should be part of the software engineering activities, and it should have the same constrained as other project elements such as project schedules, and defined requirements. The resources of such process is the systems resources interact with the system behaviours, such as hardware (I/O, CPU, Buses, and storage), logical resource (locks, buffers, and semaphores), and processing (threads, processes). The defining factor for software performance is the resources that can offer a limited capacity, where they can potentially halt/delay the execution of computing. Quantifying the effects of such resources on the software performance is an important task of SPE (Woodside, n.d.).

Woodside and Franks (2007) argued that Software Performance Engineering (SPE) represents a domain that has the following elements:

System Operations – Where performance requirements, workloads, and behaviours are defined.

Behaviour – Where behaviours scenarios specifications are defined.

Workloads – Where the frequency of different system operations are defined.

System Structure – Where the software components that might effect the performance is defined.

Resources – Where the information about software, and hardware are defined.

Woodside and Franks (2007) described the activities involved in the SPE process, and it includes the following activities:

Identify Concerns – Where the important resources, and the system operations that might affect the system performance are identified.

Define and analyze requirements – Where workload intensities, operational profiles, throughput requirements, and delay are identified and their behaviours are described.

Predicted Performance – Where scenarios, architecture, details design, and system behaviours can predict the performance of the system.

Performance tests – Where the performance is tested with parts of the system, or all parts of the system under stress, and normal loads.

Maintenance and evaluation – Where the addition, and the potential changes can be predicted with their effects in the system.

Total system analysis – Where the complete, and final deployed system are planned.

The performance engineering is gaining its attention from the results of the applications’ performance that usually below the expectations of what companies usually expect of their applications. In the past such problem usually discovered at the late stage of the software development, where the performance validation represented the last activities before the software release.  Even with the Agile processes the problem still persistent, and might be worse than the traditional development lifecycle (Waterfall). The future of performance engineering is in the right direction in implementing better tools for measuring and modeling such process. Using the right tools that can improve the performance engineering, such as tools that can do tracing where it captures CPU demands, and also the tools that can trace CPU operations to the various I/O devices, will be a great improvement for the SPE process (Woodside, n.d.).

Successful software requires performance diagnosis that can use models for insight into the source of the performance problems. The operational profiles; and workload modeling are the key part of both predictive; and testing modeling. The future should bring the dynamic optimization tools into play, where it can perform measurements that can be fed back to compilers for off-line placing code, tuning and cache analysis. Finally, creating the performance models can be used to describe how the system operations use resources, and how the resources contention affects operations. However, the future can bring better models that can add better usage of the SPE process (Woodside, n.d.).

Applied Software Engineering Education

The theoretical teaching of software engineering fundamentals do not provide the knowledge, and the skills expected for the future employers; and it is not sufficient for the predicted future of the improvement of the software technologies. As the technologies improved a lot during the last decades, software architectures and software analysis become essential part of the software development lifecycle. Today, we can witness a lot of improvement in the educational system where the Computer Science departments starting to offer a real-life client sponsored programs; that allow the undergraduate students to get a better understanding of the technologies, and how such technologies can be applied in the real life environment. The real goal of such programs is to motivate students to succeed in their projects, and also understand the importance of the analysis and design documents as part of the development lifecycle, software engineering process, and the software requirements specifications (Bayrak, n.d.).

The Future of Programming Environments

The improvement in the software development definitely will bring a better future to the software engineering and programming environment. The future of integration for the software engineering environment is the future of tools, because the more reusable, useful, and extensible the tools will be, the more likely such improvement will increase the productivity of the development project, and enhance the software engineering process. Some of the improvements that can be done through these tools are; the general techniques of how these tools can work within the development environment. Such tools can support extensibility and reusability through different features such as, supporting automation, separating functions from presentation, automate testing, and automate reconstruction.  Finally, the improvement in such tools, will increase the chances of improving the software engineering process in the future, and also increase productivity, and software quality.

Conclusion

Software Performance Engineering (SPE) needs further development to keep up with the changes in the software technology, and the market requirements. Such process needs testing, and measurements technology, and also improvement in prediction. By implementing the right performance models, it will add a better views, better ways of measuring data, and exploring increments in the system design. Further automation of the data collection; and better method for measuring will improve the predictions of performance issues through the SPE process. The future is promising, that SPE expands its process from the development phase into the system deployment and management phases (Woodside and Franks, 2007).

Creating the right educational programs that allow the students of the software engineering to practice their knowledge through program sponsored by different employers, is such a great idea that can improve the future of the software engineering. Such programs allow students to understand the real demands of the outside world, and how the concepts of the software engineering are used in real life.

Finally, improving the development environment will have a huge impact on improving the software engineering process. The integration of the software development tools within the development environment, will increase the enhancement of the software development process, and also provide the support for the programmers, designers, and software engineers during the software development process. With better adaptive, rationales, and optimizing, the software development cycle will be shorter, the productivity, and the quality of the software will be greater, and the resource allocation will be better.



rev

Our Service Portfolio

jb

Want To Place An Order Quickly?

Then shoot us a message on Whatsapp, WeChat or Gmail. We are available 24/7 to assist you.

whatsapp

Do not panic, you are at the right place

jb

Visit Our essay writting help page to get all the details and guidence on availing our assiatance service.

Get 20% Discount, Now
£19 £14/ Per Page
14 days delivery time

Our writting assistance service is undoubtedly one of the most affordable writting assistance services and we have highly qualified professionls to help you with your work. So what are you waiting for, click below to order now.

Get An Instant Quote

ORDER TODAY!

Our experts are ready to assist you, call us to get a free quote or order now to get succeed in your academics writing.

Get a Free Quote Order Now