Software Engineering

Tuesday, 26 July 2011

Software Engineering Ethics In A Digital World

Software Engineering Ethics In A Digital World

The Dual-Use Dilemma
A situation where the technology poses advantage and disadvantage at the same time.

Example :
Google Maps
  • Allows people to know the routes and places better
  • Invasion of privacy and aids thefts

File Sharing (Public Network)
  • People can stream for free
  • Mostly don’t have copyrights
Facebook (Social Network)
  • Can keep in touch with peers for free
  • Results in poor grades for most students and aids terrorist

Ethics
A system of morale principles in respect to a particular class of human actions

Example :
  • Porn, Gambling, Violent Games, Software that conflicts with privacy terrorist
  • Views about Ethics Requirement
  • Users    --- > Privacy Invasion
  • Service --- > Providers System Failure
  • Regulatory --- > Bodies Copyrights Issues

Conclusion
Ethics and software engineering should be implemented together if possible to overcome common problems faced with better design, better testing, some legislation and also by educational user.

Task 4 - FSE Group Discussion based on Software Engineering Myths

Our group has finished the discussions on all myths since we have go through many articles on all 3 myths and we found Practitioner Myth is most serious misleading among all.

What is Software Engineering Myths ?
Software Engineering myths are misleading attitudes that have caused serious problems for managers and practitioners and this erroneous beliefs about software and the process that is used to build it.

#1 What is Management Myth ?
One thing you can say about philosophers, however, is that they have nothing to work with but ideas, so they become very good at detecting flaws in arguments. Credit to Bruce Eckel.

What is the myth ?
Myth : We already have a book that’s full of standards and procedures for building software. Won’t that provide my people with everything they need to know?

Reality : The book of standards may exist, but is it used? Are practitioners’ aware of its existence? Does it reflect modern SE practices? Is it complete? Is it adaptable?

What we found throughout discussion is ?
Management is something can be done even lack of educations. Because management is a attitude or an idea in our views. An experienced management people is the one who process his own life experience and it is not taught in any lessons. He might can find out what we have missed in school time and give us a clearer path to do things / job better. This is management all about.


#2 What is Customer Myth ? And what is the myth ?
Myth : Software requirements continually change, but change can be easily accommodated because software is flexible.

Reality : The impact of change varies with the time at which it is introduced. The cost of impact of changes in early stage of software project is relative small. However, changes introduced at a later development stage may requires a lot of resources and major design modification.

What we found throughout discussion is ?
In bussiness world , we knew that "The Customer is Always Right". Isn't that what we have been told? If we are in business, we know how preposterous that statement is. The truth is customer isn't always right, the customer is often wrong. Worse yet, we know it, he knows it, and he knows we know it. Even though , we still have to done our job by using our method but make it seems to be customer's way of doing things. Arguement won't lead us to successful software develop but compromise did lead us to a successful end product by finding out best method.


#3 What is Practitioner's Myth ?
Myths that are still believed by software practitioners have been fostered by over 50 years of programming culture. During the early days of software, programming was viewed as an art form. Old ways and attitudes die hard.

So what is the myth about?
Myth : Once we write the program and get it to work, our job is done.

Reality: Someone once said that the sooner you begin writing code, the longer it’ll take you to get done. ( Industry data indicate that between 60 and 80 percent of all effort expended on software will be expended after it is delivered to the customer for the first time. )

What we found throughout discussion is ?
In fact , through all the research we did. Practitioner is the one who practices something, especially an occupation, profession, or technique based on dictionary.com. But in computing practitioner is person who type codes or we called programmers. For most programmer , they will test the software usability through some testing and edit. When they found no errors the software considered done. But the fact is it doesn't done yet sometimes. Errors might not be there as programmer can't act like a normal user who going to use the software everyday. Software may meet failure when it meets certain unsolved and inconsistent functions inserted. Maintenances are always important for programmer to keep a software running smooth with minimum errors.

Task 3 - FSE Job title

Table 1

Table 2



Above is the table of Software Engineering related job advertised by the jobstreet.com on 24 to 26rd of July 2011, Jobs related to Software Engineering that is needed by companies in Malaysia. Software developer and system analyst job title are really in good demand at the market. The major job description provided by software developer mainly in needed programming skills and designing skill. They need to have advance knowledge in C/C++, JAVA or equivalent Object Oriented Programming language to become a software developer. The minimum requirement for this job title will be a degree or diploma advance in computer science or related fields. As for system analyst, they need to be capable in analyzing the software, maintain, and the development lifecycles. In addition, they need to have knowledge on SQL, relational databases and related programming tools. The minimum qualification is a degree or advance diploma certificate with a minimum CGPA of 3.0 and above.

Conclusion
As i can conclude, the seats for graduated students to actually get the job above are width. Gradates need to have a good leadership and spiritual for a better place in the workplace. Moreover, graduates need to have excellent programming skills and those related programming tools in order to work in these fields. Lastly, experience in the most important in workplace in order us to have a better understanding about these job titles.

FSE Module 10 - Advanced Topics in Software Engineering

CSEB233 Fundamental of SE , Module 10 Advanced Topics in Software Engineering.


  
What is Software Process Improvement (SPI)?
A useful way to strategy for improvement and effective process to be defined in a effective manner.

SPI Framework
A mature way for organization’s software process and provides a qualitative indication of a maturity level.
  • set of characteristics
  • method for assessing
  • mechanism for summarizing the results
  • strategy for assisting

Maturity Model
Is done within the context of SPI framework and an indication of the quality process.

Other SPI Framework
  • SPICE
  • Bootstrap
  • PSP and TSP
  • TickIT


Soft Trends in SE area
  • Connectivity and collaboration - enabled by high bandwidth communication
  • Globalization - leads to a diverse workforce
  • An aging population - many professional software designers retire and their knowledge are taken with them
  • Consumer spending in emerging economies - many consumers spend a lot in software-based or software-driven.

Trends in SE
  • Managing complexity - can handle more complex projects
  • Open world software - software that is designed to adapt to a continually changing environment
  • Emergent requirement - As systems become more complex, requirements will emerge as developers learns more about it also the users.
  • Software building blocks - software engineering tries to build software's from past knowledge while nowadays to be build from the beginning.
  • Open source - software engineering work products are open to the public and can be reviewed and extended.
  • Process trends - focus on goal orientation and product innovation.

Software Engineering Ethics
  • Public
  • Client and Employer
  • Product
  • Judgment
  • Management
  • Profession
  • Colleagues
  • Self

Software Engineering Ethics On A Personal Level
Never:
  • steal data
  • distribute or sell proprietary information obtained as part of your work on a software project
  • remove or change other people data
  • violate other people's privacy
  • hack other people's system for personal gain
  • use computing technology to facilitate discrimination or harassment

Suggestions
In this module we think that topic about CMMI should not be included in this chapter as it has very low explanations and students are not going to implement it yet.

This module is about the Software Process Improvement (SPI) which can be implemented in Software Engineering (SE) also the trends of SE, we believe that this module will be easy to remember if the students can understand what it is about rather than memorizing the whole chapter.


Pavithran
IS086067

FSE Module 9 - Software Project Management

CSEB233 Fundamental of SE ,  Module 9 Software Project Management.
 
Building computer software is complex, particularly if it involves many people working over a relatively long time.

 
Effective software project management focuses on the four P’s:
  • People — the most important element of a successful project
  • Product — the software to be built
  • Process — the set of framework activities and software engineering tasks to get the job done
  • Project — all work required to make the product a reality

People-CMM maturity model defines key practice areas like staffing, communication and coordination, work environment, training, career development, team/ culture development and others.

By definition, stakeholders are those who are impacted by (or have an impact on) the project.

Example:
  • Senior managers who define the business issues that often have significant influence on the project.
  • Project (technical) managers who must plan, motivate, organize, and control the practitioners who do software work.
  • Practitioners who deliver the technical skills that are necessary to engineer a product or application.
  • Customers who specify the requirements for the software to be engineered and other stakeholders who have a peripheral interest in the outcome.
  • End-users who interact with the software once it is released for production use.
The MOI Model of leadership:
  • Motivation - the ability to encourage (by “push or pull”) technical people to produce to their best ability.
  • Organization - the ability to mold existing processes (or invent new ones) that will enable the initial concept to be translated into a final product.
  • Ideas or innovation - he ability to encourage people to create and feel creative even when they must work within bounds established for a particular software product or application.

Efective project manager
  • Problem solving - can diagnose relevant technical and organizational issues, systematically structure a solution or motivate others to develop the solution, apply lesson learns from past projects to new situation and many others.
  • Managerial identity – a good manager must take charge of the project.
  • Achievement – reward initiative and accomplishment to optimize the team productivity.
  • Influence and team building – able to ‘read’ people, understand verbal and nonverbal signal and react to the needs of the people sending the signals.

Factors when selecting a software project team structure:
  • the difficulty of the problem to be solved
  • the size of the resultant program(s) in lines of code or function points
  • the degree to which the problem can be modularized
  • the rigidity of the delivery date

Software projects get into trouble because of reasons such as:
  • Scale- the scale of many development efforts is large, leading to complexity, confusion, and significant difficulties in coordinating team members.
  • Uncertainty- resulting in a continuing stream of changes

Factors that you need to look at when choosing the process model:
  • The customers who have requested the product and the people who will do the work
  • The characteristics of the product itself
  • The project environment in which the software team works

How does a manager act to avoid problems discussed before?
  • Track progress
  • Make smart decisions.
  • Conduct a postmortem analysis.

 
Critical Practices
  • Defect tracking.
  • Earned value tracking
  • People aware management

 
Topic that should not be included :
Basically, under the four P’s of effective project management, process and project is not important as we are had gone through these topics before in the previous chapters.

 
Suggestion:
Do mind-mapped for this particular chapter because we need to remember a lot of key points. By doing that, I think we can remember those key words more efficiently.

 

Ee Eu Gin
IS085696

Saturday, 23 July 2011

FSE Module 8 - Software Evolution

CSEB233 Fundamental of SE , Module 8 Software Evolution

Software Maintenance and Support
  • Correcting defects
  • Adapting application to a changing business environment
  • Implementing enhancement at the request of stakeholders.
  • Supporting users as they integrate an application into their personal and business workflow.

What is Maintainable Software ?
  • Maintainable software exhibits effective modularity
  • It makes use of design patterns that allow ease of understanding.
  • It has been constructed using well-defined coding standards and conventions, leading to source code that is self-documenting and understandable.
  • It has undergone a variety of quality assurance techniques that have uncovered potential maintenance problems before the software is released.
  • It has been created by software engineers who recognize that they may not be around when changes must be made.

Supportability of Software
The software should contain facilities to assist support personnel when a defect is encountered in the operational environment.

Reengineering
To support new business rules, existing software may be modified or rebuilt.








Business Process Reengineering
Business Process Reengineering is the fundamental rethinking and radical redesign of business processes to achieve dramatic improvements in critical contemporary measures of performance, such as cost, quality, service, and speed, according to Hammer and Champy.
Model of BPR

The general software reengineering principles are ?
  • Inspect the product
  • Inspect the structure of the product, rebuild if it is weak, remodel if it is structurally sound
  • Understand how well the original was built before you rebuild
  • If you begin rebuild, use only the best methods, tools, resources etc
  • Be disciplined about it – use practices that will result in high quality


Software Reengineering Process Model

Inventory Analysis
Analyze and prioritize to select candidates for reengineering.

Document Restructuring
Weak documentation is the trademark of many legacy systems.

Reverse Engineering
Recreate design and specification information from the source code.

Code Structuring
Violations of structured programming constructs are noted and code is then restructured.

Data Structuring
Data architecture has a strong influence on program architecture and the algorithms that populate it, changes to the data will invariably result in either architectural or code-level changes.

Forward Engineering
Forward engineering process applies software engineering principles, concepts, and methods to re-create an existing application.

Lehman’s Law of Software Evolution shouldn't be input in module 8 as the series of laws are not match with our topic about maintenance of software. This is because the law is not applicable in real case where student only have to know software supportability.

The good methods to study this module will be categorized the topic into maintenance and software elements which topics that we can memorize and the second part will be ways and criterias of reengineering software.

Teh Kok Harng
IS085779

FSE Module 7 - Software Quality Management

CSEB233 Fundamental of SE , Module 7  Software Quality Management.

What is Software Quality Management?
Adopting few management principles to guide the organization in improving the software.

What is Quality? What is Software Quality?
– Quality of design encompasses requirements, specifications, and the design of the system.
– Quality of conformance is an issue focused primarily on implementation.
– User satisfaction = compliant product + good quality + delivery within budget and schedule.

What is Software Quality?
An effective software process applied in a manner that creates a useful product that provides measurable value for those who produce it and those who use it.

Quality Dimensions and Factors
– Effective
– Usability
– Maintainability
– Reliability

Software Dilemmas
Software with no quality, software takes a long time to complete and so expensive and software with good quality but too far from perfectionism are types software dilemmas.


Achieving Software Quality. Role of the SQA Group
– Quality Assurance (QA)
– Quality Control (QC)
– Software engineering method
– Project management technique

Role of the SQA Group
i. Prepares an SQA plan for a project.
ii. Participates in the development of the project’s software process description.
iii. Reviews software engineering activities to verify compliance with the defined software process.
iv. Audits designated software work products to verify compliance with those defined as part of the software process.
v. Ensures that deviations in software work and work products are documented and handled according to a documented procedure.
vi. Records any noncompliance and reports to senior management.

SQA Goals
– Requirements quality
– Design quality
– Code quality
– Quality control effectiveness

Six-Sigma for Software Engineering
Has 3 core Steps.
i. Define
ii. Measure
iii. Analyze

If improvement is required then another 2 extra steps are followed.
i. Improve
ii. Control

The best method to study this chapter is by remembering the key words which relates this chapter, the lecture can ask in the class what is the definition of the key words by giving them extra credit for those who manage to answer it correctly since there are a lot of key words in this chapter to remember.


Pavithran
IS086067