StudentShare
Contact Us
Sign In / Sign Up for FREE
Search
Go to advanced search...
Free

Software and Design - Abstraction Techniques in Software Development - Essay Example

Cite this document
Summary
The author of the paper "Software and Design - Abstraction Techniques in Software Development" argues in a well-organized manner that abstract techniques such as high-level languages and abstract data have improved the ability of a programmer to develop software…
Download full paper File format: .doc, available for editing
GRAB THE BEST PAPER95.7% of users find it useful

Extract of sample "Software and Design - Abstraction Techniques in Software Development"

Student Name: _____________ Student ID: _______________ Tutorial No:_____ Group No: _____ ABSTRACT When a large system is being designed from many components, the overall construction of that system will present challenges, but these challenges have been taken care of in a number of ways, such as the use of modules interconnection languages, informal diagrams and descriptive terms, frameworks for systems that will serve the need for specific domains and templates. Abstract techniques such as high level languages and abstract data have improved the ability of a programmer to develop software [1]. INTRODUCTION Since the introduction of abstraction techniques in software development, improvement in programming practices has been greatly realized. Abstractions have provided programming practices in many ways such as: programming language constructs specification techniques [1], programming structures-algorithms and data types-, and strategies for modular decomposition…etc. The importance of abstraction in software development is it can recognize a pattern can name and define it, analyze and find a way to specify it, also abstraction can find a way to invoke pattern without error prone manual intervention. Abstraction process usually will reduce the opportunity for clerical error, and also it will suppress the detail for pattern’s implementation. There are many abstractions which are associated with software development, and it is possible to identify these abstractions, and some of these details are significant and others are irrelevant in software development. Consequently, different abstractions have different points during software designing and development process [2]. During the development of abstractions, it usually follow a known pattern, first, the problems in the abstraction will be solved ud hoc, but some experience during problem solving will turn out better than other solutions, and a sort of folklore is passed from programmer to programmer, until the importance of solutions are understood more systematically, and they are codified and analyzed. However, software systems complexity and size has brought new challenges which cannot be solved by the techniques which are currently available, and this new challenges in software development include system-level design. These new software architectures require new kind of abstractions that will capture both essential properties and interaction of subsystems. With time during software development, complex level of practice will allow a programmer to tackle hard problems, which he/she will approach, those hard problems ad hoc, and starting the cycle over again. But with time, abstractions will capture larger and larger amounts of problems with precision, and this will allow sophisticated programs to be elaborated with a given amount of efforts [1]. There is relationship between Shaw’s and Parna’s observation has been clearly been stated. According to Shaw, abstraction deals with identifying, defining, analyzing, naming and providing other ways that can invoke the pattern with no error intervention in software development. The process of abstraction will hold back on the information of the pattern implementation in software development, and this will reduce any possibility of clerical errors and this will simplifies the understanding. According to Parnas, when a system is maintained in a modular fashion, it will pave way for the system errors that will be able to trace specific modules, and this will limit the extent of detailed errors. According Shaw, when a programmer develops abstraction he/she must follow a common pattern. By doing so, some of the problems which appeared to difficult during software development will turn out to be easy. Shaw further say that important solution will be understood when abstraction is carried out in a systematic way, they are analyzed, and when they are also codified. According to Parna, software modularization should be made first before an independent module work begins purposely for design decision. When a system is arranged in hierarchically, such that each layer in the system will support one another layer which is above it, this is according to Shaw. But according to Parna, it is much easier to use a relation between programs because a module will depend on part of another module in the system. Parna further observed, if all modules- first and second modules- work at the same level in the system, it will have the following benefits: part of the system will be simplified and they tend to use the services of a lower module, second, if the upper level is cut off, it will still have a useful product. DISCUSSION According to Panas, he believes advancement of programming has been brought about as a result of development of assemblers and coding techniques, these two techniques has allowed modules to be written with little knowledge of code that is found in another module, secondly, it has allow programmers to reassembled and replace modules without reassembly the whole system, and this has been valuable in the production of large pieces of programming code. Modular programming has the following advantages: a programmer is able to shorten development time because separate group are able to work on a different module with little communication or no communication. Programmer is able to make changes in a programming module without the need to change other modules that are in the program, and lastly, the modules can be study one at a time, therefore a programmer can better design the system. The principle of abstraction is the separation of behavior of software components, and can be regarded as the principle of separation of concerns. In abstractions, interactions among items are being kept simple and this will reduce the chances of incorrect, interaction, and the person who is developing the software will be able to reduce the chances of corruption of the system which may be brought about by introduction of changes to hidden details that may be found in the software development. In software development, a programmer cannot deal with more than a few concepts and their relationships at same time, but abstraction will allow a programmer to suppress the details in the software that are unimportant to the software development and emphasize the important information that are needed during software development. Also, in abstraction it will help manage the intellectual complexity of the software which is being developed. Information that are needed in system developments is usually collected in various types of models, and every models can be viewed as a formalized abstraction of the system being developed, but it is usually a concern on a selected set of system’s characteristics and features. CRITICAL ANALYSIS Software developers have to deal with many different types of abstraction, but the following abstractions can be considered to be the most important to be considered during software development: functional abstraction, data abstraction, and process abstraction. In functional abstraction it performance usually becomes a high-level concept; a programmer may know a great deal about an interface for the function in the program, but he will know relatively little about its accomplishment[2], functional abstraction will hide unnecessary implementation details for those programmers who will use the function. In data abstraction, the software developer may can choose to hide the underlying implementation of information, and allow certain information to pass through a series of operations; data can be accessed in a well-defined interface which is comprised of operations. Lastly, process abstraction will deal with how an object will handle itself in software development, for example in parallel process there will be at least two threads of control in the software. Parna’s work is based on two different modules, and each module had different subsystem that work differently. Shaw’s works have been build on the past works of Parna’s in such a way that she uses higher-level languages; her works is based on pipes and filters. It her work (Shaw) each modules is made in such a way it will allow stream of input and emit a stream of output. The modules will therefore be connected through output streams (filters) of one module will act as input (a pipe) to another module. Shaw’s further build her works on compilers, for example, she provide different compliers that can be used for decomposition purposes in software development. In the process of trying to build the work done by Parna, Shaw states that the choice of implementing a strategy largely depends on the characteristics of the application used. in abstraction it will help manage the intellectual complexity of the software which is being developed. Information that are needed in system developments is usually collected in various types of models, and every models can be viewed as a formalized abstraction of the system being developed, but it is usually a concern on a selected set of system’s characteristics and features. Conclusion In designing large-scale systems it will involve designing those levels that are traditional module. The objects that will be of interest at this level will be subsystems and how they interact, and not data structures or algorithms that might be found in the system. The application of abstraction in software development is one of the fundamental mechanisms that a programmer will consider during software development [2]. Most of the system descriptions usually will provide evidence of abstraction at the architectural level. From our critical analysis it is clear that, development of software is possible. Identification, codification, and dissemination are still the main problems that still affect development of software’s REFERENCE LIST [1]Parnas, D. L.. “On the Criteria to be used on Decomposing Systems into Modules,” communications of the ACM, 15(12):1053-1058, 1972. [2]Shaw, M. “Larger Scale Systems Require Higher-Level Abstractions,” Proceedings of the Fifth International Workshop on Software Specifications and Design, published Read More
Cite this document
  • APA
  • MLA
  • CHICAGO
(Software and Design Essay Example | Topics and Well Written Essays - 1500 words, n.d.)
Software and Design Essay Example | Topics and Well Written Essays - 1500 words. https://studentshare.org/design-technology/2058620-components
(Software and Design Essay Example | Topics and Well Written Essays - 1500 Words)
Software and Design Essay Example | Topics and Well Written Essays - 1500 Words. https://studentshare.org/design-technology/2058620-components.
“Software and Design Essay Example | Topics and Well Written Essays - 1500 Words”. https://studentshare.org/design-technology/2058620-components.
  • Cited: 0 times

CHECK THESE SAMPLES OF Software and Design - Abstraction Techniques in Software Development

Software Engineering Testing tools

This paper aims to compare and identify some new practices that can be used in augmenting current software development practices.... Testing of engineering software can be broadly deployed in various phases of the software development cycle.... In spite of the inherent limitations, software testing is an integral part of software development.... It is usual for more than half of the software development time to be spent on testing the software, and this entails a critical process of selection....
11 Pages (2750 words) Research Paper

Managing the Software Enterprise

It provides cost estimating support for the period of the planning and design stages of projects for optimization of the design and studies of value engineering, risk assessment life-cycle and cost analyses.... nbsp;… Configuration management (CM) becomes an essential activity because it helps to achieve updating and recording information that encompasses an enterprise's software and hardware.... This paper ''Managing the software Enterprise'' discusses about configuration management as the process of recognition, change control, controlled storage, and status reporting of chosen intermediate job products, components etc....
12 Pages (3000 words) Assignment

Web User Interface Design Principals

In this paper we are going to tackle web designing with the topic under focus being web user interface design principals but under the perspective of systems design engineering.... The back bone of this paper is the web which is simply defined by the Merriam Webster dictionary… Web User Interface design Principals.... n this paper we are going to tackle web designing with the topic under focus being web user interface design principals but under the perspective of systems design engineering....
19 Pages (4750 words) Term Paper

Service Oriented Architecture: Patterns and Antipatterns

nbsp;… This is achieved by introducing convenient services, which are self sufficient and recyclable software components that have independent platform hence easy to retrieve through external network such as the internet.... Without a doubt, compared to other multifaceted software systems, SBSs have to undergo advancements in order to fit any arising consumer needs in terms of their workability and Quality of service (QoS).... Service Oriented Architecture (SOA) concept is intended to come up with distributed software founded in the idea of software services....
20 Pages (5000 words) Literature review

EXERCISE 5 P+P

There are software development sites, which help in these issues too.... Perceptions & Preconceptions  Assumptions  Character of object domain  Cognitive Bias The basic assumption of SSADM (Structured System Analysis and design Method) is the set of standards using a combination of text and diagrams through the whole phase of system design from initial requirements to the final physical design of application (Cutts, 1991).... The Merise has the basic assumption of System design and development going through three cycles of - abstraction, approval and life cycle....
4 Pages (1000 words) Research Paper

Aspect-Oriented Software Engineering

It also discusses the role of aspect-oriented software engineering in improving the performance of current software development lifecycles.... The research has shown that splitting concerns into several autonomous components instead of merging a number of diverse concerns in the single consistent abstraction is a noble software development approach.... In the majority of huge software applications, it is difficult for the software development teams to understand the relationships between the software components and requirements....
10 Pages (2500 words) Research Paper

Contemporary Software Systems: Singularity

Singularity strives for minimalism and design clarity and makes extensive use of modern languages and tools.... hellip;  Singularity is a Microsoft Research project to develop techniques and tools for building dependable systems that address the challenges faced by contemporary software systems.... Singularity will improve software reliability and boost research in programming language and tools.... Singularity is based on advances in programming languages and programming tools to develop and build a new system architecture and operating system (named Singularity), with the aim of producing a more robust and dependable software platform....
10 Pages (2500 words) Term Paper

Multi-Agent Systems and the Areas Related to It

e can provide a direct interface to the hardware on the host system of This is achieved by removing the device-specific hardware dependencies, which were previously part of almost any software development effort.... gent technologies are now being applied to the development of large-scale commercial and industrial software systems.... Such systems are complex, involving hundreds, perhaps thousands of agents and there is a pressing need for system modeling techniques that permit their complexity to be effectively managed, along with principled methodologies to guide the process of system design....
4 Pages (1000 words) Essay
sponsored ads
We use cookies to create the best experience for you. Keep on browsing if you are OK with that, or find out how to manage cookies.
Contact Us