Proposal 111
Proposal 111
Proposal 111
There is the huge difference between generic software product development and custom
software development. Let's categorize them in following parts:
Specification:
Generic software is designed and developed by development organization which is the stand-
alone system. It sold in the market to anyone. Another hand, custom software is
commissioned by the particular customer. Here users are more specific and made it according
to their need.
Control:
The major difference between the generic software product and custom software product is,
it has control of development organization in the generic software whereas, in custom
software, it has control of buying organization.
Needs:
In generic software, the developer can make changes any time but in custom software,
changes can make according to customer need. Here customer requirement can be fulfilled as
per their need but not possible for generic software.
Updates:
Again the major difference between both is updates. The generic software product is made
according to future updates and it's for a limited period. Whereas, custom software is made
according to time, budget and needs. So anytime you can update it.
Last words:
There is a big difference between both! For choosing software product whether it is custom
or generic it depends on the choice of the customer.
Generic Software: These software are the software developed by the product based company,
who developed the software for any specific task OR industry.
User can purchase these software from the company and use as per the teṛms and conditions
provided by the companies.
You can not make change in these types of software, you need to use the software developed
by the company only. You are bound to use only the functionality which are provided in the
software.
In certain cases if you need some customization then you are supposed to pay a heavy amount
of money .
Customized Software: These are the software developed by the service based company. It is
delivered by the company as per your requirements, which you provided before starting of
the project.
You can ad and delete functionality in the custom software as per your requirement.Full
support is provided by the Custom Software Development Company to you after delivering
the product also.
Customized software proved to be very useful for you in comparison to generic software, a sit
provides functionalities as per your business requirements. It is easy to learn that software
because it belongs to your business specifically
Reference:
Dr Andrea Capiluppi. 2008. lecture 01- Characteristics of Software. [Online] University of
Lincoln blackboard site. Available at:
http://blackboard.lincoln.ac.uk/webapps/blackboard/content/listContent.jsp?
mode=reset&course_id=_25772_1&content_id=_141234_1#_209998_1
[Accessed 3rd October 2008].
PO ST E D BY L CSD G RP1 AT 06:25
1. What are the most important differences between generic software product development
and custom software development? What might this mean in practice for users of generic
software products?
The essential difference is that in generic software product development, the
specification is owned by the product developer. For custom product development,
the specification is owned and controlled by the customer. The implications of this are
significant – the developer can quickly decide to change the specification in response
to some external change (e.g. a competing product) but, when the customer owns the
specification, changes have to be negotiated between the customer and the developer
and may have contractual implications.
For users of generic products, this means they have no control over the software
specification so cannot control the evolution of the product. The developer may
decide to include/exclude features and change the user interface. This could have
implications for the user’s business processes and add extra training costs when new
versions of the system are installed. It also may limit the customer’s flexibility to
change their own business processes.
important attributes are maintainability, dependability, performance and
usability. Other attributes that may be significant could be reusability (can it be
reused in other applications), distributability (can it be distributed over a
network of processors), portability (can it operate on multiple platforms) and
inter-operability (can it work with a wide range of other software systems).
Decompositions of the 4 key attributes e.g. dependability decomposes to
security, safety, availability, etc.
CSCI362
Thursday, August 21, 2014
1.3
What are the four important attributes that all professional software should have? Suggest four other attributes
that may sometimes be significant.
There are four attributes that all professional software should have:
Unmaintainable software is difficult to change to meet new demands. Software should be able to easily evolve,
as change is inevitable in a growing business. It would be very inefficient if software engineers had to rewrite
the software from the ground up again every time they needed to make a change. Making software maintainable
would include having a well organized framework, good documentation, clean code, ect. Even when changes
are made, these changes must follow this maintainability rule.
Software should ideally not have many bugs. In the event of failure, software should not cause any damages. In
addition, software must be secure. It would be unfortunate if an online banking website had a security flaw that
allowed outsiders to access a users account. That would not be good software. In the event a bug or security
flaw is discovered, it should be fixed immediately, and users should be notified of any major flaws.
Software should only use as many system resources as it needs. Wasteful use of system resources can slow
processes down and decrease responsiveness. healthcare.gov is a good example of software that was inefficient.
This is especially necessary when software is running on a network. Good software should be able to handle
many concurrent processes and connections efficiently. It should be able to handle large loads of data if need be.
This means software should be up to date with modern conventions and standards. This can help keep software
more secure by adopting up to date security protocols.
Software must not be used for amoral actions or intentions. This includes many debated topics such as privacy,
the right to be forgotten, and file sharing. Software should follow a code of ethics.
This doesn’t mean using open source projects in software is forbidden, but what is created should be an original
work and idea. It should be able to separate itself in some way from what has already been created.
1.8
Discuss whether professional engineers should be certified in the same way as doctors or lawyers.
I personally don’t think software engineers should be certified in the same way as doctors and lawyers. That
could mean many more years of schooling for me. I do think that software engineers should have an
understanding of ethics. Software engineers can potentially have as much responsibility as a lawyer or doctor
when designing software. In the same way a surgeon may make a mistake, if medical software fails, it could
cause a death. There is something to say about software engineers needing higher certification, especially in the
case where an engineer is working on a potentially lethal system.
1.9
For each of the clauses in the ACM/IEEE Code of Ethics shown in Figure 1.3, suggest an appropriate example
that illustrates that clause.
1. A software engineer should not create software that steals private information.
2. Testing the software to make sure it is void of any bugs and security flaws, which creates a better product for
the client, increases the reputation of the employer, and is in the best interest of the public by being a reliable
piece of software.
3. Same as example 2. Software should be tested to meet usability, efficiency, security standards, ect.
4. I see someone stealing company trade secrets, I report it. Even if it is my friend who is stealing.
5. If a problem is found in a released piece of software, the software manager should report that problem to the
users of that software.
6. I should pass on to others what I have learned so they know how to act as a professional.
7. If a colleague has a question I know the answer to, I should give him an honest answer and help him with his
problem.
8. A friend suggest I go to a workshop for some new technology, I go to learn something new.
1.10
To help counter terrorism, many countries are planning or have developed computer systems that track large
numbers of their citizens and their actions. Clearly this has privacy implications. Discuss the ethics of working
on the development of this type of system.
These systems are likely agains the public interest. They are unethical because they use people as a means to an
end and survey them without their consent. To work on this system is unethical in the ACM/IEEE Code of
Ethics because a person working on this is going against the public interest. However, a person working on this
software also has an obligation to his employer to create a good reliable piece of software. This is also helping
stop terrorism, so there is a benefit to this software. A software engineer should refuse to participate given the
ethical implications of this software. He would not be doing anything wrong to his employer unless they had a
contract, and he would be serving public interest by not working on these systems.