Recent orders

Software Technology

Software Technology

Name

Date

Software Technology

Figure out how you will integrate the software from three different automobile manufacturers into a coherent system.

This work needs a lot of skills which will only be acquired from experts. However, when designing the software, I will do a good work in line with the demands of my clients. Initially, I will work in line with the organization’s goals. The management will inform me on their requirements it needs me to follow while developing the software. In order to be in a position of integrating software from three different automobile manufactures, I will come up with a feasible scope document suitable for the design architecture to be used. The architecture generated will address all the requirements put by the client together with considerations for future development.

The program code is then planned in line with software from all the manufactures. In this regard, I will generate appropriate and accurate software which will be fully tested and implemented in the organization. If this procedure is strictly followed, the software produced will be efficient and functional. Meaning, it will meet the requirements of the client in coordinating the operations of to be done in its dealership business.

If this work is done perfectly, it will make the client be contented with it. Thus, the feedback got from him will be used t gauge its success. However, while doing all these, it is recommended that a room should be created for any future development which may be necessitated by any change. However, the client must be acquainted with all this information through training.

How many employees you will have? How you will hire them?

As a Chief Information Officer attached to this organization, I will ensure that I excel in my duties. For me to succeed, I will have to employee professionals to help me execute such duties. The most appropriate number of workers to recruit will be 15. This is a large organization with a complex hierarchical structure which needs this number of people to help in designing and maintaining the dealership software.

The sensitivity of this work requires the use of trained soft ware engineers. So, when carrying out the recruitment process, I will involve a panel of experienced staff to conduct a rigorous interview and select the most qualified applicants. In order to ensure that the recruitment process is conducted in a transparent manner, I will advise the panel to formally advertise the vacancies in print, broadcast and online media. Then the potential applicants will be given enough time to present their applications before short listing the best ones.

The most important qualities to consider will be academic, professional and personal attributes. However, we will insist on training, experience, competence, passion, focus, curiosity, discipline, team work, flexibility, determination, industry, time consciousness, team work, flexibility, problem solving and communication skills. This means that a person selected for this job should possess admirable computer programming skills and be committed to the profession. Soft ware development can only be done by an interested person. At the same time, having experience in the same job will assist in ascertaining the abilities of the applicant.

Last but not least, the possession of the above attributes will help to ease the work of all the employees in this department. For instance, a cooperative employee will help in promoting stability and team work in the organization. This is an important trait in promoting harmony amongst employees. If workers cordially relate and communicate with one another, they will not engage in any form of conflict, but spend their time in performing their tasks.

How will you train all company employees to use the system?

The software developed will be used by all employees from the administrative, finance, service, parts and sales departments. All of these departments will be served by the software network because they are directly concerned with the dealership operations of this organization. However, not all these people are knowledgeable on this technology. Each of them is specialized in their areas of operation in which they are attached in this company.

As the Chief Information Officer, I will consider it my responsibility to offer trainings to them. First, I will liaise with reputable training institutions offer short courses to them. These will be Information Technology courses conducted within the shortest span of time possible. On completion, they will be awarded respective certificates in line with the CICSO Network Academy. In other words, they will receive internationally recognized qualifications which can enable them to understand and operate different software systems.

At the same time, I can organize for seminars, work shops and induction services for these employees. During such times, they will be lectured by professional software engineers. During such functions, the employees will get time to learn about this technology and ask any question. Similarly, they can use this opportunity to air their views on what they would like to be done as far as automobile software dealership is concerned. If this is done, then all the workers will be exposed to this technology and use it without any problem.

Alternatively, I may decide to pick a few representatives from each department to give advanced training on this technology. Under this program, the selected workers will be offered all the five levels of CISCO certification including the Entry CCENT; Associate CCDA; Professional CCDP; Expert CCDE and the architect qualifications. This will enlighten them on the design, routing, switching, service provider, network security, voice, and wireless and storage skills. The training of these representatives will enable them to offer such skills to the members of their respective departments.

How you will provide on-site support for the dealership?

The development of software for this automobile firm will greatly depend on the competency of the engineering team. Because it will begin from scratch, it will essential that all the operations be done following the right procedure recommended by the major software developing companies.

The provision of the on site support should be continuously provided right from the preplanning to the maintenance stages. The software element and domain analysis should be vigorously done in order to ascertain any requirement essential for the successful development of the software. Such analysis should be keenly done in order to ensure that the client is equipped with the right data. Since it is only the software engineers who know much about such elements, they should provide the client with the most accurate data in order to allocate funds for their purchase.

On site support should also be given during the implementation stages of development. Here, the engineer will be mainly concerned with the development, testing and maintenance of the software. This is a very sensitive section which requires enough time to be effectively executed. Maintenance is essential because of the constantly changing client demands which need to be promptly addressed. When doing this, the engineers can also offer trainings on the company employees to equip them with information which can help them manage the system without unnecessarily relying on the support of external experts.

If the engineers dedicate their time to provide on site support to the clients, the project will be a success. Meaning, it will be efficient, usable, functional and dynamic. Thus, it will be suitable for use in the dealership business of this company and adapt to any change which may be experienced in the course of business operations.

Software Requirement Specification

Software Requirement Specification

Student’s Name

Name of Institution

 

 

Date of submission

System’s Attribute and their Definitions

The following is a table of attributes and their functions for cards in methodologies and application domain issues

Quality Attribute Definition

Performance A system’s ability to respond to functions

Usability A system’s ability to be utilized effectively

Reusability A system’s ability to be used more than once and maintain functionality

Reliability A system’s ability to be used over a long time to come

Testability A system’s ability to be facilitate its performance

Supportability A system’s ability to be maintained in an operational manner

Flexibility A system’s ability to be modified to specific designs

Security A system’s ability to deny service to unauthorized users

Maintainability A system’s ability to undergo changes and maintain it’s performance

Agility A system’s ability to rapidly undergo change

Scalability A system’s ability to support, maintain, and increase system demand

Interoperability A system’s ability to exchange data with other systems

Software interface description:

The objects that are in use in a software interface are;

Service Interface – the function of this object is to make definitions on the set of functions that are provided. These functions can be the ones used by an application or the ones provided for by the application and can have either one or more operations.

Message Type – this object is meant to define a message’s root element and then refer to the type of data.

Data Type – this object is meant to define the structure of the data.

External Definition – this object is meant to define the structure of data that the ES Repository imports.

Imported Object – this object is the IDoc or the RFC that is imported into the ES Repository.

Context Object – this object is meant to abbreviate XPath expressions and address the specificity of payload element.

The graphical representation of software interface objects is as shown below

Service Interface

Operation

Context Object

Imported Object (RFC, IDoc)

Message Type (Fault)

Data Type (Enhancement)

External Definition

In a software interface, the objects are aligned with respect to the functionality and how they convey message from one object to another. In a hierarchical kind of manner, the service interface is placed at the top where it defines the functions that are to be provided by the system. Through the service interface, the operations to be performed are displayed by the server to the client. These operations can result into context objects (where the expressions and addresses are specified), imported objects (where all the information is stored within the system), and /or message type (where the data type and the response expected are displayed). The message type is then divided to display the data type (where the client’s needs are specified) and the external definition (where the expected response to the client’s needs is designed within the system).

Message Exchange between Client and Server

For communication to take place between the client and the server, the system must be able to exchange information between the two. This communication is made possible when software interface operations are taking place within the system. The operations can be synchronous or asynchronous depending on the attributes specified. In many occasions, applications used to perform functions in service interfaces are forced to ensure that communication is threaded and kept in store for future use.

The following diagram shows how a relevant synchronous communication takes place.

Service Interface (Outbound)

Service Interface (Inbound)

Message Requested

Server

Client

Operation

Message Response

Operation

For a synchronous operation to take place, the attributes specify the functions and the results expected of the operation. In this operation, the attributes make sure that there is an expected response when the client makes a request to the server. For this to happen, the programmer delegates three tasks to provide the response expected. These tasks are fault, response, and request. Through these tasks, the server then gives feedback to the client concerning the needs of the request sent.

The following is a diagram showing how a relevant asynchronous communication takes place.

Service Interface (Inbound)

Service Interface (Outbound)

Message Requested

Client

Server

Operation

Operation

For an asynchronous operation to take place, the attributes specify the functions and the results expected of the operation. In this operation, the attributes make sure that there is no expected response when the client makes a request to the server. For this to happen, the only task delegated for the system by the programmer is fault. Through this, the server does not give feedback to the client’s request.

DFD System for B&B

The following is a mail delivery system that B&B uses to deliver goods to its client. The system allows B&B clients to conduct shopping while in their homes where they place an order to the company via emails, telephone calls, or faxes. Upon receiving an order, the company delivers goods together with their invoice to the client. Once the client has received the goods and approves they are the right ones, s/he sends money for payment and receives the due receipt to complete the transaction.

Level 0 DFD showing information exchange between B&B and the client

CataloguePayment

Receipt

Order

Goods

Invoice

Delivery Note

Client

Client

B&B’s Mail Order System

It is important to note that once the server (B&B) has received an order from the client, it sends out an invoice, a catalogue, and goods requested for by the client to them. The client then responds by making payments to the company upon receiving the goods and the catalogue. Once the client has done payments, the server sends out an invoice and a receipt to complete the transaction.

B&B’s Level 1 DFD

In order to give more details of B&B’s system transactions, a level 1 DFD is implemented to do this. Level 1 DFD is used to give more illustrations on the company’s system’s function ability on the operations that take place between the client and the company.

B&B’s level 1 DFD is represented as shown below

The most important thing to note is that data flows from Level 0 DFD are included in Level 1 to complete its functionality. This level has two functions that are carried out by the company, the first function is order processing and the second is payment processing. In this, the client makes a request on the goods he wishes to buy, as such; he places his order to the company. Once the company receives the order, it processes it in the department that deals with order processing (office 1). The department then sends the goods and the delivery not to the client. The second department (office 2) that deals with payment process then sends the catalogue. This is included in the goods and delivery note sent by the order-processing department. Once the client receives these, he makes his payment to the company. This is acted upon by the second office of the company that deals with payment processing. This department then sends an invoice and a receipt to the client to complete the process. However, for this to be complete, there are three rules that must be applied to ensure that Level 1 DFD is valid. These rules are;

Rule 1 – Each function must have input and output?

Rule 2 – Each function must have all the right information to produce an output?

Rule 3 – If not, what other information is needed and from where?

When applying the ‘Rules’ the expected results are;

Rule 1: Answer YES.

Rule 2: Function 1: YES – it has all the information needed to produce an invoice.

Function 2: NO – it lacks all the information needed to produce a receipt. This calls for rule 3.

Rule 3: For function 2 to match order with payment, it relies on the order information given by the client in function 1. The system is expected to have stored this information for any further use. The DFD becomes;

Update Level 1 DFD for B&B

Note: Function 1 generates and stores data and Function 2 reads data from the storage. For a complete diagram, all rules must be applied.

In this case, when some information necessary to produce the receipt are missing, the server reads from D1 (orders file) where all the information that relate to the clients request are stored. The purpose of storing this information upon receiving it is to allow the company to use it in Function 2.

Level 2 DFD

Like in Level 1, the system in this case is made to process two functions.

Process Order for Function 1, where there is the reception of order and issuance of invoice and goods.

Process Payment for Function 2, where there is reception of payments and issuance of catalogue and receipts.

Diagrammatically, function boxes are expanded to contain every function. This displays the correctness of data flow from Level 1 to Level 2.

B&B Level 2 DFD Diagram

After receiving an order from the client, the company starts on the processing steps necessary to ensure that the client receives his goods. Several offices are responsible in ensuring that this is done right. The key things to note are the additional functioning features that allow successful transaction to take place. These are; the get order and the goods dispatch department that are separate but work as one within the company.

Once the three rules have been applied, the updated diagram for function one and two becomes:

Updated Diagrams, Level 2 DFD for Function 1 and Function2

Update Diagram for Function One

This diagram is used to illustrate how the whole transaction is conducted from the moment the client places an order to the moment the company delivers the invoice. The important thing to note are the function ability of the system to coordinate the various offices that are responsible in handling order processing with respect to the order made.

Update Diagram for Function Two

This diagram is used to illustrate how the whole transaction is conducted from the moment the client places an order to the moment the company delivers the receipt. In this, the system is able to coordinate all the responsible offices that are entrusted with the duty of payment processing.

Updated Diagram, Level 2 DFD for B&B

It is important to note that the above diagram shows how a complete Level 2 DFD Diagram looks like when Functions One and Two are merged to display the final diagram should look like. This diagram incorporates order processing steps to the moment the invoice is given to the client and the payment processing steps to the moment the receipt is given to the client. However, it should be noted that despite working separately for each function within the company, they all come up together to ensure that the invoice and the receipt are ready at their time of delivery.

Software Re-engineering

Software Re-engineering

Modern software engineering is mostly concerned with a paradigm of evolutionary systems .Re-Engineering offers an approach to have the evolvable systems rather than legacy systems. The process of reengineering may be applied as engineering principles to an existing system to meet the new requirements of that system .With the view of software reengineering we have discussed its different forms including reverse engineering , data restructuring , program restructuring and source code translation . The purpose of reengineering is to increase the efficiency and decrease the overhead.

After the half of 20th century, Software Industry has been grown up with tremendous high rate . Now a days softwares are used in almost every organizational activity . These systems should be maintained and evolved according to the new requirements and with the introduction of new hardware .For some systems it has been estimated that the eighty percent of total expenditures are consume just for evolving and maintenance . There is huge backlog of maintenance requests .So some organizations avoid to improve their system. Old systems that are still to be maintained are called “Legacy System”. The amount of code in legacy systems is immense. Most of these systems were developed before the use of standard software engineering techniques. Their structure and documentation may be out of date or non existing and may be there is no one to understand them . The risk in re-writing these systems is very high . Organizations do not want their legacy system obsolete .They may afford only its evolution only. “Software Engineering” is concerned with taking these legacy systems and re-implementing them to maintain them . The system may be re documented . It may be translated to a modern language , it may be implemented on distributed system rather than on mainframe and it may be implemented for different database management system. Here we define software re-engineering as “Reengineering is the systematic transformation of an existing system into a new form to realize quality improvements in operation , system capability , functionality , performance or evolvability at lower cast schedule or risk to the customer.” The technical difference between re-engineering and new software development is the stating point.

Re-engineering must be considered when an organization depends on that system and when the system is regularly maintained . It improves the system structure, creates new system documentation and make it easier to understand . The cost of reengineering depends on the extent of work. The main factors are give below:

(1) Quality Of Previous System: The lower the quality of the software and its documentation , higher the re-engineering cost.

(2) Data Conversion: If there is large amount f data to be converted then cost would be high significantly.

(3) Staff :If the staff is responsible for maintaining the system can not be involved in the re-engineering process , it will increase the cost.

There are following four forms of re-engineering:

It is the simplest form of re-engineering. Source code of one language is changed into the source code of an other language. The newly adopted language may be totally different from the old language .For example conversion of Pascal code into Java code or it may be the advanced version of the old language . For example using C++ instead of C. This translation is necessary due to the following reasons :

(1)Hardware Change: The organization using the system may change their available hardware. Sometimes older system is not compatible .

(2)Difficult To Understand and Use: When a language becomes out of date then there may be no staff to understand that language and hence it can not maintain it properly and there is need to translate it .

(3)Original Policy Changes: An organization may wish to standardize all the systems under its use to minimize cost factor . There is need to translate it .

In figure b the process of source code has been illustrated .There may be no need to understand the operation of the software in detail or to modify the system architecture. We can focus on programming language considerations such as the equivalence of program control constructs .

Source code translator is only economical if an automated translator is available does the most translation. “It may be the special program to convert one language to another language” .Complete automatic translation is impossible.

It is the transformation of representation of one format to another . Re-structuring is one of the techniques in reshaping data models ,design planes and requirements structure .Figure A shows that how a complex control logic makes a simple program difficult to understand . It is the algorithm of an air conditioner controller . While in figure B the same algorithm has been shown but with structure format .It can be read sequentially from top to bottom .

Program Re-structuring makes a program more readable and easy to understand . However program may suffer lack of modularity .Program modularization is usually carried out manually by inspecting and editing the code. However , experimental systems have been produced to provide some computer aided assistance for modularization. There are some drawbacks of program restructuring.

(1)Loss Of Comments: Comments are not the part of the re-structured program so these are lost .

(2)Loss Of Documentation: Likewise comments the documentation is also lost .

(3)Computational Demand: In re-structured programs complex algorithms are used and hence computational demand increases.

Drawbacks 1 and 2 are not main factors as the old comments and documentation are out dated.

Data re-engineering is the process of analyzing and recognizing the data structures in a system to make it more understandable. A system consists of consists of several different programs which use different file formats, these may all have to be modified as part of the data re-structuring process.

The objective of data re-engineering is often to convert the chaotic data management situation to a managed data environment. Data problems also arise because programs are now required to process much more data than was originally their developers. For example a funds management system of a finance company, was originally designed to handle up to 99 funds. The company was managing more than 200 funds and had to run 32 separate copies of the system. This was becoming increasingly expensive both in terms of human and computer resources. They therefore decided to re-engineer the system and its associated data. Some of the problems with data which can arise in legacy system made up of made up of several cooperating programs.

1)Data Mining Problems: Names may be cryptic and difficult to understand. Different names may be given to same logical entity in different programs in the system. The same name may be used in different programs to mean different things.

2)Field Length Problem: This is a problem when field length in records is explicitly assigned in the program. The same item may be assigned different length in different program. To solve this problem, other fields may be reused in some cases so that usage of a named data across the programs in a system is not inconsistent.

3)Record Organization Problem: Records representing the same entity may be organized differently in different programs. This is a problem in languages like COBOL where the physical organization of records is set by the programmers and is reflected in files. It is not a problem in languages like C++ where physical organization of the record is compiler’s responsibility.

4)Hard-coded Littorals: Literal values such as text weights are included directly in the programs rather than referenced using some symbolic names.

5)No Data Dictionary: There may be no data dictionary defining the names used, their representation and use.

Detailed analysis of the programs, which use the data, is essential before data re-engineering. This analysis should be aimed at discovering the function of identifier in the program, finding the literal values, which should be replaced with named constants. Following figure explains the process of data re-engineering assuming that the data definitions are modified, literal values named, data format recognized and the data values converted.

In the stage1 of this process, the data definition in the program is modified to improve understandability. The data itself is not effected by these modifications. The data re-engineering process may stop at this stage if the intention is simply to complete some program re-structuring process. If there are data value problems as discussed above, stage2 of the process may be entered.

If an organization decides to continue to stage2 of the process, it is then committed to stage3, data conversion. This is usually a very expensive process. Program has to be written with embedded knowledge of the old and the new organization. This processes the old data and output the converted information.

Reverse engineering is the process of analyzing the software with the objective of recovering its design and specification. The software source code will usually be available as the input to the reverse engineering process. Sometimes, source code is also not available, then executable code is the input for the process of reverse engineering.

Reverse engineering is emerging interest area with in software engineering. Software engineering itself is concerned with improving the productivity of the software development process and the quality of the system. As currently practiced, the majority of the software development effort is spent on maintaining the existing systems rather that developing new ones. The greatest part of the software maintenance process is devoted to understanding the system. This involves reading the documentation, scanning the source code and understanding the changes to be made. The implication is that if we want to improve the maintenance, we should facilitate the process comprehending the existing system. Reverse engineering provide a direct attack on the program comprehension problem.

The process of reverse engineering can be defined as “the process of analyzing a subject system to identify the system’s components and their inter relationships and create representation of the system in an other form or at higher level of abstraction.” The purpose of reverse engineering is to understand a software system in order to facilitate enhancement, corrections, documentation, redesign or programming in different language.

Following figure shows the process of reverse engineering. The process starts with an analysis phase. During this phase, the system is analyzed using automated tools to discover its structure then engineer work with the system source code and its structural model. They add information to this, which they have collected by understanding the system. All of this information is maintained in some information store, usually in the form of directed graph.

Information store may be available to compare the graph structure and the code. They may be used to add further information that inferred about the design. Documents of the various types may be generated from this information. These might include program and data structure diagrams and traceability matrices. Traceability matrices show where entities in the system are defined.

Reverse engineering generally involves extracting design and building abstraction that is less implementation dependent. Reverse engineering often involves an existing functional system as its subject, this not a requirement. You can perform reverse engineering starting from any level of abstraction or at any stage of life cycle. Reverse engineering in and of itself dose not involve changing the subject system or creating a new system based on a reverse engineered subject system. It is the process of examination, not the process of change.

Reverse engineering is a difficult process because it connects different domains. The following differences are of particular importance

1.The difference between a problem from some application domain and a solution in some programming language.

2.The gap between the concrete world of physical machines, computer programs and the abstract world of high level description.

3.The difference between the desired coherent, highly structured description of the system and the actual system whose structure may have disintegrated over time.

4.The difference between the hierarchical world of programs and the associated nature of human cognition.

5.The difference between the bottom up analysis of the source code and the top down synthesis of the application.

There are many sub areas of reverse engineering. Two important areas are

Re-documentation is creation of a semantically equivalent representation with in the same relative abstraction level. The resulting form of representation are usually considered alternate views intended for human audience.

Re-documentation is the simplest and the oldest form of reverse engineering, and many consider it to be not an intrusive, weak form of restructuring. Some common tools used to perform re-documentation are pretty printers (which display a code listing in an improved form), diagram generators (which create diagram directly from code). A key goal of these tools is to provide easier way to visualize relationships among program components so you can recognize flow paths clearly.

Design recovery is a subset of reverse engineering in which domain knowledge, external information and deduction are added to observation of the subject system to identify meaningful higher level abstractions beyond those obtained directly by examining the system itself.

Design recovery is distinguished by the sources and span of information it should handle. It recreates design abstraction from a combination of code, existing design documentation, personal experience and the general knowledge about problem and application domain. It must produce all of the information required for a person to fully understand what a program does, how it does it, and so far. Thus it deals with the far wider range of information than from unconventional software re-engineering representation.

The primary purpose of reverse engineering is to increase the comprehensibility of the system for both maintenance and new development. There are six key objectives that will guide its directions as the technology matures:

1.Cope with complexity We must develop methods to better deal with the shear volume and complexity of system. A key to controlling these attributes is automated support. Reverse engineering methods and tools, combine with CASE environment, will provide a way to extract relevant information so decision makers can control the purpose and the product in systems evolution.

2.Generate alternate views Graphical representation have long been accepted as comprehension aids. Reverse engineering tools facilitate the generation of graphical representation from other form. Reverse engineering can generate additional views from other perspectives (like control flow diagrams, E/R diagrams etc.) to aid the review and verification process.

3.Recover lost information A continuing evolution of large system leads to lost information about the system design. Modification are frequently not reflected till documentation, particularly at higher level then the code itself.

4.Detect side effect The initial design and successive modification can lead to side effects the system’s performance in subtle ways.

5.Synthesize higher abstraction Reverse engineering require method and techniques for creating alternate views that transcend to higher abstraction level.

6.Facilitate reuse A significant issue in the movement toward software reusability is the large body of existing software assets. Reverse engineering can help detect candidates for reusable software component from present system.

The cost of understanding software, while rarely seen as a direct cost, is nonetheless very real. It is manifested in the time required to comprehend software, which include the time lost to misunderstanding, By reducing time required to grasp the essence of software artifact in each life cycle phase, reverse engineering may greatly reduce the overall coast of software.

We have tried to provide a frame work for examining reengineering technologies by synthesizing the basic definitions of related terms and identifying objectives. Reengineering is rapidly becoming a recognize and important component of future CASE environments. Reengineering tools can provide a major link in the over all process of development and maintenance. Software reengineering, used with evolving software development technologies, will provide significant incremental enhancements to our productivity.

Bibliography:

1.Elliot J. Chlkofsy and James H. Cross. “Reverse engineering and design recovery” IEEE software volume 7 , Jan. 1990.

2.Spencer Rugaber “ Program comprehension for reverse engineering ” College of computing Georgia Institute of Technology Atlanta.

3.“Perspective on legacy system re-engineering ” Re-engineering center. Software engineering institute Carnegie Mellon university Pittsburgh.

4.Stephen B. Ornburn and Spencer Rugabur “ Reverse engineering : Resolving conflicts between expected and actual software design ” College of computing and software research center Georgia Institute of Technology Atlanta.

5.Ian Sommerville “Software Engineering” 5th edition (page 699-711).